ticket serializer and model update
This commit is contained in:
+33
-9
@@ -2,7 +2,9 @@ from rest_framework import generics, permissions
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
from .models import Ticket, Message
|
||||
from .serializers import TicketSerializer, MessageSerializer
|
||||
from .serializers import TicketListSerializer, MessageSerializer, TicketSerializer
|
||||
from utils.pagination import StructurePagination
|
||||
from drf_spectacular.utils import extend_schema, OpenApiParameter, OpenApiTypes
|
||||
|
||||
class TicketCreateView(generics.CreateAPIView):
|
||||
queryset = Ticket.objects.all()
|
||||
@@ -12,16 +14,38 @@ class TicketCreateView(generics.CreateAPIView):
|
||||
def perform_create(self, serializer):
|
||||
serializer.save(customer=self.request.user)
|
||||
|
||||
|
||||
|
||||
class TicketListView(generics.ListAPIView):
|
||||
serializer_class = TicketSerializer
|
||||
class TicketListView(APIView):
|
||||
serializer_class = TicketListSerializer
|
||||
permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
def get_queryset(self):
|
||||
user = self.request.user
|
||||
if user.is_staff:
|
||||
return Ticket.objects.all()
|
||||
return Ticket.objects.filter(customer=user)
|
||||
pagination_class = StructurePagination
|
||||
@extend_schema(
|
||||
parameters=[
|
||||
OpenApiParameter(
|
||||
name="limit",
|
||||
description="لیمیتش",
|
||||
required=False,
|
||||
type=OpenApiTypes.INT,
|
||||
),
|
||||
OpenApiParameter(
|
||||
name="offset",
|
||||
description="افستش",
|
||||
required=False,
|
||||
type=OpenApiTypes.INT,
|
||||
)
|
||||
],
|
||||
responses={
|
||||
200: TicketListSerializer(many=True),
|
||||
404: OpenApiTypes.OBJECT,
|
||||
},
|
||||
)
|
||||
def get(self, request):
|
||||
tickets = Ticket.objects.filter(customer=request.user)
|
||||
paginator = self.pagination_class()
|
||||
paginated_tickets = paginator.paginate_queryset(tickets, request)
|
||||
tickets_ser = self.serializer_class(instance=paginated_tickets, many=True, context={'request': request})
|
||||
return paginator.get_paginated_response(tickets_ser.data)
|
||||
|
||||
|
||||
class TicketDetailView(generics.RetrieveAPIView):
|
||||
|
||||
Reference in New Issue
Block a user