Advertisement
Guest User

Untitled

a guest
Mar 21st, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.57 KB | None | 0 0
  1. class CustomUserManager(BaseUserManager):
  2.  
  3. def _create_user(self, username, email, password,
  4. is_staff, is_superuser, **extra_fields):
  5. """
  6. Creates and saves a User with the given username, email and password.
  7. """
  8. if not username:
  9. raise ValueError('The given username must be set')
  10. email = self.normalize_email(email)
  11. user = self.model(username=username, email=email,
  12. is_staff=is_staff, is_active=True,
  13. is_superuser=is_superuser, **extra_fields)
  14. user.set_password(password)
  15. user.save(using=self._db)
  16. return user
  17.  
  18. def create_user(self, username, email=None, password=None,
  19. **extra_fields):
  20. return self._create_user(username, email, password, False, False,
  21. **extra_fields)
  22.  
  23. def create_superuser(self, username, email, password, **extra_fields):
  24. return self._create_user(username, email, password, True, True,
  25. **extra_fields)
  26.  
  27.  
  28. def myoverridenmeta(name, bases, adict):
  29. newClass = type(name, bases, adict)
  30. for field in newClass._meta.fields:
  31. if field.attname == 'last_login':
  32. field.column = 'lastlogin'
  33. field.db_column = 'lastlogin'
  34. return newClass
  35.  
  36.  
  37. class UserProfile(AbstractBaseUser):
  38.  
  39. class Meta:
  40. """
  41. meta class for user role, defining ordering and db table name
  42. """
  43. ordering = ["name"]
  44. db_table = 'user'
  45.  
  46. username = models.CharField(max_length=254, unique=True)
  47. name = models.CharField(max_length=254, blank=True)
  48. email = models.EmailField(blank=True, unique=True)
  49. createdon = models.DateTimeField(auto_now_add=True)
  50. updatedon = models.DateTimeField(auto_now=True)
  51. is_active = models.BooleanField(default=True, db_column='status')
  52. is_admin = models.BooleanField(default=False, db_column='isadmin')
  53. is_staff = models.BooleanField(default=False, db_column='isstaff')
  54. is_superuser = models.BooleanField(default=False, db_column='issuperuser')
  55.  
  56. USERNAME_FIELD = 'username'
  57. REQUIRED_FIELDS = ['email']
  58.  
  59. objects = CustomUserManager()
  60.  
  61. def get_full_name(self):
  62. return self.username
  63.  
  64. def get_short_name(self):
  65. return self.username
  66.  
  67. __metaclass__ = myoverridenmeta
  68.  
  69. class UserList(generics.ListCreateAPIView):
  70. """
  71. ListAPI view for get list of Users and create User instance
  72. """
  73. queryset = UserProfile.objects.all()
  74. model = UserProfile
  75. serializer_class = UserSerializer
  76. paginate_by = 10
  77. permission_classes = (IsAuthenticated, IsAdminUser,)
  78.  
  79. def get_queryset(self):
  80. """
  81. Method to get query params and return search results for User
  82. :return: Search Result
  83. """
  84. queryset = UserProfile.objects.all()
  85. search_query = self.request.query_params.get('user', None)
  86.  
  87. if search_query is not None:
  88. queryset = queryset.filter(username__istartswith=search_query)
  89. queryset = queryset.order_by('username')
  90. return queryset
  91.  
  92.  
  93. class UserDetail(generics.RetrieveUpdateAPIView):
  94. """
  95. Class based API view to Retrieve, Update a User instance
  96. """
  97. queryset = UserProfile.objects.all()
  98. model = UserProfile
  99. serializer_class = UserSerializer
  100. permission_classes = (IsAuthenticated, UserIsOwnerOrAdmin,)
  101.  
  102.  
  103. class UserDelete(generics.DestroyAPIView):
  104.  
  105. queryset = UserProfile.objects.all()
  106. model = UserProfile
  107. serializer_class = UserSerializer
  108. permission_classes = (IsAuthenticated, IsAdminUser,)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement