ticket.py 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. from rest_framework import generics, permissions, status
  2. from rest_framework.response import Response
  3. from tickets.api.permissions import UserTicketAccessPermission, UserTicketStatusAccessPermission
  4. from tickets.api.serializers import TicketDetailSerializer, TicketSerializer, TicketStatusSerializer
  5. from tickets.models import Ticket
  6. class TicketDetailAPIView(generics.RetrieveUpdateDestroyAPIView):
  7. queryset = Ticket.objects.all()
  8. serializer_class = TicketDetailSerializer
  9. permission_classes = [permissions.IsAuthenticated & UserTicketAccessPermission]
  10. def destroy(self, request, *args, **kwargs):
  11. instance = self.get_object()
  12. instance.archive()
  13. return Response(status=status.HTTP_204_NO_CONTENT)
  14. class TicketCreateAPIView(generics.CreateAPIView):
  15. queryset = Ticket.objects.all()
  16. serializer_class = TicketSerializer
  17. permission_classes = [permissions.IsAuthenticated & UserTicketAccessPermission]
  18. def perform_create(self, serializer):
  19. if serializer.is_valid():
  20. serializer.save(created_by=self.request.user)
  21. class TicketStatusAPIView(generics.RetrieveUpdateAPIView):
  22. queryset = Ticket.objects.all()
  23. serializer_class = TicketStatusSerializer
  24. permission_classes = [permissions.IsAuthenticated & UserTicketStatusAccessPermission]