Files
backend-v1/core/apps/evaluation/views/quick.py
Shaxobff e560fdaf2d fix bug
2026-04-27 11:28:18 +05:00

83 lines
2.9 KiB
Python

from django.shortcuts import get_object_or_404
from django_core.mixins import BaseViewSetMixin
from django_filters.rest_framework import DjangoFilterBackend
from drf_spectacular.utils import extend_schema
from rest_framework import status
from rest_framework.filters import OrderingFilter, SearchFilter
from rest_framework.generics import ListAPIView
from rest_framework.parsers import FormParser, MultiPartParser
from rest_framework.permissions import AllowAny, IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.viewsets import ModelViewSet
from core.apps.evaluation.filters.quick import QuickevaluationFilter
from core.apps.evaluation.models import QuickEvaluationModel
from core.apps.evaluation.serializers.quick import (
CreateQuickevaluationSerializer,
ListQuickevaluationSerializer,
RetrieveQuickevaluationSerializer,
)
@extend_schema(tags=["QuickEvaluation"])
class QuickEvaluationView(BaseViewSetMixin, ModelViewSet):
queryset = QuickEvaluationModel.objects.select_related(
"created_by", "brand", "marka", "color", "fuel_type",
"body_type", "state_car", "car_position",
).filter(is_archive=False)
serializer_class = ListQuickevaluationSerializer
permission_classes = [AllowAny]
parser_classes = [MultiPartParser, FormParser]
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
filterset_class = QuickevaluationFilter
search_fields = ["car_number", "marka__name", "brand__name"]
ordering_fields = [
"created_at",
"updated_at",
"car_number",
"brand__name",
"marka__name",
"car_type",
"car_manufactured_date",
"color__name",
"fuel_type__name",
"state_car__name",
"status",
"distance_covered",
]
ordering = ["-created_at"]
action_permission_classes = {}
action_serializer_class = {
"list": ListQuickevaluationSerializer,
"retrieve": RetrieveQuickevaluationSerializer,
"create": CreateQuickevaluationSerializer,
}
@extend_schema(tags=["QuickEvaluation"])
class ChangeQuickevaluationAPIView(APIView):
def post(self, request, pk):
instance = get_object_or_404(QuickEvaluationModel, pk=pk)
is_archived = request.data.get("is_archived")
if is_archived is None:
return Response(
{"error": "Поле 'is_archived' обязательно"},
status=status.HTTP_400_BAD_REQUEST
)
instance.is_archived = is_archived
instance.save()
return Response({"success": True}, status=200)
@extend_schema(tags=["QuickEvaluation"])
class GetArchivedQuickevaluationListAPIView(ListAPIView):
permission_classes = [IsAuthenticated]
def get_queryset(self):
return QuickEvaluationModel.objects.filter(is_archived=True)