diff --git a/registrasion/templatetags/registrasion_tags.py b/registrasion/templatetags/registrasion_tags.py index 02cda54efed7e32fcbdd2d2c515963ab61cc70ac..623159198cd0726905e37a12ab7dda84b72f733f 100644 --- a/registrasion/templatetags/registrasion_tags.py +++ b/registrasion/templatetags/registrasion_tags.py @@ -95,6 +95,17 @@ def items_purchased(context, category=None): ) +@register.assignment_tag(takes_context=True) +def total_items_purchased(context, category=None): + ''' Returns the number of items purchased for this user (sum of quantities). + + The user will be either `context.user`, and `context.request.user` if + the former is not defined. + ''' + + return sum(i.quantity for i in items_purchased(context, category)) + + @register.assignment_tag(takes_context=True) def report_as_csv(context, section): diff --git a/registrasion/urls.py b/registrasion/urls.py index 8f2e16632e6f78d2e5c50fb651fec50ada87229c..322ee62c94c22db61826d44e265eba1dd34e4d71 100644 --- a/registrasion/urls.py +++ b/registrasion/urls.py @@ -5,6 +5,7 @@ from django.conf.urls import url from .views import ( amend_registration, + badge, checkout, credit_note, edit_profile, @@ -22,6 +23,7 @@ from .views import ( public = [ url(r"^amend/([0-9]+)$", amend_registration, name="amend_registration"), + url(r"^badge/([0-9]+)$", badge, name="badge"), url(r"^category/([0-9]+)$", product_category, name="product_category"), url(r"^checkout$", checkout, name="checkout"), url(r"^checkout/([0-9]+)$", checkout, name="checkout"), diff --git a/registrasion/views.py b/registrasion/views.py index 24e5ebf1e7a3ea4b24d682d3c142083b99697c87..83e5ed9782d6915c1deb57a8f6780d91247edb1b 100644 --- a/registrasion/views.py +++ b/registrasion/views.py @@ -968,3 +968,21 @@ def invoice_mailout(request): } return render(request, "registrasion/invoice_mailout.html", data) + + +@user_passes_test(_staff_only) +def badge(request, user_id): + ''' Renders a single user's badge (SVG). ''' + + user_id = int(user_id) + + data = { + "user": User.objects.get(pk=user_id), + } + + print User.objects.get(pk=user_id) + + response = render(request, "registrasion/badge.svg", data) + response["Content-Type"] = "image/svg+xml" + response["Content-Disposition"] = 'inline; filename="badge.svg"' + return response