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. 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): 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) response = named.get(chain_kwarg_name)
if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS: 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. stopping the response chain at the offending receiver.
""" """
if sender and not isinstance(sender, self.type): 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 = [] responses = []
if ( if (

View File

@@ -64,6 +64,7 @@ class PdfTicketOutput(BaseTicketOutput):
download_button_text = _('PDF') download_button_text = _('PDF')
multi_download_button_text = _('Download tickets (PDF)') multi_download_button_text = _('Download tickets (PDF)')
long_download_button_text = _('Download ticket (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): def __init__(self, event, override_layout=None, override_background=None, override_channel=None):
self.override_layout = override_layout self.override_layout = override_layout
@@ -116,7 +117,7 @@ class PdfTicketOutput(BaseTicketOutput):
merger = PdfWriter() merger = PdfWriter()
with language(order.locale, self.event.settings.region): with language(order.locale, self.event.settings.region):
for op in self.get_tickets_to_print(order): 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( order.event, 'layout', orderposition=op, layout=self.layout_map.get(
(op.item_id, self.override_channel or order.sales_channel.identifier), (op.item_id, self.override_channel or order.sales_channel.identifier),
self.layout_map.get( self.layout_map.get(
@@ -137,7 +138,7 @@ class PdfTicketOutput(BaseTicketOutput):
def generate(self, op): def generate(self, op):
order = op.order 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( order.event, 'layout', orderposition=op, layout=self.layout_map.get(
(op.item_id, self.override_channel or order.sales_channel.identifier), (op.item_id, self.override_channel or order.sales_channel.identifier),
self.layout_map.get( self.layout_map.get(