diff --git a/core/apps/evaluation/serializers/auto/AutoEvaluation.py b/core/apps/evaluation/serializers/auto/AutoEvaluation.py index e3407de..fcd4d6e 100644 --- a/core/apps/evaluation/serializers/auto/AutoEvaluation.py +++ b/core/apps/evaluation/serializers/auto/AutoEvaluation.py @@ -1,18 +1,19 @@ import re from django.contrib.auth import get_user_model - from rest_framework import serializers -from core.apps.evaluation.models import AutoEvaluationModel,ReferenceitemModel, EvaluationrequestModel -from core.apps.evaluation.serializers.reference import ListReferenceitemSerializer from core.apps.evaluation.choices.request import RequestStatus +from core.apps.evaluation.models import AutoEvaluationModel, ReferenceitemModel, EvaluationrequestModel +from core.apps.evaluation.serializers.reference import ListReferenceitemSerializer User = get_user_model() + class BaseAutoevaluationSerializer(serializers.ModelSerializer): status_display = serializers.CharField(source="get_status_display", read_only=True) object_type_display = serializers.CharField(source="get_object_type_display", read_only=True, default=None) - object_owner_type_display = serializers.CharField(source="get_object_owner_type_display", read_only=True, default=None) + object_owner_type_display = serializers.CharField(source="get_object_owner_type_display", read_only=True, + default=None) rate_type = ListReferenceitemSerializer(read_only=True) value_determined = ListReferenceitemSerializer(read_only=True) property_rights = ListReferenceitemSerializer(read_only=True) @@ -72,6 +73,7 @@ class ListAutoevaluationSerializer(BaseAutoevaluationSerializer): class RetrieveAutoevaluationSerializer(BaseAutoevaluationSerializer): car_type_display = serializers.CharField(source="get_car_type_display", read_only=True, default=None) car_wheel_display = serializers.CharField(source="get_car_wheel_display", read_only=True, default=None) + # object_location_highways_display = serializers.CharField( # source="get_object_location_highways_display", read_only=True, default=None # ) @@ -141,7 +143,6 @@ class UpdateAutoevaluationSerializer(serializers.ModelSerializer): allow_null=True, ) - class Meta: model = AutoEvaluationModel fields = [ @@ -222,6 +223,7 @@ class UpdateAutoevaluationSerializer(serializers.ModelSerializer): return attrs + class CreateAutoevaluationSerializer(serializers.ModelSerializer): property_rights = serializers.PrimaryKeyRelatedField( queryset=ReferenceitemModel.objects.all(), @@ -254,7 +256,6 @@ class CreateAutoevaluationSerializer(serializers.ModelSerializer): allow_null=True, ) - class Meta: model = AutoEvaluationModel fields = [ @@ -356,3 +357,9 @@ class AutoEvaluationAppraisersSerializer(serializers.Serializer): raise serializers.ValidationError("Invalid appraisers IDs.") data['users'] = users return data + + +class AutoEvaluationSerializer(ModelSerializer): + class Meta: + model = AutoEvaluationModel + fields = ("brand", "brand_model", "year", "color", "transmission", "condition", "fuel_type", "mileage") diff --git a/core/apps/evaluation/urls.py b/core/apps/evaluation/urls.py index a530b3c..ab62e18 100644 --- a/core/apps/evaluation/urls.py +++ b/core/apps/evaluation/urls.py @@ -29,6 +29,7 @@ from .views import ( DidoxCompanyInfoAPIView, TechPassportAPIView, EvaluationStatusChange, + AutoEvaluationRequestView ) router = DefaultRouter() @@ -53,13 +54,15 @@ router.register("vehicle", VehicleView, basename="vehicle") router.register("valuation", ValuationView, basename="valuation") router.register("property-owner", PropertyOwnerView, basename="property-owner") router.register("customer", CustomerView, basename="customer") +router.register("auto-evaluation-request", AutoEvaluationRequestView, basename="auto") urlpatterns = [ path("", include(router.urls)), path("auto-evaluation/appraisers/", include( [ path("/list/", AutoEvaluationListAppraisersView.as_view(), name="auto-evaluation-list-appraisers"), path("/set/", AutoEvaluationSetAppraisersView.as_view(), name="auto-evaluation-set-appraisers"), - path("/remove/", AutoEvaluationRemoveAppraisersView.as_view(), name="auto-evaluation-remove-appraisers"), + path("/remove/", AutoEvaluationRemoveAppraisersView.as_view(), + name="auto-evaluation-remove-appraisers"), ] )), path( diff --git a/core/apps/evaluation/views/auto.py b/core/apps/evaluation/views/auto.py index adc3971..6e42239 100644 --- a/core/apps/evaluation/views/auto.py +++ b/core/apps/evaluation/views/auto.py @@ -154,3 +154,20 @@ class AutoEvaluationListAppraisersView(GenericAPIView): return self.get_paginated_response(serializer.data) except Exception as e: return Response({"error": str(e)}, status=500) + +class AutoEvaluationRequestView(APIView): + + def post(self, request): + serializer = AutoEvaluationSerializer(data=request.data) + + if serializer.is_valid(): + data = serializer.validated_data + url = "https://uzxarid.felixits.uz/api/v1/ad/price-estimate/" + response = requests.post(url, json=data) + + return Response({ + "success": True, + "external_status": response.status_code, + "data": response.json(), + }) + return Response({"error": serializer.errors}, status=400)