83 lines
2.9 KiB
Python
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)
|