ticket.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435
  1. from rest_framework import generics, permissions, status
  2. from rest_framework.response import Response
  3. from rest_framework_api_key.permissions import HasAPIKey
  4. from tickets.api.permissions import UserTicketAccessPermission, UserTicketStatusAccessPermission
  5. from tickets.api.serializers import TicketDetailSerializer, TicketSerializer, TicketStatusSerializer
  6. from tickets.models import Ticket
  7. #TODO - maybe it's good idea to add concrete permission checks for handlers with API keys
  8. class TicketDetailAPIView(generics.RetrieveUpdateDestroyAPIView):
  9. queryset = Ticket.objects.all()
  10. serializer_class = TicketDetailSerializer
  11. permission_classes = [permissions.IsAuthenticated & UserTicketAccessPermission | HasAPIKey]
  12. def destroy(self, request, *args, **kwargs):
  13. instance = self.get_object()
  14. instance.archive()
  15. return Response(status=status.HTTP_204_NO_CONTENT)
  16. class TicketCreateAPIView(generics.CreateAPIView):
  17. queryset = Ticket.objects.all()
  18. serializer_class = TicketSerializer
  19. permission_classes = [permissions.IsAuthenticated & UserTicketAccessPermission | HasAPIKey]
  20. def perform_create(self, serializer):
  21. if serializer.is_valid():
  22. serializer.save(created_by=self.request.user)
  23. class TicketStatusAPIView(generics.RetrieveUpdateAPIView):
  24. queryset = Ticket.objects.all()
  25. serializer_class = TicketStatusSerializer
  26. permission_classes = [permissions.IsAuthenticated & UserTicketStatusAccessPermission | HasAPIKey]