Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.05 KB | None | 0 0
  1. class My_User_Info_Manager(BaseUserManager):
  2. def create_user(self, email, name=None, password=None, phone_number=None, reseller=None):
  3. user = self.model(
  4. email = self.normalize_email(email),
  5. name = name,
  6. phone_number = phone_number,
  7. reseller = reseller,
  8.  
  9. )
  10. user.set_password(password)
  11. user.save(using=self._db)
  12. return user
  13.  
  14. def create_superuser(self, email, name=None, password=None):
  15. user = self.create_user(
  16. email, name=name, password=password
  17. )
  18. user.is_superuser = True
  19. user.is_staff = True
  20. user.save(using=self._db)
  21. return user
  22.  
  23.  
  24.  
  25. class User_Info(AbstractBaseUser):
  26.  
  27. email = models.EmailField(max_length=225,
  28. unique=True, db_index=True, primary_key=True)
  29.  
  30. name = models.CharField(max_length=255, null=False)
  31.  
  32.  
  33. phone_number = models.CharField(max_length=30, null=True)
  34. reseller = models.CharField(max_length=255, null=True)
  35. username = "Required for FTP Services"
  36.  
  37. ### attributes and methods for superuser to access django admin
  38. is_superuser = models.BooleanField(default=False)
  39. is_staff = models.BooleanField(default=False)
  40.  
  41. def has_perm(self, perm, obj=None):
  42. return self.is_superuser
  43.  
  44. def has_module_perms(self, app_label):
  45. return self.is_superuser
  46.  
  47.  
  48. objects = My_User_Info_Manager()
  49.  
  50. USERNAME_FIELD = 'email'
  51.  
  52. class UserInfoSerializer(serializers.HyperlinkedModelSerializer):
  53.  
  54. class Meta:
  55. model = User_Info # get model
  56.  
  57. # add the fields
  58. fields = '__all__'
  59.  
  60. class UserInfoViewSet(viewsets.ModelViewSet):
  61. """
  62. Provides `list`, `create`, `retrieve`, `update`, `partial_update` and `destroy` actions for the Users
  63. model.
  64.  
  65. Overrides 'create' action hash the password from the POST payload.
  66.  
  67. The User_Info model is a profile of a seller that can be used to log into the seller side of the web
  68. app. It contains relevant information about the reseller themselves.
  69. """
  70.  
  71. queryset = User_Info.objects.all()
  72. serializer_class = UserInfoSerializer
  73. permission_classes = [IsAuthenticated]
  74.  
  75. # override create method to has the password
  76. def create(self, request):
  77. request.data['password'] = make_password(request.data['password']) #hash password
  78. return super().create(request)
  79.  
  80. # urls for ViewSets
  81. router = DefaultRouter()
  82. router.register(r'accounts', accounts_views.AccountsViewSet)
  83. router.register(r'activity', activity_views.ActivityViewSet)
  84. router.register(r'customers', customers_views.CustomersViewSet)
  85. router.register(r'users', users_views.UserInfoViewSet)
  86. router.register(r'products', products_views.ProductsViewSet)
  87. router.register(r'payments', payments_views.PaymentsViewSet)
  88.  
  89. urlpatterns = [
  90. path('', include(router.urls)),
  91. path('admin/', admin.site.urls),
  92. path(r'api-token-auth/', obtain_jwt_token),
  93. path(r'api-token-refresh/', refresh_jwt_token),
  94. path('tax/', include('tax.urls')),
  95. # path('cdr/', include('cdr.urls')),
  96.  
  97. ]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement