add AutoEvaluationRequestView

This commit is contained in:
Shaxobff
2026-04-22 14:23:52 +05:00
parent 64993805af
commit b8021c7728
3 changed files with 34 additions and 7 deletions

View File

@@ -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")

View File

@@ -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("<int:id>/list/", AutoEvaluationListAppraisersView.as_view(), name="auto-evaluation-list-appraisers"),
path("<int:id>/set/", AutoEvaluationSetAppraisersView.as_view(), name="auto-evaluation-set-appraisers"),
path("<int:id>/remove/", AutoEvaluationRemoveAppraisersView.as_view(), name="auto-evaluation-remove-appraisers"),
path("<int:id>/remove/", AutoEvaluationRemoveAppraisersView.as_view(),
name="auto-evaluation-remove-appraisers"),
]
)),
path(

View File

@@ -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)