mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
33 lines
1.4 KiB
Python
33 lines
1.4 KiB
Python
from rest_framework import filters, viewsets
|
|
|
|
from pretix.api.models import OAuthAccessToken
|
|
from pretix.api.serializers.organizer import OrganizerSerializer
|
|
from pretix.base.models import Organizer
|
|
|
|
|
|
class OrganizerViewSet(viewsets.ReadOnlyModelViewSet):
|
|
serializer_class = OrganizerSerializer
|
|
queryset = Organizer.objects.none()
|
|
lookup_field = 'slug'
|
|
lookup_url_kwarg = 'organizer'
|
|
filter_backends = (filters.OrderingFilter,)
|
|
ordering = ('slug',)
|
|
ordering_fields = ('name', 'slug')
|
|
|
|
def get_queryset(self):
|
|
if self.request.user.is_authenticated:
|
|
if self.request.user.has_active_staff_session(self.request.session.session_key):
|
|
return Organizer.objects.all()
|
|
elif isinstance(self.request.auth, OAuthAccessToken):
|
|
return Organizer.objects.filter(
|
|
pk__in=self.request.user.teams.values_list('organizer', flat=True)
|
|
).filter(
|
|
pk__in=self.request.auth.organizers.values_list('pk', flat=True)
|
|
)
|
|
else:
|
|
return Organizer.objects.filter(pk__in=self.request.user.teams.values_list('organizer', flat=True))
|
|
elif hasattr(self.request.auth, 'organizer_id'):
|
|
return Organizer.objects.filter(pk=self.request.auth.organizer_id)
|
|
else:
|
|
return Organizer.objects.filter(pk=self.request.auth.team.organizer_id)
|