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)