Signup: use the get_user_queryset function when checking if user exists.
This commit is contained in:
parent
af86d877f2
commit
46b4f08afa
@ -394,7 +394,9 @@ class AuthenticationSignupSerializer(serializers.Serializer):
|
||||
|
||||
with transaction.atomic():
|
||||
try:
|
||||
instance = User.objects.get_by_natural_key(user_data['username'])
|
||||
view = self.context.get('view', None)
|
||||
user_queryset = get_user_queryset(User.objects.all(), view)
|
||||
instance = user_queryset.get(**{User.USERNAME_FIELD: user_data['username'].lower()})
|
||||
except User.DoesNotExist:
|
||||
# Create the user and save the casing the user chose as the first name
|
||||
instance = User.objects.create_user(**user_data, password=None, first_name=user_data['username'])
|
||||
|
@ -601,6 +601,13 @@ class AuthenticationViewSet(viewsets.ViewSet):
|
||||
def get_queryset(self):
|
||||
return get_user_queryset(User.objects.all(), self)
|
||||
|
||||
def get_serializer_context(self):
|
||||
return {
|
||||
'request': self.request,
|
||||
'format': self.format_kwarg,
|
||||
'view': self
|
||||
}
|
||||
|
||||
def login_response_data(self, user):
|
||||
return {
|
||||
'token': AuthToken.objects.create(user=user).key,
|
||||
@ -612,7 +619,7 @@ class AuthenticationViewSet(viewsets.ViewSet):
|
||||
|
||||
@action_decorator(detail=False, methods=['POST'])
|
||||
def signup(self, request, *args, **kwargs):
|
||||
serializer = AuthenticationSignupSerializer(data=request.data)
|
||||
serializer = AuthenticationSignupSerializer(data=request.data, context=self.get_serializer_context())
|
||||
serializer.is_valid(raise_exception=True)
|
||||
user = serializer.save()
|
||||
|
||||
@ -748,6 +755,13 @@ class TestAuthenticationViewSet(viewsets.ViewSet):
|
||||
renderer_classes = BaseViewSet.renderer_classes
|
||||
parser_classes = BaseViewSet.parser_classes
|
||||
|
||||
def get_serializer_context(self):
|
||||
return {
|
||||
'request': self.request,
|
||||
'format': self.format_kwarg,
|
||||
'view': self
|
||||
}
|
||||
|
||||
def list(self, request, *args, **kwargs):
|
||||
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
|
||||
|
||||
@ -768,7 +782,7 @@ class TestAuthenticationViewSet(viewsets.ViewSet):
|
||||
if hasattr(user, 'userinfo'):
|
||||
user.userinfo.delete()
|
||||
|
||||
serializer = AuthenticationSignupSerializer(data=request.data)
|
||||
serializer = AuthenticationSignupSerializer(data=request.data, context=self.get_serializer_context())
|
||||
serializer.is_valid(raise_exception=True)
|
||||
serializer.save()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user