Advertisement
Guest User

Untitled

a guest
Dec 28th, 2017
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. class TokenCreateSerializer(serializers.Serializer):
  2. password = serializers.CharField(
  3. required=False, style={'input_type': 'password'}
  4. )
  5.  
  6. default_error_messages = {
  7. 'invalid_credentials': constants.INVALID_CREDENTIALS_ERROR,
  8. 'inactive_account': constants.INACTIVE_ACCOUNT_ERROR,
  9. }
  10.  
  11. def __init__(self, *args, **kwargs):
  12. super(TokenCreateSerializer, self).__init__(*args, **kwargs)
  13. self.user = None
  14. self.fields[User.USERNAME_FIELD] = serializers.CharField(
  15. required=False
  16. )
  17.  
  18. def validate(self, attrs):
  19. self.user = authenticate(
  20. username=attrs.get(User.USERNAME_FIELD),
  21. password=attrs.get('password')
  22. )
  23.  
  24. self._validate_user_exists(self.user)
  25. self._validate_user_is_active(self.user)
  26. return attrs
  27.  
  28. def _validate_user_exists(self, user):
  29. if not user:
  30. self.fail('invalid_credentials')
  31.  
  32. def _validate_user_is_active(self, user):
  33. if not user.is_active:
  34. self.fail('inactive_account')
  35.  
  36. class CustomTokenCreateView(cutils.ActionViewMixin, generics.GenericAPIView):
  37. """
  38. Use this endpoint to obtain user authentication token.
  39. """
  40. serializer_class = TokenCreateSerializer
  41. permission_classes = [permissions.AllowAny]
  42.  
  43. def _action(self, serializer):
  44. token = utils.login_user(self.request, serializer.user)
  45. token_serializer_class = settings.SERIALIZERS.token
  46. content = {
  47. 'Token': token_serializer_class(token).data["auth_token"],
  48. 'promptmsg': 'You have successfully login',
  49. 'status': '200',
  50. 'first_name': self.request.user.first_name,
  51. 'last_name': self.request.user.last_name
  52. }
  53. return Response(
  54. data=content,
  55. status=status.HTTP_200_OK,
  56. )
  57.  
  58. AttributeError at /logintest/
  59. 'AnonymousUser' object has no attribute 'first_name'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement