From 08e6bf695d45b61fd35a5071fc8cd3e80748c8a9 Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Sat, 30 Aug 2025 11:53:27 +0500 Subject: [PATCH] change user register api --- ..._alter_user_passport_id_alter_user_pnfl.py | 23 +++++++++++++++++++ core/apps/accounts/models.py | 4 ++-- core/apps/accounts/serializers.py | 18 ++++++++++----- core/apps/accounts/views.py | 2 +- 4 files changed, 38 insertions(+), 9 deletions(-) create mode 100644 core/apps/accounts/migrations/0004_alter_user_passport_id_alter_user_pnfl.py diff --git a/core/apps/accounts/migrations/0004_alter_user_passport_id_alter_user_pnfl.py b/core/apps/accounts/migrations/0004_alter_user_passport_id_alter_user_pnfl.py new file mode 100644 index 0000000..1d43fe3 --- /dev/null +++ b/core/apps/accounts/migrations/0004_alter_user_passport_id_alter_user_pnfl.py @@ -0,0 +1,23 @@ +# Generated by Django 5.2 on 2025-08-30 11:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('accounts', '0003_user_passport_id_user_pnfl_alter_user_id'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='passport_id', + field=models.CharField(blank=True, max_length=20, null=True), + ), + migrations.AlterField( + model_name='user', + name='pnfl', + field=models.CharField(blank=True, max_length=20, null=True), + ), + ] diff --git a/core/apps/accounts/models.py b/core/apps/accounts/models.py index c4cb996..8996696 100644 --- a/core/apps/accounts/models.py +++ b/core/apps/accounts/models.py @@ -8,8 +8,8 @@ from core.apps.accounts.manager import UserManager class User(AbstractUser, BaseModel): full_name = models.CharField(max_length=200) email = models.EmailField(unique=True) - passport_id = models.CharField(max_length=20, null=True) - pnfl = models.CharField(max_length=20, null=True) + passport_id = models.CharField(max_length=20, null=True, blank=True) + pnfl = models.CharField(max_length=20, null=True, blank=True) first_name = None last_name = None diff --git a/core/apps/accounts/serializers.py b/core/apps/accounts/serializers.py index 81ed1bb..4042714 100644 --- a/core/apps/accounts/serializers.py +++ b/core/apps/accounts/serializers.py @@ -7,17 +7,23 @@ from core.apps.accounts.cache import get_user_credentials, get_user_confirmation class RegisterSerializer(serializers.Serializer): - passport_id = serializers.CharField() - pnfl = serializers.CharField() + passport_id = serializers.CharField(required=False) + pnfl = serializers.CharField(required=False) email = serializers.EmailField() password = serializers.CharField() def validate_email(self, value): if User.objects.filter(email=value).exists(): - raise serializers.ValidationError("User with this email already exists") - user_data = get_user_credentials(email=value) - if user_data: - raise serializers.ValidationError("User with this email already exists") + request = self.context.get('request') + lang = request.META.get('HTTP_ACCEPT_LANGUAGE', 'en').split(",")[0] + + messages = { + 'en': "User with this email already exists", + 'ru': "Пользователь с таким адресом электронной почты уже существует", + 'uz': "Bu email bilan foydalanuvchi allaqachon mavjud", + } + msg = messages.get(lang, messages['en']) + raise serializers.ValidationError(msg) return value diff --git a/core/apps/accounts/views.py b/core/apps/accounts/views.py index 6be802c..a91e637 100644 --- a/core/apps/accounts/views.py +++ b/core/apps/accounts/views.py @@ -16,7 +16,7 @@ class RegisterApiView(generics.GenericAPIView): queryset = models.User.objects.all() def post(self, request): - serializer = self.serializer_class(data=request.data) + serializer = self.serializer_class(data=request.data, context={"request": request}) if serializer.is_valid(raise_exception=True): data = serializer.validated_data email = data['email']