Advertisement
Guest User

Untitled

a guest
Aug 3rd, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. from rest_framework import serializers
  2. from django.contrib.auth import password_validation
  3.  
  4.  
  5. class PasswordField(serializers.CharField):
  6.  
  7. def __init__(self, *args, **kwargs):
  8. kwargs['write_only'] = True
  9. kwargs['style'] = {'input_type': 'password'}
  10. self.validate_password = kwargs.pop('validate_password', True)
  11. self.user = kwargs.pop('user', None)
  12. self.user_from_request = kwargs.pop('get_user_from_request', True)
  13. super(PasswordField, self).__init__(*args, **kwargs)
  14.  
  15. def set_user(self, user):
  16. self.user = user
  17.  
  18. def get_user(self):
  19. if not self.user and self.user_from_request:
  20. if self.context:
  21. request = self.context.get('request')
  22. if request.user.is_authenticated():
  23. self.user = request.user
  24. return self.user
  25.  
  26. def to_internal_value(self, data):
  27. if self.validate_password:
  28. password_validation.validate_password(data, user=self.get_user())
  29. return super(PasswordField, self).to_internal_value(data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement