forked from CGM_Public/pretix_original
Exporters: Give access to authentication infos
This commit is contained in:
committed by
Raphael Michel
parent
b6518449d6
commit
c64553ad69
@@ -59,11 +59,22 @@ class BaseExporter:
|
|||||||
This is the base class for all data exporters
|
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.event = event
|
||||||
self.organizer = organizer
|
self.organizer = organizer
|
||||||
self.progress_callback = progress_callback
|
self.progress_callback = progress_callback
|
||||||
self.is_multievent = isinstance(event, QuerySet)
|
self.is_multievent = isinstance(event, QuerySet)
|
||||||
|
self.user = user
|
||||||
|
self.token = token
|
||||||
|
self.device = device
|
||||||
if isinstance(event, QuerySet):
|
if isinstance(event, QuerySet):
|
||||||
self.events = event
|
self.events = event
|
||||||
self.event = None
|
self.event = None
|
||||||
|
|||||||
@@ -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:
|
if not perm_holder.has_event_permission(event.organizer, event, permission_name, request) and not staff_session:
|
||||||
continue
|
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):
|
if not exporter.available_for_user(user if user and user.is_authenticated else None):
|
||||||
continue
|
continue
|
||||||
@@ -243,7 +250,14 @@ def init_organizer_exporters(
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
if issubclass(response, OrganizerLevelExportMixin):
|
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:
|
try:
|
||||||
if not perm_holder.has_organizer_permission(organizer, response.get_required_organizer_permission(), request) and not staff_session:
|
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:
|
if not _has_permission_on_any_team_cache[permission_name] and not staff_session:
|
||||||
continue
|
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):
|
if not exporter.available_for_user(user if user and user.is_authenticated else None):
|
||||||
continue
|
continue
|
||||||
|
|||||||
Reference in New Issue
Block a user