Advertisement
Guest User

Untitled

a guest
Sep 6th, 2016
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.62 KB | None | 0 0
  1. class UserCreateSerializer(ModelSerializer):
  2. email = EmailField()
  3. username = CharField()
  4. first_name = CharField(required=False)
  5. last_name = CharField(required=False)
  6. password = CharField()
  7. confirm_password = CharField()
  8. class Meta:
  9. model = User
  10. fields = [
  11. 'username',
  12. 'email',
  13. 'first_name',
  14. 'last_name',
  15. 'password',
  16. 'confirm_password'
  17. ]
  18. extra_kwargs = {"password": {"write_only": True}}
  19.  
  20. def validate(self, data):
  21. if not data.get('password') or not data.get('confirm_password'):
  22. raise ValidationError('Please enter a password and cofirm it')
  23. if data.get('password') != data.get('confirm_password'):
  24. raise ValidationError('Password must match')
  25. return data
  26.  
  27.  
  28. def validate_email(self, email):
  29. existing_email = User.objects.filter(email=email).exists()
  30. print('existing',existing_email)
  31. if existing_email:
  32. raise ValidationError("Someone with that email address has already registered. Was it you?")
  33. return email
  34.  
  35.  
  36. def create(self, validated_data):
  37. username = validated_data['username']
  38. first_name = validated_data['first_name']
  39. last_name = validated_data['last_name']
  40. email = validated_data['email']
  41. password = validated_data['password']
  42. confirm_password = validated_data['password']
  43. user_obj = User(
  44. username = username,
  45. first_name = first_name,
  46. last_name = last_name,
  47. email = email
  48. )
  49. user_obj.set_password(password)
  50. user_obj.save()
  51. if user_obj:
  52. expire_seconds = oauth2_settings.user_settings['ACCESS_TOKEN_EXPIRE_SECONDS']
  53. scopes = oauth2_settings.user_settings['SCOPES']
  54.  
  55. application = Application.objects.get(name="Foodie")
  56. expires = datetime.now() + timedelta(seconds=expire_seconds)
  57. access_token = AccessToken.objects.create(user=user_obj,
  58. application=application,
  59. token = generate_token(),
  60. expires=expires,
  61. scope=scopes)
  62. return validated_data
  63.  
  64. class UserLoginSerializer(ModelSerializer):
  65. # token = CharField(allow_blank=True, read_only=True)
  66. username = CharField()
  67. # email = EmailField(label='Email Address')
  68. class Meta:
  69. model = User
  70. fields = [
  71. 'username',
  72. # 'email',
  73. 'password',
  74. # 'token',
  75.  
  76. ]
  77. extra_kwargs = {"password":
  78. {"write_only": True}
  79. }
  80. def validate(self, data):
  81. return data
  82.  
  83. class UserCreateAPI(CreateAPIView):
  84. serializer_class = UserCreateSerializer
  85. queryset = User.objects.all()
  86. permission_classes = [AllowAny]
  87.  
  88. class UserLoginAPI(APIView): # i could not solve login using oAuth2
  89. permission_classes = [AllowAny]
  90. serializer_class = UserLoginSerializer
  91.  
  92. def post(self, request, *args, **kwargs):
  93. # access_token = AccessToken.objects.get(token=request.data.get('token'), expires__gt=timezone.now())
  94. data = request.data
  95. serializer = UserLoginSerializer(data=data)
  96. if serializer.is_valid(raise_exception=True):
  97. new_data = serializer.data
  98. return Response(new_data, status=status.HTTP_200_OK)
  99. return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement