diff --git a/src/pretix/base/exporter.py b/src/pretix/base/exporter.py index 5182627a6..a528dabb1 100644 --- a/src/pretix/base/exporter.py +++ b/src/pretix/base/exporter.py @@ -59,11 +59,22 @@ class BaseExporter: This is the base class for all data exporters """ - def __init__(self, event, organizer, progress_callback=lambda v: None): + def __init__(self, event, organizer, user=None, token=None, device=None, progress_callback=lambda v: None): + """ + :param event: Event context, can also be a queryset of events for multi-event exports + :param organizer: Organizer context + :param user: The user who triggered the export (or None). + :param token: The API token that triggered the export (or None). + :param device: The device that triggered the export (or None) + :param progress_callback: Callback function with progress + """ self.event = event self.organizer = organizer self.progress_callback = progress_callback self.is_multievent = isinstance(event, QuerySet) + self.user = user + self.token = token + self.device = device if isinstance(event, QuerySet): self.events = event self.event = None diff --git a/src/pretix/base/services/export.py b/src/pretix/base/services/export.py index fc49ec262..8cb660b58 100644 --- a/src/pretix/base/services/export.py +++ b/src/pretix/base/services/export.py @@ -211,7 +211,14 @@ def init_event_exporters(event, user=None, token=None, device=None, request=None if not perm_holder.has_event_permission(event.organizer, event, permission_name, request) and not staff_session: continue - exporter: BaseExporter = response(event=event, organizer=event.organizer, **kwargs) + exporter: BaseExporter = response( + event=event, + organizer=event.organizer, + user=user, + token=token, + device=device, + **kwargs + ) if not exporter.available_for_user(user if user and user.is_authenticated else None): continue @@ -243,7 +250,14 @@ def init_organizer_exporters( continue if issubclass(response, OrganizerLevelExportMixin): - exporter: BaseExporter = response(event=Event.objects.none(), organizer=organizer, **kwargs) + exporter: BaseExporter = response( + event=Event.objects.none(), + organizer=organizer, + user=user, + token=token, + device=device, + **kwargs, + ) try: if not perm_holder.has_organizer_permission(organizer, response.get_required_organizer_permission(), request) and not staff_session: @@ -295,7 +309,14 @@ def init_organizer_exporters( 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) + exporter: BaseExporter = response( + event=_event_list_cache[permission_name], + organizer=organizer, + user=user, + token=token, + device=device, + **kwargs, + ) if not exporter.available_for_user(user if user and user.is_authenticated else None): continue