mirror of
https://github.com/pretix/pretix.git
synced 2026-08-29 13:44:40 +00:00
Add exporter to output all tickets
This commit is contained in:
@@ -0,0 +1,32 @@
|
|||||||
|
from io import BytesIO
|
||||||
|
|
||||||
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
|
from pretix.base.exporter import BaseExporter
|
||||||
|
from pretix.base.models import Order, OrderPosition
|
||||||
|
|
||||||
|
from .ticketoutput import PdfTicketOutput
|
||||||
|
|
||||||
|
|
||||||
|
class AllTicketsPDF(BaseExporter):
|
||||||
|
name = "alltickets"
|
||||||
|
verbose_name = _("All paid PDF tickets in one file")
|
||||||
|
identifier = "pdfoutput_all_tickets"
|
||||||
|
|
||||||
|
def render(self, form_data):
|
||||||
|
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
|
||||||
|
o._draw_page(p, op, op.order)
|
||||||
|
|
||||||
|
p.save()
|
||||||
|
outbuffer = o._render_with_background(buffer)
|
||||||
|
return 'tickets.pdf', 'application/pdf', outbuffer.read()
|
||||||
@@ -2,7 +2,9 @@ from django.dispatch import Signal, receiver
|
|||||||
from django.template.loader import get_template
|
from django.template.loader import get_template
|
||||||
from django.urls import resolve
|
from django.urls import resolve
|
||||||
|
|
||||||
from pretix.base.signals import register_ticket_outputs
|
from pretix.base.signals import (
|
||||||
|
register_data_exporters, register_ticket_outputs,
|
||||||
|
)
|
||||||
from pretix.control.signals import html_head
|
from pretix.control.signals import html_head
|
||||||
|
|
||||||
|
|
||||||
@@ -12,6 +14,12 @@ def register_ticket_outputs(sender, **kwargs):
|
|||||||
return PdfTicketOutput
|
return PdfTicketOutput
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(register_data_exporters, dispatch_uid="dataexport_pdf")
|
||||||
|
def register_data(sender, **kwargs):
|
||||||
|
from .exporters import AllTicketsPDF
|
||||||
|
return AllTicketsPDF
|
||||||
|
|
||||||
|
|
||||||
@receiver(html_head, dispatch_uid="ticketoutputpdf_html_head")
|
@receiver(html_head, dispatch_uid="ticketoutputpdf_html_head")
|
||||||
def html_head_presale(sender, request=None, **kwargs):
|
def html_head_presale(sender, request=None, **kwargs):
|
||||||
url = resolve(request.path_info)
|
url = resolve(request.path_info)
|
||||||
|
|||||||
Reference in New Issue
Block a user