Added logic to not include username in the Login and UserDetail Serializer when: ACCOUNT_USER_MODEL_USERNAME_FIELD is None

This commit is contained in:
Mahaffey 2018-02-05 16:19:49 -05:00
parent a3057b7aa1
commit 077d868493

View File

@ -17,7 +17,9 @@ UserModel = get_user_model()
class LoginSerializer(serializers.Serializer): class LoginSerializer(serializers.Serializer):
username = serializers.CharField(required=False, allow_blank=True) if settings.ACCOUNT_USER_MODEL_USERNAME_FIELD is not None:
username = serializers.CharField(required=False, allow_blank=True)
email = serializers.EmailField(required=False, allow_blank=True) email = serializers.EmailField(required=False, allow_blank=True)
password = serializers.CharField(style={'input_type': 'password'}) password = serializers.CharField(style={'input_type': 'password'})
@ -34,7 +36,6 @@ class LoginSerializer(serializers.Serializer):
def _validate_username(self, username, password): def _validate_username(self, username, password):
user = None user = None
if username and password: if username and password:
user = authenticate(username=username, password=password) user = authenticate(username=username, password=password)
else: else:
@ -57,6 +58,7 @@ class LoginSerializer(serializers.Serializer):
return user return user
def validate(self, attrs): def validate(self, attrs):
username = attrs.get('username') username = attrs.get('username')
email = attrs.get('email') email = attrs.get('email')
password = attrs.get('password') password = attrs.get('password')
@ -114,7 +116,6 @@ class TokenSerializer(serializers.ModelSerializer):
""" """
Serializer for Token model. Serializer for Token model.
""" """
class Meta: class Meta:
model = TokenModel model = TokenModel
fields = ('key',) fields = ('key',)
@ -124,10 +125,16 @@ class UserDetailsSerializer(serializers.ModelSerializer):
""" """
User model w/o password User model w/o password
""" """
class Meta: if settings.ACCOUNT_USER_MODEL_USERNAME_FIELD is None:
model = UserModel class Meta:
fields = ('pk', 'username', 'email', 'first_name', 'last_name') model = UserModel
read_only_fields = ('email', ) fields = ('pk', 'email', 'first_name', 'last_name')
read_only_fields = ('email', )
else:
class Meta:
model = UserModel
fields = ('pk', 'username', 'email', 'first_name', 'last_name')
read_only_fields = ('email', )
class JWTSerializer(serializers.Serializer): class JWTSerializer(serializers.Serializer):