From 2c6125adebd80b8355ee34b4b75f6c621d8f8303 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 19 Sep 2019 16:33:59 +0200 Subject: [PATCH] Allow to copy vouchers --- .../templates/pretixcontrol/vouchers/index.html | 4 ++++ src/pretix/control/views/vouchers.py | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/pretix/control/templates/pretixcontrol/vouchers/index.html b/src/pretix/control/templates/pretixcontrol/vouchers/index.html index 9d5e820407..3488c4ce79 100644 --- a/src/pretix/control/templates/pretixcontrol/vouchers/index.html +++ b/src/pretix/control/templates/pretixcontrol/vouchers/index.html @@ -138,6 +138,10 @@ {{ v.subevent.name }} – {{ v.subevent.get_date_range_display }} {% endif %} + + + diff --git a/src/pretix/control/views/vouchers.py b/src/pretix/control/views/vouchers.py index 925082a335..3743465f1e 100644 --- a/src/pretix/control/views/vouchers.py +++ b/src/pretix/control/views/vouchers.py @@ -24,6 +24,7 @@ from pretix.control.forms.vouchers import VoucherBulkForm, VoucherForm from pretix.control.permissions import EventPermissionRequiredMixin from pretix.control.signals import voucher_form_class from pretix.control.views import PaginationMixin +from pretix.helpers.models import modelcopy class VoucherList(PaginationMixin, EventPermissionRequiredMixin, ListView): @@ -279,9 +280,23 @@ class VoucherBulkCreate(EventPermissionRequiredMixin, CreateView): 'event': self.request.event.slug, }) + @cached_property + def copy_from(self): + if self.request.GET.get("copy_from") and not getattr(self, 'object', None): + try: + return self.request.event.vouchers.get(pk=self.request.GET.get("copy_from")) + except Voucher.DoesNotExist: + pass + def get_form_kwargs(self): kwargs = super().get_form_kwargs() - kwargs['instance'] = Voucher(event=self.request.event) + + if self.copy_from: + i = modelcopy(self.copy_from) + i.pk = None + kwargs['instance'] = i + else: + kwargs['instance'] = Voucher(event=self.request.event) return kwargs @transaction.atomic