Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class UserViewSet(viewsets.ModelViewSet):
- """ API endpoint that allows users to be viewed or edited. """
- serializer_class = UserSerializer
- queryset = UserRegister.objects.all()
- authentication_classes = (TokenAuthentication,)
- permission_classes = (permissions.UpdateRegister,)
- class UserRegisterManager(BaseUserManager):
- """ Helps django work with our custom user model """
- def createUser(self, email, name, password=None):
- """ Creates a new user profile object """
- if not email:
- raise ValueError("User must have an email address.")
- email = self.normalize_email(email)
- user = self.model(email=email, name=name)
- user.set_password(password) # set_password helps to convert str into hash
- user.save(using=self._db)
- return user
- def create_superuser(self, email, name, password):
- """ Creates and saves a new superuser with given details. """
- user = self.create_user(email, name, password)
- user.is_superuser = True
- user.is_staff = True
- user.save(using=self._db)
- return user
- class UserRegister(AbstractBaseUser, PermissionsMixin):
- """ Represents a 'user register' inside our system """
- email = models.EmailField(max_length=255, unique=True)
- name = models.CharField(max_length=255)
- is_active = models.BooleanField(default=True) # user is currently active or not
- is_staff = models.BooleanField(default=False)
- objects = UserRegisterManager()
- USERNAME_FIELD = 'email'
- REQUIRED_FIELDS = ['name']
- def get_full_name(self):
- """ Used to get user fullname """
- return self.name
- def get_short_name(self):
- """ Used to get user short name """
- return self.name
- def __str__(self):
- """ Django uses this when it need to convert the object to a string """
- return self.email
- AttributeError: 'UserRegisterManager' object has no attribute 'create_user'
- class UpdateRegister(permissions.BasePermission):
- """ Allow user to edit their own profile. """
- def has_object_permissions(self, request, view, obj):
- """ Check user is trying to edit their own profile. """
- if request.method in permissions.SAFE_METHODS:
- return True
- return obj.id == request.user.id
- class UserSerializer(serializers.ModelSerializer):
- class Meta:
- model = UserRegister
- fields = ('id', 'name', 'email', 'password')
- extra_kwargs = {'password': {'write_only': True}}
- def create(self, validated_data):
- """ Create and return a new user"""
- user = UserRegister(
- email=validated_data['email'],
- name=validated_data['name'],
- )
- user.set_password(validated_data['password'])
- user.save()
- return user
Add Comment
Please, Sign In to add comment