mirror of
https://github.com/pretix/pretix.git
synced 2026-05-10 16:04:02 +00:00
Exporters: Pass state about staff_session
This commit is contained in:
@@ -705,6 +705,18 @@ class User(AbstractBaseUser, PermissionsMixin, LoggingMixin):
|
|||||||
return self.teams.exists()
|
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):
|
class UserKnownLoginSource(models.Model):
|
||||||
user = models.ForeignKey('User', on_delete=models.CASCADE, related_name="known_login_sources")
|
user = models.ForeignKey('User', on_delete=models.CASCADE, related_name="known_login_sources")
|
||||||
agent_type = models.CharField(max_length=255, null=True, blank=True)
|
agent_type = models.CharField(max_length=255, null=True, blank=True)
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ from pretix.base.models import (
|
|||||||
CachedFile, Device, Event, Organizer, ScheduledEventExport, TeamAPIToken,
|
CachedFile, Device, Event, Organizer, ScheduledEventExport, TeamAPIToken,
|
||||||
User, cachedfile_name,
|
User, cachedfile_name,
|
||||||
)
|
)
|
||||||
|
from pretix.base.models.auth import UserWithStaffSession
|
||||||
from pretix.base.models.exports import ScheduledOrganizerExport
|
from pretix.base.models.exports import ScheduledOrganizerExport
|
||||||
from pretix.base.services.mail import mail
|
from pretix.base.services.mail import mail
|
||||||
from pretix.base.services.tasks import (
|
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(
|
exporter: BaseExporter = response(
|
||||||
event=event,
|
event=event,
|
||||||
organizer=event.organizer,
|
organizer=event.organizer,
|
||||||
permission_holder=token or device or user,
|
permission_holder=token or device or (UserWithStaffSession(user) if staff_session else User),
|
||||||
**kwargs
|
**kwargs
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -251,7 +252,7 @@ def init_organizer_exporters(
|
|||||||
exporter: BaseExporter = response(
|
exporter: BaseExporter = response(
|
||||||
event=Event.objects.none(),
|
event=Event.objects.none(),
|
||||||
organizer=organizer,
|
organizer=organizer,
|
||||||
permission_holder=token or device or user,
|
permission_holder=token or device or (UserWithStaffSession(user) if staff_session else User),
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -308,7 +309,7 @@ def init_organizer_exporters(
|
|||||||
exporter: BaseExporter = response(
|
exporter: BaseExporter = response(
|
||||||
event=_event_list_cache[permission_name],
|
event=_event_list_cache[permission_name],
|
||||||
organizer=organizer,
|
organizer=organizer,
|
||||||
permission_holder=token or device or user,
|
permission_holder=token or device or (UserWithStaffSession(user) if staff_session else User),
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user