diff --git a/src/pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html b/src/pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html
index 4cac2107c6..45d22fde27 100644
--- a/src/pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html
+++ b/src/pretix/plugins/sendmail/templates/pretixplugins/sendmail/rule_list.html
@@ -80,6 +80,7 @@
+
|
diff --git a/src/pretix/plugins/sendmail/views.py b/src/pretix/plugins/sendmail/views.py
index 471cbf8261..30d570ef93 100644
--- a/src/pretix/plugins/sendmail/views.py
+++ b/src/pretix/plugins/sendmail/views.py
@@ -62,6 +62,7 @@ from pretix.plugins.sendmail.tasks import (
)
from ...helpers.format import format_map
+from ...helpers.models import modelcopy
from . import forms
from .models import Rule, ScheduledMail
@@ -573,9 +574,23 @@ class CreateRule(EventPermissionRequiredMixin, CreateView):
model = Rule
+ @cached_property
+ def copy_from(self):
+ if self.request.GET.get("copy_from") and not getattr(self, 'object', None):
+ try:
+ return Rule.objects.get(pk=self.request.GET.get("copy_from"), event=self.request.event)
+ except Rule.DoesNotExist:
+ pass
+
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs['event'] = self.request.event
+
+ if self.copy_from:
+ i = modelcopy(self.copy_from)
+ i.pk = None
+ i.redeemed = 0
+ kwargs["instance"] = i
return kwargs
def form_invalid(self, form):