mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
Badges, PDF tickets: Allow to copy layouts
This commit is contained in:
@@ -65,6 +65,8 @@
|
||||
<td class="text-right flip">
|
||||
{% if "can_change_event_settings" in request.eventpermset %}
|
||||
<a href="{% url "plugins:ticketoutputpdf:edit" organizer=request.event.organizer.slug event=request.event.slug layout=l.id %}" class="btn btn-default btn-sm"><i class="fa fa-edit"></i></a>
|
||||
<a href="{% url "plugins:ticketoutputpdf:add" organizer=request.event.organizer.slug event=request.event.slug %}?copy_from={{ l.id }}"
|
||||
class="btn btn-default btn-sm" title="{% trans "Clone" %}" data-toggle="tooltip"><i class="fa fa-copy"></i></a>
|
||||
<a href="{% url "plugins:ticketoutputpdf:delete" organizer=request.event.organizer.slug event=request.event.slug layout=l.id %}" class="btn btn-danger btn-sm"><i class="fa fa-trash"></i></a>
|
||||
{% endif %}
|
||||
</td>
|
||||
|
||||
@@ -23,6 +23,7 @@ from pretix.base.pdf import Renderer
|
||||
from pretix.base.services.tickets import invalidate_cache
|
||||
from pretix.control.permissions import EventPermissionRequiredMixin
|
||||
from pretix.control.views.pdf import BaseEditorView
|
||||
from pretix.helpers.models import modelcopy
|
||||
from pretix.plugins.ticketoutputpdf.forms import TicketLayoutForm
|
||||
from pretix.plugins.ticketoutputpdf.ticketoutput import PdfTicketOutput
|
||||
|
||||
@@ -91,6 +92,8 @@ class LayoutCreate(EventPermissionRequiredMixin, CreateView):
|
||||
form.instance.default = True
|
||||
messages.success(self.request, _('The new ticket 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.ticketoutputpdf.layout.added', user=self.request.user,
|
||||
data=dict(form.cleaned_data))
|
||||
return redirect(reverse('plugins:ticketoutputpdf:edit', kwargs={
|
||||
@@ -106,6 +109,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.ticket_layouts.get(pk=self.request.GET.get("copy_from"))
|
||||
except TicketLayout.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 = TicketLayout
|
||||
|
||||
Reference in New Issue
Block a user