Guest User

Untitled

a guest
Feb 3rd, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1. class UserViewSet(viewsets.ModelViewSet):
  2. """ API endpoint that allows users to be viewed or edited. """
  3.  
  4. serializer_class = UserSerializer
  5. queryset = UserRegister.objects.all()
  6. authentication_classes = (TokenAuthentication,)
  7. permission_classes = (permissions.UpdateRegister,)
  8.  
  9. class UserRegisterManager(BaseUserManager):
  10. """ Helps django work with our custom user model """
  11.  
  12. def createUser(self, email, name, password=None):
  13. """ Creates a new user profile object """
  14.  
  15. if not email:
  16. raise ValueError("User must have an email address.")
  17.  
  18. email = self.normalize_email(email)
  19. user = self.model(email=email, name=name)
  20.  
  21. user.set_password(password) # set_password helps to convert str into hash
  22. user.save(using=self._db)
  23. return user
  24.  
  25. def create_superuser(self, email, name, password):
  26. """ Creates and saves a new superuser with given details. """
  27. user = self.create_user(email, name, password)
  28. user.is_superuser = True
  29. user.is_staff = True
  30. user.save(using=self._db)
  31. return user
  32.  
  33.  
  34. class UserRegister(AbstractBaseUser, PermissionsMixin):
  35. """ Represents a 'user register' inside our system """
  36. email = models.EmailField(max_length=255, unique=True)
  37. name = models.CharField(max_length=255)
  38. is_active = models.BooleanField(default=True) # user is currently active or not
  39. is_staff = models.BooleanField(default=False)
  40.  
  41. objects = UserRegisterManager()
  42.  
  43. USERNAME_FIELD = 'email'
  44. REQUIRED_FIELDS = ['name']
  45.  
  46. def get_full_name(self):
  47. """ Used to get user fullname """
  48.  
  49. return self.name
  50.  
  51. def get_short_name(self):
  52. """ Used to get user short name """
  53.  
  54. return self.name
  55.  
  56. def __str__(self):
  57. """ Django uses this when it need to convert the object to a string """
  58.  
  59. return self.email
  60.  
  61. AttributeError: 'UserRegisterManager' object has no attribute 'create_user'
  62.  
  63. class UpdateRegister(permissions.BasePermission):
  64. """ Allow user to edit their own profile. """
  65.  
  66. def has_object_permissions(self, request, view, obj):
  67. """ Check user is trying to edit their own profile. """
  68.  
  69. if request.method in permissions.SAFE_METHODS:
  70. return True
  71.  
  72. return obj.id == request.user.id
  73.  
  74. class UserSerializer(serializers.ModelSerializer):
  75. class Meta:
  76. model = UserRegister
  77. fields = ('id', 'name', 'email', 'password')
  78. extra_kwargs = {'password': {'write_only': True}}
  79.  
  80. def create(self, validated_data):
  81. """ Create and return a new user"""
  82.  
  83. user = UserRegister(
  84. email=validated_data['email'],
  85. name=validated_data['name'],
  86. )
  87. user.set_password(validated_data['password'])
  88. user.save()
  89.  
  90. return user
Add Comment
Please, Sign In to add comment