From e1b8e16a34893edf4b0384ffc29f200d0fe6ba75 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 18 Mar 2026 13:23:26 +0100 Subject: [PATCH] Permissions: Fix staff session handling for organizer exports (#6005) --- src/pretix/base/services/export.py | 4 ++-- src/pretix/control/views/orders.py | 5 ++++- src/pretix/control/views/organizer.py | 5 ++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/pretix/base/services/export.py b/src/pretix/base/services/export.py index 2b4be717d..fc49ec262 100644 --- a/src/pretix/base/services/export.py +++ b/src/pretix/base/services/export.py @@ -257,7 +257,7 @@ def init_organizer_exporters( if permission_name not in _event_list_cache: if staff_session: - events = event_qs.all() + events = event_qs.all() if event_qs else organizer.events.all() elif event_qs is not None: events = event_qs.filter( pk__in=perm_holder.get_events_with_permission( @@ -292,7 +292,7 @@ def init_organizer_exporters( elif device: _has_permission_on_any_team_cache[permission_name] = device.has_event_permission(permission_name) - if not _has_permission_on_any_team_cache[permission_name]: + if not _has_permission_on_any_team_cache[permission_name] and not staff_session: continue exporter: BaseExporter = response(event=_event_list_cache[permission_name], organizer=organizer, **kwargs) diff --git a/src/pretix/control/views/orders.py b/src/pretix/control/views/orders.py index 3ea346ef7..ea6ddfe34 100644 --- a/src/pretix/control/views/orders.py +++ b/src/pretix/control/views/orders.py @@ -2649,7 +2649,10 @@ class OrderGo(EventPermissionRequiredMixin, View): class ExportMixin: @cached_property def exporters(self): - raw_exporters = list(init_event_exporters(self.request.event, user=self.request.user, request=self.request)) + raw_exporters = list(init_event_exporters( + self.request.event, user=self.request.user, request=self.request, + staff_session=self.request.user.has_active_staff_session(self.request.session.session_key), + )) return sorted( raw_exporters, key=lambda ex: (0 if ex.category else 1, ex.category or "", 0 if ex.featured else 1, str(ex.verbose_name).lower()) diff --git a/src/pretix/control/views/organizer.py b/src/pretix/control/views/organizer.py index 05ae7f01f..4e2273a75 100644 --- a/src/pretix/control/views/organizer.py +++ b/src/pretix/control/views/organizer.py @@ -2025,7 +2025,10 @@ class ExportMixin: @cached_property def exporters(self): - raw_exporters = list(init_organizer_exporters(self.request.organizer, user=self.request.user, request=self.request)) + raw_exporters = list(init_organizer_exporters( + self.request.organizer, user=self.request.user, request=self.request, + staff_session=self.request.user.has_active_staff_session(self.request.session.session_key), + )) return sorted( raw_exporters, key=lambda ex: (