From 04be4eb976148bbe2460fd6241f7d6b2d3fb25b4 Mon Sep 17 00:00:00 2001 From: xoliqberdiyev Date: Wed, 6 May 2026 16:14:38 +0500 Subject: [PATCH] feat: add customer fields for auto evaluation model --- .../0048_autoevaluation_customer_fields.py | 56 +++++++++++++++++++ core/apps/evaluation/models/auto.py | 50 +++++++++++++++++ .../serializers/auto/AutoEvaluation.py | 32 +++++++++++ core/apps/evaluation/views/didox.py | 4 +- 4 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 core/apps/evaluation/migrations/0048_autoevaluation_customer_fields.py diff --git a/core/apps/evaluation/migrations/0048_autoevaluation_customer_fields.py b/core/apps/evaluation/migrations/0048_autoevaluation_customer_fields.py new file mode 100644 index 0000000..9b785f8 --- /dev/null +++ b/core/apps/evaluation/migrations/0048_autoevaluation_customer_fields.py @@ -0,0 +1,56 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("evaluation", "0047_auto_full_empty_weight"), + ] + + operations = [ + migrations.AddField( + model_name="autoevaluationmodel", + name="customer_type", + field=models.IntegerField( + blank=True, + choices=[(1, "Jismoniy shaxs"), (2, "Yuridik shaxs")], + null=True, + verbose_name="customer type", + ), + ), + migrations.AddField( + model_name="autoevaluationmodel", + name="customer_individual_person_f_name", + field=models.CharField(blank=True, max_length=100, null=True, verbose_name="customer first name"), + ), + migrations.AddField( + model_name="autoevaluationmodel", + name="customer_individual_person_l_name", + field=models.CharField(blank=True, max_length=100, null=True, verbose_name="customer last name"), + ), + migrations.AddField( + model_name="autoevaluationmodel", + name="customer_individual_person_p_name", + field=models.CharField(blank=True, max_length=100, null=True, verbose_name="customer patronymic"), + ), + migrations.AddField( + model_name="autoevaluationmodel", + name="customer_individual_person_passport_num", + field=models.CharField(blank=True, max_length=20, null=True, verbose_name="customer passport number"), + ), + migrations.AddField( + model_name="autoevaluationmodel", + name="customer_legal_entity", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="customer legal entity name"), + ), + migrations.AddField( + model_name="autoevaluationmodel", + name="customer_legal_inn", + field=models.CharField(blank=True, max_length=20, null=True, verbose_name="customer legal entity INN"), + ), + migrations.AddField( + model_name="autoevaluationmodel", + name="customer_residence", + field=models.CharField(blank=True, max_length=255, null=True, verbose_name="customer residence"), + ), + ] diff --git a/core/apps/evaluation/models/auto.py b/core/apps/evaluation/models/auto.py index f5a4fa2..8e45621 100644 --- a/core/apps/evaluation/models/auto.py +++ b/core/apps/evaluation/models/auto.py @@ -200,6 +200,56 @@ class AutoEvaluationModel(AbstractBaseModel): related_name='evaluation_auto_rate_type' ) + # ── Step 3 — Buyurtmachi ma'lumotlari ──────────────────────────── + customer_type = models.IntegerField( + verbose_name=_("customer type"), + choices=ObjectOwnerType.choices, + blank=True, + null=True, + ) + customer_individual_person_f_name = models.CharField( + verbose_name=_("customer first name"), + max_length=100, + blank=True, + null=True, + ) + customer_individual_person_l_name = models.CharField( + verbose_name=_("customer last name"), + max_length=100, + blank=True, + null=True, + ) + customer_individual_person_p_name = models.CharField( + verbose_name=_("customer patronymic"), + max_length=100, + blank=True, + null=True, + ) + customer_individual_person_passport_num = models.CharField( + verbose_name=_("customer passport number"), + max_length=20, + blank=True, + null=True, + ) + customer_legal_entity = models.CharField( + verbose_name=_("customer legal entity name"), + max_length=255, + blank=True, + null=True, + ) + customer_legal_inn = models.CharField( + verbose_name=_("customer legal entity INN"), + max_length=20, + blank=True, + null=True, + ) + customer_residence = models.CharField( + verbose_name=_("customer residence"), + max_length=255, + blank=True, + null=True, + ) + # ── Step 4 — Avtomobil ma'lumotlari ───────────────────────────── tex_passport_serie_num = models.CharField( verbose_name=_("tech passport series and number"), diff --git a/core/apps/evaluation/serializers/auto/AutoEvaluation.py b/core/apps/evaluation/serializers/auto/AutoEvaluation.py index b117737..51dff6a 100644 --- a/core/apps/evaluation/serializers/auto/AutoEvaluation.py +++ b/core/apps/evaluation/serializers/auto/AutoEvaluation.py @@ -62,6 +62,14 @@ class BaseAutoevaluationSerializer(serializers.ModelSerializer): "object_owner_legal_entity", "object_owner_legal_inn", "object_owner_residence", + "customer_type", + "customer_individual_person_f_name", + "customer_individual_person_l_name", + "customer_individual_person_p_name", + "customer_individual_person_passport_num", + "customer_legal_entity", + "customer_legal_inn", + "customer_residence", "tex_passport_serie_num", "tex_passport_files", "rating_goal", @@ -201,6 +209,14 @@ class UpdateAutoevaluationSerializer(serializers.ModelSerializer): "object_owner_legal_entity", "object_owner_legal_inn", "object_owner_residence", + "customer_type", + "customer_individual_person_f_name", + "customer_individual_person_l_name", + "customer_individual_person_p_name", + "customer_individual_person_passport_num", + "customer_legal_entity", + "customer_legal_inn", + "customer_residence", "value_determined", "rate_type", "assessment_task_type", @@ -350,6 +366,14 @@ class CreateAutoevaluationSerializer(serializers.ModelSerializer): "object_owner_legal_entity", "object_owner_legal_inn", "object_owner_residence", + "customer_type", + "customer_individual_person_f_name", + "customer_individual_person_l_name", + "customer_individual_person_p_name", + "customer_individual_person_passport_num", + "customer_legal_entity", + "customer_legal_inn", + "customer_residence", "value_determined", "rate_type", "assessment_task_type", @@ -485,6 +509,14 @@ class AutoEvaluationModelSerializer(serializers.ModelSerializer): "object_owner_legal_entity", "object_owner_legal_inn", "object_owner_residence", + "customer_type", + "customer_individual_person_f_name", + "customer_individual_person_l_name", + "customer_individual_person_p_name", + "customer_individual_person_passport_num", + "customer_legal_entity", + "customer_legal_inn", + "customer_residence", "value_determined", "rate_type", "assessment_task_type", diff --git a/core/apps/evaluation/views/didox.py b/core/apps/evaluation/views/didox.py index 155acac..7321846 100644 --- a/core/apps/evaluation/views/didox.py +++ b/core/apps/evaluation/views/didox.py @@ -12,7 +12,7 @@ from core.services.didox import DidoxService class DidoxCompanyInfoAPIView(GenericAPIView): - authentication_classes = [] + # authentication_classes = [] permission_classes = [IsAuthenticated] @extend_schema( @@ -44,7 +44,7 @@ class DidoxCompanyInfoAPIView(GenericAPIView): if not data: return Response( - {"detail": "Didox service unavailable"}, + {"detail": "Didox service unavailable", "data": data}, status=status.HTTP_502_BAD_GATEWAY )