From 479a7d91620e72832cd8b7b7edb5a8f374e5e812 Mon Sep 17 00:00:00 2001 From: Mason Mohkami Date: Thu, 31 May 2018 03:43:32 -0700 Subject: [PATCH] Fix #357 -- Implement go to for vouchers (#849) * Add Go input for vouchers on the vouchers list page (#357) * Final fixes --- .../pretixcontrol/vouchers/index.html | 25 +++++++++++++------ src/pretix/control/urls.py | 1 + src/pretix/control/views/vouchers.py | 18 +++++++++++++ 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/src/pretix/control/templates/pretixcontrol/vouchers/index.html b/src/pretix/control/templates/pretixcontrol/vouchers/index.html index 6a13ba8cdb..2f7f1e1fce 100644 --- a/src/pretix/control/templates/pretixcontrol/vouchers/index.html +++ b/src/pretix/control/templates/pretixcontrol/vouchers/index.html @@ -11,32 +11,41 @@ {% endblocktrans %}
[0-9A-Z]+)/transition$', orders.OrderTransition.as_view(), name='event.order.transition'), diff --git a/src/pretix/control/views/vouchers.py b/src/pretix/control/views/vouchers.py index 9f8f5e30e0..75404aa82a 100644 --- a/src/pretix/control/views/vouchers.py +++ b/src/pretix/control/views/vouchers.py @@ -10,6 +10,7 @@ from django.http import ( Http404, HttpResponse, HttpResponseBadRequest, HttpResponseRedirect, JsonResponse, ) +from django.shortcuts import redirect from django.utils.functional import cached_property from django.utils.translation import ugettext_lazy as _ from django.views.generic import ( @@ -225,6 +226,23 @@ class VoucherCreate(EventPermissionRequiredMixin, CreateView): return super().post(request, *args, **kwargs) +class VoucherGo(EventPermissionRequiredMixin, View): + permission = 'can_view_vouchers' + + def get_voucher(self, code): + return Voucher.objects.get(code__iexact=code, event=self.request.event) + + def get(self, request, *args, **kwargs): + code = request.GET.get("code", "").strip() + try: + voucher = self.get_voucher(code) + return redirect('control:event.voucher', event=request.event.slug, organizer=request.event.organizer.slug, + voucher=voucher.id) + except Voucher.DoesNotExist: + messages.error(request, _('There is no voucher with the given voucher code.')) + return redirect('control:event.vouchers', event=request.event.slug, organizer=request.event.organizer.slug) + + class VoucherBulkCreate(EventPermissionRequiredMixin, CreateView): model = Voucher template_name = 'pretixcontrol/vouchers/bulk.html'