From f637e1fcdde43619a11092bd35a20a608a4e531a Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 10 Mar 2026 17:51:57 +0100 Subject: [PATCH] Allow exporters to have empty permission --- src/pretix/base/exporter.py | 4 ++-- src/pretix/base/models/organizer.py | 6 ++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pretix/base/exporter.py b/src/pretix/base/exporter.py index a528dabb1..121ee5d51 100644 --- a/src/pretix/base/exporter.py +++ b/src/pretix/base/exporter.py @@ -191,7 +191,7 @@ class BaseExporter: return True @classmethod - def get_required_event_permission(cls) -> str: + def get_required_event_permission(cls) -> Optional[str]: """ The permission level required to use this exporter for events. For multi-event-exports, this will be used to limit the selection of events. Will be ignored if the ``OrganizerLevelExportMixin`` mixin is used. @@ -206,7 +206,7 @@ class OrganizerLevelExportMixin: raise TypeError("required_event_permission may not be called on OrganizerLevelExportMixin") @classmethod - def get_required_organizer_permission(cls) -> str: + def get_required_organizer_permission(cls) -> Optional[str]: """ The permission level required to use this exporter. Must be set for organizer-level exports. Set to `None` to allow everyone with any access to the organizer. diff --git a/src/pretix/base/models/organizer.py b/src/pretix/base/models/organizer.py index 5a9ef8c51..6afc25117 100644 --- a/src/pretix/base/models/organizer.py +++ b/src/pretix/base/models/organizer.py @@ -319,6 +319,9 @@ class TeamQuerySet(models.QuerySet): def event_permission_q(cls, perm_name): from ..permissions import assert_valid_event_permission + if perm_name is None: + return Q() + if perm_name.startswith('can_') and perm_name in OLD_TO_NEW_EVENT_COMPAT: # legacy return reduce(operator.and_, [cls.event_permission_q(p) for p in OLD_TO_NEW_EVENT_COMPAT[perm_name]]) assert_valid_event_permission(perm_name, allow_legacy=False) @@ -331,6 +334,9 @@ class TeamQuerySet(models.QuerySet): def organizer_permission_q(cls, perm_name): from ..permissions import assert_valid_organizer_permission + if perm_name is None: + return Q() + if perm_name.startswith('can_') and perm_name in OLD_TO_NEW_ORGANIZER_COMPAT: # legacy return reduce(operator.and_, [cls.organizer_permission_q(p) for p in OLD_TO_NEW_ORGANIZER_COMPAT[perm_name]]) assert_valid_organizer_permission(perm_name, allow_legacy=False)