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
This commit is contained in:
luelista
2025-10-10 09:16:35 +02:00
committed by GitHub
parent bff0f54bf8
commit 8853f2b189
2 changed files with 5 additions and 4 deletions

View File

@@ -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 (

View File

@@ -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(