From 3664f8f66d4c8634433e681993d783a25ac38ba3 Mon Sep 17 00:00:00 2001 From: xoliqberdiyev Date: Fri, 3 Apr 2026 15:27:43 +0500 Subject: [PATCH] feat: add new evaluation-request crud apis for admin --- .../serializers/request/EvaluationRequest.py | 12 +++++++ core/apps/evaluation/urls.py | 2 ++ core/apps/evaluation/views/request.py | 34 +++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/core/apps/evaluation/serializers/request/EvaluationRequest.py b/core/apps/evaluation/serializers/request/EvaluationRequest.py index a463ee2..efd9228 100644 --- a/core/apps/evaluation/serializers/request/EvaluationRequest.py +++ b/core/apps/evaluation/serializers/request/EvaluationRequest.py @@ -23,6 +23,7 @@ class BaseEvaluationrequestSerializer(serializers.ModelSerializer): rate_goal = ListReferenceitemSerializer(read_only=True) property_rights = ListReferenceitemSerializer(read_only=True) form_ownership = ListReferenceitemSerializer(read_only=True) + user = serializers.SerializerMethodField(method_name="get_user") class Meta: model = EvaluationrequestModel @@ -46,6 +47,7 @@ class BaseEvaluationrequestSerializer(serializers.ModelSerializer): "location_name", "status", "status_display", + "user", "created_at", "updated_at", ] @@ -59,6 +61,16 @@ class BaseEvaluationrequestSerializer(serializers.ModelSerializer): } return None + def get_user(self, obj): + return { + "id": obj.user.id, + "phone": obj.user.phone, + "first_name": obj.user.first_name, + "last_name": obj.user.last_name, + "role": obj.user.role, + "avatar": obj.user.avatar.url if obj.user.avatar else None + } + class ListEvaluationrequestSerializer(BaseEvaluationrequestSerializer): class Meta(BaseEvaluationrequestSerializer.Meta): diff --git a/core/apps/evaluation/urls.py b/core/apps/evaluation/urls.py index cf6e9be..120be3a 100644 --- a/core/apps/evaluation/urls.py +++ b/core/apps/evaluation/urls.py @@ -20,6 +20,7 @@ from .views import ( ValuationDocumentView, ValuationView, VehicleView, + AdminEvaluationrequestView, ) router = DefaultRouter() @@ -30,6 +31,7 @@ router.register("evaluation-purpose", EvaluationPurposeView, basename="evaluatio router.register("property-rights", PropertyRightsView, basename="property-rights") router.register("ownership-form", OwnershipFormView, basename="ownership-form") router.register("evaluation-request", EvaluationrequestView, basename="evaluation-request") +router.register("admin-evaluation-request", AdminEvaluationrequestView, basename="admin-evaluation-request") router.register("reference-item", ReferenceitemView, basename="reference-item") router.register("valuation-document", ValuationDocumentView, basename="valuation-document") router.register("evaluation-report", EvaluationReportView, basename="evaluation-report") diff --git a/core/apps/evaluation/views/request.py b/core/apps/evaluation/views/request.py index 338efed..acd4b76 100644 --- a/core/apps/evaluation/views/request.py +++ b/core/apps/evaluation/views/request.py @@ -54,3 +54,37 @@ class EvaluationrequestView(BaseViewSetMixin, ModelViewSet): 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 = [ + "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.select_related("value_determined", "rate_goal", "property_rights", "form_ownership", "user").order_by("-created_at")