change user register api
This commit is contained in:
@@ -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),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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']
|
||||||
|
|||||||
Reference in New Issue
Block a user