From 92d1830f3b6b50dbfcad0ce195ab023b819e3864 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 2 Apr 2026 21:03:42 +0200 Subject: [PATCH] Exporters: Pass state about staff_session --- src/pretix/base/models/auth.py | 12 ++++++++++++ src/pretix/base/services/export.py | 7 ++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/models/auth.py b/src/pretix/base/models/auth.py index afd7b0435..d783f7290 100644 --- a/src/pretix/base/models/auth.py +++ b/src/pretix/base/models/auth.py @@ -705,6 +705,18 @@ class User(AbstractBaseUser, PermissionsMixin, LoggingMixin): return self.teams.exists() +class UserWithStaffSession: + # Wrapper around a User object with a staff session, implementing the PermissionHolder Protocol + def __init__(self, user): + self.user = user + + def has_event_permission(self, organizer, event, perm_name=None, request=None, session_key=None) -> bool: + return True + + def has_organizer_permission(self, organizer, perm_name=None, request=None): + return True + + class UserKnownLoginSource(models.Model): user = models.ForeignKey('User', on_delete=models.CASCADE, related_name="known_login_sources") agent_type = models.CharField(max_length=255, null=True, blank=True) diff --git a/src/pretix/base/services/export.py b/src/pretix/base/services/export.py index 31ad1b267..5fc80d8de 100644 --- a/src/pretix/base/services/export.py +++ b/src/pretix/base/services/export.py @@ -40,6 +40,7 @@ from pretix.base.models import ( CachedFile, Device, Event, Organizer, ScheduledEventExport, TeamAPIToken, User, cachedfile_name, ) +from pretix.base.models.auth import UserWithStaffSession from pretix.base.models.exports import ScheduledOrganizerExport from pretix.base.services.mail import mail from pretix.base.services.tasks import ( @@ -214,7 +215,7 @@ def init_event_exporters(event, user=None, token=None, device=None, request=None exporter: BaseExporter = response( event=event, organizer=event.organizer, - permission_holder=token or device or user, + permission_holder=token or device or (UserWithStaffSession(user) if staff_session else User), **kwargs ) @@ -251,7 +252,7 @@ def init_organizer_exporters( exporter: BaseExporter = response( event=Event.objects.none(), organizer=organizer, - permission_holder=token or device or user, + permission_holder=token or device or (UserWithStaffSession(user) if staff_session else User), **kwargs, ) @@ -308,7 +309,7 @@ def init_organizer_exporters( exporter: BaseExporter = response( event=_event_list_cache[permission_name], organizer=organizer, - permission_holder=token or device or user, + permission_holder=token or device or (UserWithStaffSession(user) if staff_session else User), **kwargs, )