fixed account detail

This commit is contained in:
Anatoly 2019-09-10 18:03:01 +03:00
parent 530ce38527
commit 434df203da
2 changed files with 20 additions and 15 deletions

View File

@ -4,9 +4,11 @@ from django.contrib.auth import password_validation as password_validators
from fcm_django.models import FCMDevice from fcm_django.models import FCMDevice
from rest_framework import exceptions from rest_framework import exceptions
from rest_framework import serializers from rest_framework import serializers
from rest_framework import validators as rest_validators
from account import models, tasks from account import models, tasks
from utils import exceptions as utils_exceptions from utils import exceptions as utils_exceptions
from utils import methods as utils_methods
# User serializers # User serializers
@ -17,12 +19,17 @@ class UserSerializer(serializers.ModelSerializer):
fullname = serializers.CharField(source='get_full_name', read_only=True) fullname = serializers.CharField(source='get_full_name', read_only=True)
# REQUEST # REQUEST
username = serializers.CharField(required=False) username = serializers.CharField(
validators=(rest_validators.UniqueValidator(queryset=models.User.objects.all()),),
write_only=True,
required=False)
first_name = serializers.CharField(required=False, write_only=True) first_name = serializers.CharField(required=False, write_only=True)
last_name = serializers.CharField(required=False, write_only=True) last_name = serializers.CharField(required=False, write_only=True)
image = serializers.ImageField(required=False) image = serializers.ImageField(required=False)
cropped_image = serializers.ImageField(required=False) cropped_image = serializers.ImageField(required=False)
email = serializers.EmailField(required=False) email = serializers.EmailField(
validators=(rest_validators.UniqueValidator(queryset=models.User.objects.all()),),
required=False)
newsletter = serializers.BooleanField(required=False) newsletter = serializers.BooleanField(required=False)
class Meta: class Meta:
@ -43,14 +50,13 @@ class UserSerializer(serializers.ModelSerializer):
"""Validate email value""" """Validate email value"""
if value == self.instance.email: if value == self.instance.email:
raise serializers.ValidationError() raise serializers.ValidationError()
if models.User.objects.filter(email=value).exists():
raise serializers.ValidationError()
return value return value
def validate_username(self, value): def validate_username(self, value):
"""Validate username""" """Custom username validation"""
if models.User.objects.filter(username=value).exists(): valid = utils_methods.username_validator(username=value)
raise serializers.ValidationError() if not valid:
raise utils_exceptions.NotValidUsernameError()
return value return value
def validate(self, attrs): def validate(self, attrs):

View File

@ -21,8 +21,7 @@ class SignupSerializer(serializers.ModelSerializer):
# REQUEST # REQUEST
username = serializers.CharField( username = serializers.CharField(
validators=(rest_validators.UniqueValidator(queryset=account_models.User.objects.all()),), validators=(rest_validators.UniqueValidator(queryset=account_models.User.objects.all()),),
write_only=True write_only=True)
)
password = serializers.CharField(write_only=True) password = serializers.CharField(write_only=True)
email = serializers.EmailField( email = serializers.EmailField(
validators=(rest_validators.UniqueValidator(queryset=account_models.User.objects.all()),), validators=(rest_validators.UniqueValidator(queryset=account_models.User.objects.all()),),
@ -38,21 +37,21 @@ class SignupSerializer(serializers.ModelSerializer):
'newsletter' 'newsletter'
) )
def validate_username(self, data): def validate_username(self, value):
"""Custom username validation""" """Custom username validation"""
valid = utils_methods.username_validator(username=data) valid = utils_methods.username_validator(username=value)
if not valid: if not valid:
raise utils_exceptions.NotValidUsernameError() raise utils_exceptions.NotValidUsernameError()
return data return value
def validate_password(self, data): def validate_password(self, value):
"""Custom password validation""" """Custom password validation"""
try: try:
password_validators.validate_password(password=data) password_validators.validate_password(password=value)
except serializers.ValidationError as e: except serializers.ValidationError as e:
raise serializers.ValidationError(str(e)) raise serializers.ValidationError(str(e))
else: else:
return data return value
def create(self, validated_data): def create(self, validated_data):
"""Override create method""" """Override create method"""