From 965328edd44ed3320520162c40e9c1d358738d4e Mon Sep 17 00:00:00 2001 From: xoliqberdiyev Date: Sat, 18 Apr 2026 16:31:53 +0500 Subject: [PATCH] fix --- .../0029_autoevaluationmodel_user.py | 21 +++++++++++++++++++ core/apps/evaluation/models/auto.py | 8 +++++++ .../serializers/auto/AutoEvaluation.py | 20 ++++++++++++++++-- core/apps/evaluation/views/auto.py | 3 +++ 4 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 core/apps/evaluation/migrations/0029_autoevaluationmodel_user.py diff --git a/core/apps/evaluation/migrations/0029_autoevaluationmodel_user.py b/core/apps/evaluation/migrations/0029_autoevaluationmodel_user.py new file mode 100644 index 0000000..370c1db --- /dev/null +++ b/core/apps/evaluation/migrations/0029_autoevaluationmodel_user.py @@ -0,0 +1,21 @@ +# Generated by Django 5.2.7 on 2026-04-18 11:28 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('evaluation', '0028_autoevaluationmodel_appraisers'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.AddField( + model_name='autoevaluationmodel', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='auto_evaluations_user', to=settings.AUTH_USER_MODEL, verbose_name='user'), + ), + ] diff --git a/core/apps/evaluation/models/auto.py b/core/apps/evaluation/models/auto.py index ccabdff..dc94672 100644 --- a/core/apps/evaluation/models/auto.py +++ b/core/apps/evaluation/models/auto.py @@ -22,6 +22,14 @@ from .vehicle import VehicleModel class AutoEvaluationModel(AbstractBaseModel): + user = models.ForeignKey( + "accounts.User", + on_delete=models.SET_NULL, + related_name="auto_evaluations_user", + verbose_name=_("user"), + null=True, + blank=True, + ) valuation = models.OneToOneField( ValuationModel, on_delete=models.CASCADE, diff --git a/core/apps/evaluation/serializers/auto/AutoEvaluation.py b/core/apps/evaluation/serializers/auto/AutoEvaluation.py index 39e6711..56ac56a 100644 --- a/core/apps/evaluation/serializers/auto/AutoEvaluation.py +++ b/core/apps/evaluation/serializers/auto/AutoEvaluation.py @@ -16,6 +16,7 @@ class BaseAutoevaluationSerializer(serializers.ModelSerializer): value_determined = ListReferenceitemSerializer(read_only=True) property_rights = ListReferenceitemSerializer(read_only=True) form_ownership = ListReferenceitemSerializer(read_only=True) + user = serializers.SerializerMethodField(method_name="get_user", read_only=True) class Meta: model = AutoEvaluationModel @@ -48,8 +49,19 @@ class BaseAutoevaluationSerializer(serializers.ModelSerializer): "rate_type", "property_rights", "form_ownership", + "user", ] + def get_user(self, obj): + request = self.context.get('request') + return { + "id": obj.user.id, + "phone": obj.user.phone, + "first_name": obj.user.first_name, + "last_name": obj.user.last_name, + "avatar": request.build_absolute_uri(obj.user.avatar.url) if obj.user.avatar else None + } + class ListAutoevaluationSerializer(BaseAutoevaluationSerializer): class Meta(BaseAutoevaluationSerializer.Meta): @@ -317,7 +329,6 @@ class CreateAutoevaluationSerializer(serializers.ModelSerializer): def validate(self, attrs): owner_type = attrs.get("object_owner_type") - if owner_type == 1: required_fields = { "object_owner_individual_person_f_name": "Ismi", @@ -343,10 +354,15 @@ class CreateAutoevaluationSerializer(serializers.ModelSerializer): return attrs + def create(self, validated_data): + user = self.context.get('request').user + validated_data['user'] = user + return super().create(validated_data) + class AutoEvaluationAppraisersSerializer(serializers.Serializer): ids = serializers.ListField(child=serializers.IntegerField()) - + def validate(self, data): if not data.get("ids"): raise serializers.ValidationError("Appraisers IDs are required.") diff --git a/core/apps/evaluation/views/auto.py b/core/apps/evaluation/views/auto.py index 3e29f53..adc3971 100644 --- a/core/apps/evaluation/views/auto.py +++ b/core/apps/evaluation/views/auto.py @@ -80,6 +80,9 @@ class AutoEvaluationView(BaseViewSetMixin, ModelViewSet): "partial_update": UpdateAutoevaluationSerializer, } + def serializer_context(self): + return self.serializer_class(context={'request': self.request}) + @extend_schema(tags=["AutoEvaluation"]) class AutoEvaluationSetAppraisersView(GenericAPIView):