diff --git a/src/pretix/api/webhooks.py b/src/pretix/api/webhooks.py index 2dcf525e9e..2505a5a0dc 100644 --- a/src/pretix/api/webhooks.py +++ b/src/pretix/api/webhooks.py @@ -439,8 +439,12 @@ def register_default_webhook_events(sender, **kwargs): def notify_webhooks(logentry_ids: list): if not isinstance(logentry_ids, list): logentry_ids = [logentry_ids] - qs = LogEntry.all.select_related('event', 'event__organizer', 'organizer').filter(id__in=logentry_ids) - _org, _at, webhooks = None, None, None + qs = LogEntry.all.select_related( + 'event', 'event__organizer', 'organizer' + ).order_by( + 'action_type', 'organizer_id', 'event_id', + ).filter(id__in=logentry_ids) + _org, _at, _ev, webhooks = None, None, None, None for logentry in qs: if not logentry.organizer: break # We need to know the organizer @@ -450,7 +454,7 @@ def notify_webhooks(logentry_ids: list): if not notification_type: break # Ignore, no webhooks for this event type - if _org != logentry.organizer or _at != logentry.action_type or webhooks is None: + if _org != logentry.organizer or _at != logentry.action_type or _ev != logentry.event_id or webhooks is None: _org = logentry.organizer _at = logentry.action_type diff --git a/src/pretix/base/services/notifications.py b/src/pretix/base/services/notifications.py index 0680482f20..310252012d 100644 --- a/src/pretix/base/services/notifications.py +++ b/src/pretix/base/services/notifications.py @@ -41,7 +41,11 @@ def notify(logentry_ids: list): if not isinstance(logentry_ids, list): logentry_ids = [logentry_ids] - qs = LogEntry.all.select_related('event', 'event__organizer').filter(id__in=logentry_ids) + qs = LogEntry.all.select_related( + 'event', 'event__organizer' + ).order_by( + 'action_type', 'event_id', + ).filter(id__in=logentry_ids) _event, _at, notify_specific, notify_global = None, None, None, None for logentry in qs: