Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class My_User_Info_Manager(BaseUserManager):
- def create_user(self, email, name=None, password=None, phone_number=None, reseller=None):
- user = self.model(
- email = self.normalize_email(email),
- name = name,
- phone_number = phone_number,
- reseller = reseller,
- )
- user.set_password(password)
- user.save(using=self._db)
- return user
- def create_superuser(self, email, name=None, password=None):
- user = self.create_user(
- email, name=name, password=password
- )
- user.is_superuser = True
- user.is_staff = True
- user.save(using=self._db)
- return user
- class User_Info(AbstractBaseUser):
- email = models.EmailField(max_length=225,
- unique=True, db_index=True, primary_key=True)
- name = models.CharField(max_length=255, null=False)
- phone_number = models.CharField(max_length=30, null=True)
- reseller = models.CharField(max_length=255, null=True)
- username = "Required for FTP Services"
- ### attributes and methods for superuser to access django admin
- is_superuser = models.BooleanField(default=False)
- is_staff = models.BooleanField(default=False)
- def has_perm(self, perm, obj=None):
- return self.is_superuser
- def has_module_perms(self, app_label):
- return self.is_superuser
- objects = My_User_Info_Manager()
- USERNAME_FIELD = 'email'
- class UserInfoSerializer(serializers.HyperlinkedModelSerializer):
- class Meta:
- model = User_Info # get model
- # add the fields
- fields = '__all__'
- class UserInfoViewSet(viewsets.ModelViewSet):
- """
- Provides `list`, `create`, `retrieve`, `update`, `partial_update` and `destroy` actions for the Users
- model.
- Overrides 'create' action hash the password from the POST payload.
- The User_Info model is a profile of a seller that can be used to log into the seller side of the web
- app. It contains relevant information about the reseller themselves.
- """
- queryset = User_Info.objects.all()
- serializer_class = UserInfoSerializer
- permission_classes = [IsAuthenticated]
- # override create method to has the password
- def create(self, request):
- request.data['password'] = make_password(request.data['password']) #hash password
- return super().create(request)
- # urls for ViewSets
- router = DefaultRouter()
- router.register(r'accounts', accounts_views.AccountsViewSet)
- router.register(r'activity', activity_views.ActivityViewSet)
- router.register(r'customers', customers_views.CustomersViewSet)
- router.register(r'users', users_views.UserInfoViewSet)
- router.register(r'products', products_views.ProductsViewSet)
- router.register(r'payments', payments_views.PaymentsViewSet)
- urlpatterns = [
- path('', include(router.urls)),
- path('admin/', admin.site.urls),
- path(r'api-token-auth/', obtain_jwt_token),
- path(r'api-token-refresh/', refresh_jwt_token),
- path('tax/', include('tax.urls')),
- # path('cdr/', include('cdr.urls')),
- ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement