from django import template from django.urls import reverse from django.utils.safestring import mark_safe register = template.Library() @register.simple_tag(takes_context=True) def feedbackbutton(context): """ A templatetag to show a suitable button for EventFeedback """ if context.request.user.is_anonymous: return None event = context["event"] if event.proposal and event.proposal.user == context.request.user: # current user is the event owner, show a link to EventFeedbackList return mark_safe( " Read Feedback (%s)" % ( reverse( "program:eventfeedback_list", kwargs={"camp_slug": event.camp.slug, "event_slug": event.slug}, ), event.feedbacks.filter(approved=True).count(), ) ) # FIXME: for some reason this triggers a lookup even though all feedbacks have been prefetched.. elif event.feedbacks.filter(user=context.request.user).exists(): # this user already submitted feedback for this event, show a link to DetailView return mark_safe( " Change Feedback" % ( reverse( "program:eventfeedback_detail", kwargs={"camp_slug": event.camp.slug, "event_slug": event.slug}, ) ) ) else: # this user has not submitted feedback yet, show a link to CreateView return mark_safe( " Add Feedback" % ( reverse( "program:eventfeedback_create", kwargs={"camp_slug": event.camp.slug, "event_slug": event.slug}, ) ) )