diff --git a/src/pretix/presale/templates/pretixpresale/event/seatingplan.html b/src/pretix/presale/templates/pretixpresale/event/seatingplan.html index e956786323..73970dc0d4 100644 --- a/src/pretix/presale/templates/pretixpresale/event/seatingplan.html +++ b/src/pretix/presale/templates/pretixpresale/event/seatingplan.html @@ -26,9 +26,9 @@ {% csrf_token %} {% if event.has_subevents %} - {% eventsignal event "pretix.presale.signals.render_seating_plan" request=request subevent=subevent %} + {% eventsignal event "pretix.presale.signals.render_seating_plan" request=request subevent=subevent voucher=voucher %} {% else %} - {% eventsignal event "pretix.presale.signals.render_seating_plan" request=request %} + {% eventsignal event "pretix.presale.signals.render_seating_plan" request=request voucher=voucher %} {% endif %} {% include "pretixpresale/fragment_modals.html" %} diff --git a/src/pretix/presale/views/event.py b/src/pretix/presale/views/event.py index 462cc5a51e..08577ae653 100644 --- a/src/pretix/presale/views/event.py +++ b/src/pretix/presale/views/event.py @@ -700,6 +700,22 @@ class SeatingPlanView(EventViewMixin, TemplateView): kwargs={'cart_namespace': kwargs.get('cart_namespace') or ''}) if context['cart_redirect'].startswith('https:'): context['cart_redirect'] = '/' + context['cart_redirect'].split('/', 3)[3] + + v = self.request.GET.get('voucher') + if v: + v = v.strip() + try: + voucher = self.request.event.vouchers.get(code__iexact=v) + if voucher.redeemed >= voucher.max_usages or voucher.valid_until is not None \ + and voucher.valid_until < now() or voucher.item is not None \ + and voucher.item.is_available() is False: + voucher = None + except Voucher.DoesNotExist: + voucher = None + else: + voucher = None + context['voucher'] = voucher + return context