EventPluginSignal: Call core plugins even when no event is given

This commit is contained in:
Raphael Michel
2016-10-09 12:04:54 +02:00
parent f82b5ddaae
commit db49f8ea89
2 changed files with 7 additions and 5 deletions

View File

@@ -37,7 +37,8 @@ class LogEntry(models.Model):
def display(self): def display(self):
from ..signals import logentry_display from ..signals import logentry_display
for receiver, response in logentry_display.send(self.event, logentry=self): if self.event:
if response: for receiver, response in logentry_display.send(self.event, logentry=self):
return response if response:
return response
return self.action_type return self.action_type

View File

@@ -22,7 +22,8 @@ class EventPluginSignal(django.dispatch.Signal):
sender is required to be an instance of ``pretix.base.models.Event``. sender is required to be an instance of ``pretix.base.models.Event``.
""" """
assert isinstance(sender, Event) if sender and not isinstance(sender, Event):
raise ValueError("Sender needs to be an event.")
responses = [] responses = []
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:
@@ -44,7 +45,7 @@ class EventPluginSignal(django.dispatch.Signal):
searchpath, mod = searchpath.rsplit(".", 1) searchpath, mod = searchpath.rsplit(".", 1)
# Only fire receivers from active plugins and core modules # Only fire receivers from active plugins and core modules
if (searchpath, mod) in settings.CORE_MODULES or (app and app.name in sender.get_plugins()): if (searchpath, mod) in settings.CORE_MODULES or (sender and app and app.name in sender.get_plugins()):
if not hasattr(app, 'compatibility_errors') or not app.compatibility_errors: if not hasattr(app, 'compatibility_errors') or not app.compatibility_errors:
response = receiver(signal=self, sender=sender, **named) response = receiver(signal=self, sender=sender, **named)
responses.append((receiver, response)) responses.append((receiver, response))