Advertisement
Guest User

Serializers

a guest
Mar 13th, 2018
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1.  
  2. class UserCreateSerializer(ModelSerializer):
  3. password = CharField(write_only=True)
  4. password_2 = CharField(write_only=True)
  5. phone = CharField(required=True)
  6. email = CharField(required=False)
  7.  
  8. class Meta:
  9. model = User
  10. fields = [
  11. 'phone',
  12. 'email',
  13. 'password',
  14. 'password_2',
  15. 'first_name'
  16. ]
  17.  
  18. def validate(self, value):
  19. data = self.get_initial()
  20. user = User.objects.filter(username=data.get('phone'))
  21. if user.exists():
  22. raise ValidationError('Пользователь с данным телефоном уже зарегестрирован')
  23.  
  24. return value
  25.  
  26. def validate_password(self, value):
  27. data = self.get_initial()
  28. password = data.get('password')
  29. password2 = data.get('password_2')
  30. if password != password2:
  31. raise ValidationError('Пароли должны совпадать!')
  32. return value
  33.  
  34. def create(self, validated_data):
  35. phone = validated_data['phone']
  36. email = validated_data.get('email', '')
  37. password = validated_data['password']
  38. name = validated_data.get('first_name','')
  39.  
  40. request = self.context.get('request')
  41. user = None
  42. if request and hasattr(request, 'user'):
  43. user = request.user
  44.  
  45. user.username = phone
  46. user.email = email
  47. user.first_name = name
  48. user.set_password(password)
  49. user.save()
  50.  
  51. login(request, user)
  52.  
  53. return validated_data
  54.  
  55.  
  56. class UserLoginSerializer(ModelSerializer):
  57. phone = CharField()
  58. password = CharField(write_only=True)
  59.  
  60. class Meta:
  61. model = User
  62. fields = [
  63. 'phone',
  64. 'password',
  65. ]
  66.  
  67.  
  68. class UserSerializer(ModelSerializer):
  69. is_anon = serializers.SerializerMethodField()
  70.  
  71. def get_is_anon(self, obj):
  72. if 'anon' in obj.username:
  73. return True
  74. else:
  75. return False
  76.  
  77. class Meta:
  78. model = User
  79. fields = ('id', 'username', 'last_login', 'first_name', 'last_name', 'email', 'date_joined', 'is_anon')
  80.  
  81.  
  82. class UserInfoUpdateSerializer(ModelSerializer):
  83. username = CharField(required=False)
  84. partial = True
  85.  
  86. def validate_username(self, username):
  87. if not username:
  88. return username
  89. if User.objects.filter(username=username).exists():
  90. raise ValidationError('Такой телефон уже есть')
  91. return username
  92.  
  93. class Meta:
  94. model = User
  95. fields = [
  96. 'first_name',
  97. 'last_name',
  98. 'email',
  99. 'username',
  100. ]
  101.  
  102.  
  103. class ChangePasswordSerializer(serializers.Serializer):
  104. old_password = serializers.CharField(required=True)
  105. new_password = serializers.CharField(required=True)
  106. new_password_2 = serializers.CharField(required=True)
  107.  
  108.  
  109. class SMSRequestSerializer(serializers.Serializer):
  110. phone = serializers.CharField(max_length=200)
  111.  
  112. def post(self, validated_data):
  113. phone = validated_data.get('phone', '')
  114. return phone
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement