1234567891011121314151617181920212223242526272829303132333435363738 |
- from django.shortcuts import get_object_or_404
- from rest_framework import generics, permissions
- from tickets.models import Ticket, TicketList
- from tickets.api.serializers import TicketListSerializer, TicketSerializer
- from tickets.api.permissions import UserCanReadTicketListPermission
- class TicketListListAPIView(generics.ListAPIView):
- permission_classes = [permissions.IsAuthenticated]
- serializer_class = TicketListSerializer
- def get_queryset(self):
- user = self.request.user
- user_groups_ids = user.groups.all().values_list("pk", flat=True)
- ticket_lists = TicketList.objects.select_related("group").order_by("group__name", "name")
-
- if not user.is_superuser:
- if user_groups_ids:
- ticket_lists = ticket_lists.filter(group__id__in=user_groups_ids)
- else:
- raise NotFound("You do not yet belong to any groups. Ask your administrator to add you to one.")
- return ticket_lists
- class TicketListDetailAPIView(generics.ListAPIView):
- permission_classes = [permissions.IsAuthenticated & UserCanReadTicketListPermission]
- serializer_class = TicketSerializer
- def get_queryset(self):
- return Ticket.objects.filter(ticket_list=self.get_object())
- def get_object(self):
- obj = get_object_or_404(TicketList.objects.filter(pk=self.kwargs['pk']))
- self.check_object_permissions(self.request, obj)
- return obj
|