Fix ticket exporter

This commit is contained in:
Raphael Michel
2018-06-12 15:50:03 +02:00
parent 0e332d291a
commit 229ad9108b

View File

@@ -1,8 +1,11 @@
from io import BytesIO
from django.core.files.base import ContentFile
from django.utils.translation import ugettext as _
from PyPDF2.merger import PdfFileMerger
from pretix.base.exporter import BaseExporter
from pretix.base.i18n import language
from pretix.base.models import Order, OrderPosition
from .ticketoutput import PdfTicketOutput
@@ -14,20 +17,30 @@ class AllTicketsPDF(BaseExporter):
identifier = "pdfoutput_all_tickets"
def render(self, form_data):
merger = PdfFileMerger()
o = PdfTicketOutput(self.event)
qs = OrderPosition.objects.filter(order__event=self.event, order__status=Order.STATUS_PAID).select_related(
'order', 'item', 'variation'
)
buffer = BytesIO()
p = o._create_canvas(buffer)
for op in qs:
if op.addon_to_id and not self.event.settings.ticket_download_addons:
continue
if not op.item.admission and not self.event.settings.ticket_download_nonadm:
continue
layout = o.layout_map.get(op.item_id, o.default_layout)
o._draw_page(layout, p, op, op.order)
p.save()
outbuffer = o._render_with_background(buffer)
with language(op.order.locale):
buffer = BytesIO()
p = o._create_canvas(buffer)
layout = o.layout_map.get(op.item_id, o.default_layout)
o._draw_page(layout, p, op, op.order)
p.save()
outbuffer = o._render_with_background(layout, buffer)
merger.append(ContentFile(outbuffer.read()))
outbuffer = BytesIO()
merger.write(outbuffer)
merger.close()
outbuffer.seek(0)
return '{}_tickets.pdf'.format(self.event.slug), 'application/pdf', outbuffer.read()