From d5d8a379e45695c03f6380b61dbfeb97a8539f73 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 29 Jan 2026 10:17:14 +0100 Subject: [PATCH] Docs for exporters --- doc/development/api/exporter.rst | 16 ++++++++++++++++ src/pretix/base/exporter.py | 7 +++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/doc/development/api/exporter.rst b/doc/development/api/exporter.rst index 5974dab91e..6bcb24b004 100644 --- a/doc/development/api/exporter.rst +++ b/doc/development/api/exporter.rst @@ -80,8 +80,24 @@ The exporter class .. autoattribute:: category + .. autoattribute:: feature + .. autoattribute:: export_form_fields + .. autoattribute:: repeatable_read + .. automethod:: render This is an abstract method, you **must** override this! + + .. automethod:: available_for_user + + .. automethod:: get_required_event_permission + +On organizer level, by default exporters are expected to handle on a *set of events* and the system will automatically +add a form field that allows the selection of events, limited to events the user has correct permissions for. If this +does not fit your organizer, because it is not related to events, you should **also** inherit from the following class: + +.. class:: pretix.base.exporter.OrganizerLevelExportMixin + + .. automethod:: get_required_organizer_permission diff --git a/src/pretix/base/exporter.py b/src/pretix/base/exporter.py index 8fcefd1327..5182627a60 100644 --- a/src/pretix/base/exporter.py +++ b/src/pretix/base/exporter.py @@ -183,14 +183,15 @@ class BaseExporter: def get_required_event_permission(cls) -> 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. + to limit the selection of events. Will be ignored if the ``OrganizerLevelExportMixin`` mixin is used. + The default implementation returns ``"event.orders:read"``. """ return 'event.orders:read' class OrganizerLevelExportMixin: @classmethod - def required_event_permission(cls): + def get_required_event_permission(cls): raise TypeError("required_event_permission may not be called on OrganizerLevelExportMixin") @classmethod @@ -198,6 +199,8 @@ class OrganizerLevelExportMixin: """ 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. + + ``get_required_event_permission`` will be ignored on this class. """ raise NotImplementedError()