change user register api

This commit is contained in:
behruz-dev
2025-08-30 11:53:27 +05:00
parent 7e4ed4cbeb
commit 08e6bf695d
4 changed files with 38 additions and 9 deletions

View File

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

View File

@@ -8,8 +8,8 @@ from core.apps.accounts.manager import UserManager
class User(AbstractUser, BaseModel): class User(AbstractUser, BaseModel):
full_name = models.CharField(max_length=200) full_name = models.CharField(max_length=200)
email = models.EmailField(unique=True) email = models.EmailField(unique=True)
passport_id = 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) pnfl = models.CharField(max_length=20, null=True, blank=True)
first_name = None first_name = None
last_name = None last_name = None

View File

@@ -7,17 +7,23 @@ from core.apps.accounts.cache import get_user_credentials, get_user_confirmation
class RegisterSerializer(serializers.Serializer): class RegisterSerializer(serializers.Serializer):
passport_id = serializers.CharField() passport_id = serializers.CharField(required=False)
pnfl = serializers.CharField() pnfl = serializers.CharField(required=False)
email = serializers.EmailField() email = serializers.EmailField()
password = serializers.CharField() password = serializers.CharField()
def validate_email(self, value): def validate_email(self, value):
if User.objects.filter(email=value).exists(): if User.objects.filter(email=value).exists():
raise serializers.ValidationError("User with this email already exists") request = self.context.get('request')
user_data = get_user_credentials(email=value) lang = request.META.get('HTTP_ACCEPT_LANGUAGE', 'en').split(",")[0]
if user_data:
raise serializers.ValidationError("User with this email already exists") 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 return value

View File

@@ -16,7 +16,7 @@ class RegisterApiView(generics.GenericAPIView):
queryset = models.User.objects.all() queryset = models.User.objects.all()
def post(self, request): 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): if serializer.is_valid(raise_exception=True):
data = serializer.validated_data data = serializer.validated_data
email = data['email'] email = data['email']