Guest User

Untitled

a guest
Jun 8th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. class UserManger(BaseUserManager):
  2.  
  3. use_in_migrations = True
  4.  
  5. def _create_user(self, email, password, **extra_fields):
  6. if not email:
  7. raise ValueError('You must give email address')
  8. email = self.normalize_email(email)
  9. user = self.model(email=email, **extra_fields)
  10. user.set_password(password)
  11. user.save(using=self._db)
  12. return user
  13.  
  14. def create_user(self, email, password=None, **extra_fields):
  15. extra_fields.setdefault('is_staff', False)
  16. extra_fields.setdefault('is_superuser', False)
  17. return self._create_user(email, password, **extra_fields)
  18.  
  19. def create_superuser(self, email, password, **extra_fields):
  20. extra_fields.setdefault('is_staff', True)
  21. extra_fields.setdefault('is_superuser', True)
  22. return self._create_user(email, password, **extra_fields)
  23.  
  24.  
  25. class User(AbstractBaseUser):
  26.  
  27. email = models.EmailField(unique=True)
  28. nick_name = models.CharField(max_length=50)
  29. is_active = models.BooleanField(default=True)
  30. is_staff = models.BooleanField(default=False)
  31. is_superuser = models.BooleanField(default=False)
  32. created_at = models.DateTimeField(auto_now_add=True)
  33.  
  34. USERNAME_FIELD = 'email'
  35. REQUIRED_FIELDS = []
  36.  
  37. objects = UserManger()
  38.  
  39.  
  40. def __str__(self):
  41. return self.email
  42.  
  43. def get_full_name(self):
  44. return self.email
  45.  
  46. def get_short_name(self):
  47. return self.email
  48.  
  49. def has_perm(self, perm, obj=None):
  50. return True
  51.  
  52. def has_module_perms(self, app_label):
  53. return True
  54.  
  55. class RegisterSerializer(serializers.Serializer):
  56.  
  57. email = serializers.EmailField(required=allauth_settings.EMAIL_REQUIRED)
  58. password1 = serializers.CharField(write_only=True)
  59. password2 = serializers.CharField(write_only=True)
  60.  
  61. def validate_email(self, email):
  62. email = get_adapter().clean_email(email)
  63. if allauth_settings.UNIQUE_EMAIL:
  64. if email and email_address_exists(email):
  65. raise serializers.ValidationError(
  66. _("A user is already registered with this e-mail address."))
  67. return email
  68.  
  69. def validate_password1(self, password):
  70. return get_adapter().clean_password(password)
  71.  
  72. def validate(self, data):
  73. if data['password1'] != data['password2']:
  74. raise serializers.ValidationError(_("password fields didn't match."))
  75. return data
  76.  
  77. def get_cleaned_data(self):
  78. return {
  79. 'email': self.validated_data.get('email', ''),
  80. 'password1': self.validated_data.get('password1', ''),
  81. }
  82.  
  83. def save(self, request):
  84. adapter = get_adapter()
  85. user = adapter.new_user(request)
  86. self.cleaned_data = self.get_cleaned_data()
  87. adapter.save_user(request, user, self)
  88. setup_user_email(request, user, [])
  89. return user
  90.  
  91. class UserCreateView(APIView):
  92.  
  93. def post(self, request):
  94. serializer = RegisterSerializer(data=request.data)
  95. if serializer.is_valid():
  96. user = serializer.save()
  97. if user:
  98. token = Token.objects.create(user=user)
  99. json = serializer.data
  100. json['token'] = token.key
  101. return Response(json, status=status.HTTP_201_CREATED)
  102.  
  103. return Response(data=serializer.errors ,status=status.HTTP_400_BAD_REQUEST)
Add Comment
Please, Sign In to add comment