Improve performance of bulk-generation of ticket PDFs

This commit is contained in:
Raphael Michel
2019-03-12 09:53:28 +01:00
parent affc6254a8
commit 5024fae5ed

View File

@@ -35,19 +35,23 @@ class PdfTicketOutput(BaseTicketOutput):
@cached_property @cached_property
def layout_map(self): def layout_map(self):
return { if not hasattr(self.event, '_ticketoutputpdf_cache_layoutmap'):
(bi.item_id, bi.sales_channel): bi.layout self.event._ticketoutputpdf_cache_layoutmap = {
for bi in TicketLayoutItem.objects.select_related('layout').filter(item__event=self.event) (bi.item_id, bi.sales_channel): bi.layout
} for bi in TicketLayoutItem.objects.select_related('layout').filter(item__event=self.event)
}
return self.event._ticketoutputpdf_cache_layoutmap
@cached_property @cached_property
def default_layout(self): def default_layout(self):
try: if not hasattr(self.event, '_ticketoutputpdf_cache_default_layout'):
return self.event.ticket_layouts.get(default=True) try:
except TicketLayout.DoesNotExist: self.event._ticketoutputpdf_cache_default_layout = self.event.ticket_layouts.get(default=True)
return TicketLayout( except TicketLayout.DoesNotExist:
layout=json.dumps(self._default_layout()) self.event._ticketoutputpdf_cache_default_layout = TicketLayout(
) layout=json.dumps(self._default_layout())
)
return self.event._ticketoutputpdf_cache_default_layout
def _register_fonts(self): def _register_fonts(self):
Renderer._register_fonts() Renderer._register_fonts()