From 8853f2b189380b58217ef4972d872ab7d1faa75a Mon Sep 17 00:00:00 2001 From: luelista Date: Fri, 10 Oct 2025 09:16:35 +0200 Subject: [PATCH] Allow specifying different override_layout signal in derived classes (Z#23210691) (#5534) * Fix incorrect exception messages * Allow specifying different override_layout signal in derived classes --- src/pretix/base/signals.py | 4 ++-- src/pretix/plugins/ticketoutputpdf/ticketoutput.py | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/pretix/base/signals.py b/src/pretix/base/signals.py index eb3cddff5a..0cfb9484fa 100644 --- a/src/pretix/base/signals.py +++ b/src/pretix/base/signals.py @@ -170,7 +170,7 @@ class PluginSignal(Generic[T], django.dispatch.Signal): second receiver and so on. The return value of the last receiver is returned by this method. """ if sender and not isinstance(sender, self.type): - raise ValueError("Sender needs to be an event.") + raise ValueError(f"Sender needs to be of type {self.type}.") response = named.get(chain_kwarg_name) if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS: @@ -192,7 +192,7 @@ class PluginSignal(Generic[T], django.dispatch.Signal): stopping the response chain at the offending receiver. """ if sender and not isinstance(sender, self.type): - raise ValueError("Sender needs to be an event.") + raise ValueError(f"Sender needs to be of type {self.type}.") responses = [] if ( diff --git a/src/pretix/plugins/ticketoutputpdf/ticketoutput.py b/src/pretix/plugins/ticketoutputpdf/ticketoutput.py index 2179cec609..bb5cdd5c34 100644 --- a/src/pretix/plugins/ticketoutputpdf/ticketoutput.py +++ b/src/pretix/plugins/ticketoutputpdf/ticketoutput.py @@ -64,6 +64,7 @@ class PdfTicketOutput(BaseTicketOutput): download_button_text = _('PDF') multi_download_button_text = _('Download tickets (PDF)') long_download_button_text = _('Download ticket (PDF)') + override_layout_signal = override_layout def __init__(self, event, override_layout=None, override_background=None, override_channel=None): self.override_layout = override_layout @@ -116,7 +117,7 @@ class PdfTicketOutput(BaseTicketOutput): merger = PdfWriter() with language(order.locale, self.event.settings.region): for op in self.get_tickets_to_print(order): - layout = override_layout.send_chained( + layout = self.override_layout_signal.send_chained( order.event, 'layout', orderposition=op, layout=self.layout_map.get( (op.item_id, self.override_channel or order.sales_channel.identifier), self.layout_map.get( @@ -137,7 +138,7 @@ class PdfTicketOutput(BaseTicketOutput): def generate(self, op): order = op.order - layout = override_layout.send_chained( + layout = self.override_layout_signal.send_chained( order.event, 'layout', orderposition=op, layout=self.layout_map.get( (op.item_id, self.override_channel or order.sales_channel.identifier), self.layout_map.get(