from django_core.mixins import BaseViewSetMixin from django_filters.rest_framework import DjangoFilterBackend from drf_spectacular.utils import extend_schema from rest_framework.filters import OrderingFilter, SearchFilter from rest_framework.pagination import PageNumberPagination from rest_framework.permissions import AllowAny, IsAuthenticated from rest_framework.viewsets import ModelViewSet from core.apps.evaluation.filters.request import EvaluationrequestFilter from core.apps.evaluation.models import EvaluationrequestModel from core.apps.evaluation.serializers.request import ( CreateEvaluationrequestSerializer, ListEvaluationrequestSerializer, RetrieveEvaluationrequestSerializer, ) # class RequestPagination(PageNumberPagination): # page_size = 20 # page_size_query_param = "limit" # max_page_size = 100 @extend_schema(tags=["EvaluationRequest"]) class EvaluationrequestView(BaseViewSetMixin, ModelViewSet): serializer_class = ListEvaluationrequestSerializer permission_classes = [IsAuthenticated] # pagination_class = RequestPagination filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_class = EvaluationrequestFilter search_fields = [ "customer_inn_number", "owner_inn_number", "tex_passport", ] ordering_fields = [ "created_at", "updated_at", "rate_type", "object_type", "status", ] ordering = ["-created_at"] action_permission_classes = {} action_serializer_class = { "list": ListEvaluationrequestSerializer, "retrieve": RetrieveEvaluationrequestSerializer, "create": CreateEvaluationrequestSerializer, } def get_queryset(self): return EvaluationrequestModel.objects.filter( user=self.request.user ).order_by("-created_at") @extend_schema(tags=["EvaluationRequest"]) class AdminEvaluationrequestView(BaseViewSetMixin, ModelViewSet): serializer_class = ListEvaluationrequestSerializer permission_classes = [IsAuthenticated] # pagination_class = RequestPagination filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter] filterset_class = EvaluationrequestFilter search_fields = [ "customer_inn_number", "owner_inn_number", "tex_passport", ] ordering_fields = [ "id", "rate_type", "rate_type_display", "object_type", "object_type_display", "customer_inn_number", "owner_inn_number", "tex_passport", "value_determined", "rate_goal", "property_rights", "form_ownership", "worked_hours", "chassi", "need_delivering", "location", "location_name", "status", "status_display", "user", "created_at", "updated_at", ] ordering = ["-created_at"] action_permission_classes = {} action_serializer_class = { "list": ListEvaluationrequestSerializer, "retrieve": RetrieveEvaluationrequestSerializer, "create": CreateEvaluationrequestSerializer, } def get_queryset(self): return EvaluationrequestModel.objects.select_related("value_determined", "rate_goal", "property_rights", "form_ownership", "user").order_by("-created_at") def serializer_context(self): return self.serializer_class(context={"request": self.request})