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 rest_framework import exceptions
from rest_framework import serializers
from rest_framework import validators as rest_validators
from account import models, tasks
from utils import exceptions as utils_exceptions
from utils import methods as utils_methods
# User serializers
@ -17,12 +19,17 @@ class UserSerializer(serializers.ModelSerializer):
fullname = serializers.CharField(source='get_full_name', read_only=True)
# 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)
last_name = serializers.CharField(required=False, write_only=True)
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)
class Meta:
@ -43,14 +50,13 @@ class UserSerializer(serializers.ModelSerializer):
"""Validate email value"""
if value == self.instance.email:
raise serializers.ValidationError()
if models.User.objects.filter(email=value).exists():
raise serializers.ValidationError()
return value
def validate_username(self, value):
"""Validate username"""
if models.User.objects.filter(username=value).exists():
raise serializers.ValidationError()
"""Custom username validation"""
valid = utils_methods.username_validator(username=value)
if not valid:
raise utils_exceptions.NotValidUsernameError()
return value
def validate(self, attrs):

View File

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