diff --git a/src/pretix/control/templates/pretixcontrol/vouchers/index.html b/src/pretix/control/templates/pretixcontrol/vouchers/index.html
index 9d5e82040..3488c4ce7 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 925082a33..3743465f1 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