mirror of
https://github.com/pretix/pretix.git
synced 2026-05-07 15:34:02 +00:00
Badges, PDF tickets: Allow to copy layouts
This commit is contained in:
@@ -24,6 +24,7 @@ from pretix.base.pdf import Renderer
|
||||
from pretix.base.views.tasks import AsyncAction
|
||||
from pretix.control.permissions import EventPermissionRequiredMixin
|
||||
from pretix.control.views.pdf import BaseEditorView
|
||||
from pretix.helpers.models import modelcopy
|
||||
from pretix.plugins.badges.forms import BadgeLayoutForm
|
||||
from pretix.plugins.badges.tasks import badges_create_pdf
|
||||
|
||||
@@ -55,6 +56,8 @@ class LayoutCreate(EventPermissionRequiredMixin, CreateView):
|
||||
form.instance.default = True
|
||||
messages.success(self.request, _('The new badge layout has been created.'))
|
||||
super().form_valid(form)
|
||||
if form.instance.background and form.instance.background.name:
|
||||
form.instance.background.save('background.pdf', form.instance.background)
|
||||
form.instance.log_action('pretix.plugins.badges.layout.added', user=self.request.user,
|
||||
data=dict(form.cleaned_data))
|
||||
return redirect(reverse('plugins:badges:edit', kwargs={
|
||||
@@ -70,6 +73,24 @@ class LayoutCreate(EventPermissionRequiredMixin, CreateView):
|
||||
def get_context_data(self, **kwargs):
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
@cached_property
|
||||
def copy_from(self):
|
||||
if self.request.GET.get("copy_from") and not getattr(self, 'object', None):
|
||||
try:
|
||||
return self.request.event.badge_layouts.get(pk=self.request.GET.get("copy_from"))
|
||||
except BadgeLayout.DoesNotExist:
|
||||
pass
|
||||
|
||||
def get_form_kwargs(self):
|
||||
kwargs = super().get_form_kwargs()
|
||||
|
||||
if self.copy_from:
|
||||
i = modelcopy(self.copy_from)
|
||||
i.pk = None
|
||||
kwargs['instance'] = i
|
||||
kwargs.setdefault('initial', {})
|
||||
return kwargs
|
||||
|
||||
|
||||
class LayoutSetDefault(EventPermissionRequiredMixin, DetailView):
|
||||
model = BadgeLayout
|
||||
|
||||
Reference in New Issue
Block a user