Signup: fix signup for users without user info.

This commit is contained in:
Tom Hacohen 2020-05-31 16:53:33 +03:00
parent 15cd41db83
commit c2337f244d

View File

@ -15,6 +15,7 @@
import base64 import base64
from django.core.files.base import ContentFile from django.core.files.base import ContentFile
from django.core import exceptions as django_exceptions
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.db import transaction from django.db import transaction
from rest_framework import serializers from rest_framework import serializers
@ -351,6 +352,9 @@ class UserSignupSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = User model = User
fields = (User.USERNAME_FIELD, User.EMAIL_FIELD) fields = (User.USERNAME_FIELD, User.EMAIL_FIELD)
extra_kwargs = {
'username': {'validators': []}, # We specifically validate in SignupSerializer
}
class AuthenticationSignupSerializer(serializers.Serializer): class AuthenticationSignupSerializer(serializers.Serializer):
@ -370,6 +374,11 @@ class AuthenticationSignupSerializer(serializers.Serializer):
raise serializers.ValidationError('User already exists') raise serializers.ValidationError('User already exists')
instance.set_unusable_password() instance.set_unusable_password()
try:
instance.clean_fields()
except django_exceptions.ValidationError as e:
raise serializers.ValidationError(e)
# FIXME: send email verification # FIXME: send email verification
models.UserInfo.objects.create(**validated_data, owner=instance) models.UserInfo.objects.create(**validated_data, owner=instance)