From 39061b659a23dceb5197623450af3cc1695e03a7 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 26 Sep 2017 13:05:51 +0200 Subject: [PATCH] PDF Editor: More extensible implementation --- .../pretixplugins/ticketoutputpdf/index.html | 6 +----- src/pretix/plugins/ticketoutputpdf/views.py | 21 ++++++++++++------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html b/src/pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html index 082888aca9..fc45a51427 100644 --- a/src/pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html +++ b/src/pretix/plugins/ticketoutputpdf/templates/pretixplugins/ticketoutputpdf/index.html @@ -37,11 +37,7 @@
diff --git a/src/pretix/plugins/ticketoutputpdf/views.py b/src/pretix/plugins/ticketoutputpdf/views.py index 7c0bdda7ed..d942a86bb2 100644 --- a/src/pretix/plugins/ticketoutputpdf/views.py +++ b/src/pretix/plugins/ticketoutputpdf/views.py @@ -3,6 +3,7 @@ import logging import mimetypes from datetime import timedelta +from django.contrib.staticfiles.templatetags.staticfiles import static from django.core.files import File from django.core.files.storage import default_storage from django.http import ( @@ -36,6 +37,7 @@ class EditorView(EventPermissionRequiredMixin, TemplateView): ) maxfilesize = 1024 * 1024 * 10 minfilesize = 10 + identifier = 'pdf' def get(self, request, *args, **kwargs): resp = super().get(request, *args, **kwargs) @@ -118,7 +120,7 @@ class EditorView(EventPermissionRequiredMixin, TemplateView): return resp elif "data" in request.POST: if cf: - fexisting = request.event.settings.get('ticketoutput_pdf_layout', as_type=File) + fexisting = request.event.settings.get('ticketoutput_{}_layout'.format(self.identifier), as_type=File) if fexisting: try: default_storage.delete(fexisting.name) @@ -128,18 +130,18 @@ class EditorView(EventPermissionRequiredMixin, TemplateView): # Create new file nonce = get_random_string(length=8) fname = '%s-%s/%s/%s.%s.%s' % ( - 'event', 'settings', self.request.event.pk, 'ticketoutput_pdf_layout', nonce, 'pdf' + 'event', 'settings', self.request.event.pk, 'ticketoutput_{}_layout'.format(self.identifier), nonce, 'pdf' ) newname = default_storage.save(fname, cf.file) - request.event.settings.set('ticketoutput_pdf_background', 'file://' + newname) + request.event.settings.set('ticketoutput_{}_background'.format(self.identifier), 'file://' + newname) - request.event.settings.set('ticketoutput_pdf_layout', request.POST.get("data")) + request.event.settings.set('ticketoutput_{}_layout'.format(self.identifier), request.POST.get("data")) CachedTicket.objects.filter( - order_position__order__event=self.request.event, provider='pdf' + order_position__order__event=self.request.event, provider=self.identifier ).delete() CachedCombinedTicket.objects.filter( - order__event=self.request.event, provider='pdf' + order__event=self.request.event, provider=self.identifier ).delete() return JsonResponse({'status': 'ok'}) @@ -149,8 +151,13 @@ class EditorView(EventPermissionRequiredMixin, TemplateView): ctx = super().get_context_data(**kwargs) prov = PdfTicketOutput(self.request.event) ctx['fonts'] = get_fonts() + ctx['pdf'] = ( + self.request.event.settings.get('ticketoutput_{}_background'.format(self.identifier)).url + if self.request.event.settings.get('ticketoutput_{}_background'.format(self.identifier)) + else static('pretixpresale/pdf/ticket_default_a4.pdf') + ) ctx['layout'] = json.dumps( - self.request.event.settings.get('ticketoutput_pdf_layout', as_type=list) + self.request.event.settings.get('ticketoutput_{}_layout'.format(self.identifier), as_type=list) or prov._default_layout() ) return ctx