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},
)
)
)