Advertisement
Guest User

Untitled

a guest
Dec 8th, 2016
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.92 KB | None | 0 0
  1. from django.db import models
  2. from django.contrib.auth.models import PermissionsMixin, Permission
  3. from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
  4. from django.contrib.contenttypes.models import ContentType
  5. from django.utils.translation import ugettext_lazy as _
  6.  
  7.  
  8. class UserManager(BaseUserManager):
  9. use_in_migrations = True
  10.  
  11. def _create_user(self, user_id, password=None, **extra_fields):
  12. """
  13. Creates and saves a User with the given email and password.
  14. """
  15. if not user_id:
  16. raise ValueError('The user_id must be set')
  17. if not password:
  18. password = user_id
  19. if 'permissions' in extra_fields:
  20. p = extra_fields['permissions']
  21. del extra_fields['permissions']
  22. user = self.model(user_id=user_id, **extra_fields)
  23. user.set_password(password)
  24. user.save(using=self._db)
  25. user.user_permissions.add(*p)
  26. return user
  27.  
  28. def create_superuser(self, user_id, password=None, **extra_fields):
  29. extra_fields['is_superuser'] = True
  30. extra_fields['is_staff'] = True
  31. extra_fields['user_role'] = 1 # ADMIN = 1
  32. extra_fields['permissions'] = Permission.objects.all()
  33. return self._create_user(user_id, password, **extra_fields)
  34.  
  35. def create_student(self, user_id, password=None, **extra_fields):
  36. extra_fields['is_superuser'] = False
  37. extra_fields['is_staff'] = False
  38. extra_fields['user_role'] = 2 # STUDENT = 2
  39. return self._create_user(user_id, password, **extra_fields)
  40.  
  41. def create_teacher(self, user_id, password=None, **extra_fields):
  42. extra_fields['is_superuser'] = False
  43. extra_fields['is_staff'] = False
  44. extra_fields['user_role'] = 3 # TEACHER = 3
  45. return self._create_user(user_id, password, **extra_fields)
  46.  
  47. def create_controller(self, user_id, password=None, **extra_fields):
  48. extra_fields['is_superuser'] = False
  49. extra_fields['is_staff'] = True
  50. extra_fields['user_role'] = 4 # CONTROLLER = 4
  51. accounts_content_type = ContentType.objects.get(app_label='accounts')
  52. perms = Permission.objects.filter(content_type=accounts_content_type)
  53. extra_fields['permissions'] = perms
  54. return self._create_user(user_id, password, **extra_fields)
  55.  
  56.  
  57. class User(AbstractBaseUser, PermissionsMixin):
  58. user_id = models.CharField(_('user id'), max_length=8, unique=True)
  59. email = models.EmailField(_('email address'), unique=True, blank=True)
  60. first_name = models.CharField(_('first name'), max_length=30, blank=True)
  61. last_name = models.CharField(_('last name'), max_length=30, blank=True)
  62. date_joined = models.DateTimeField(_('date joined'), auto_now_add=True)
  63. is_active = models.BooleanField(_('is active'), default=True)
  64. is_staff = models.BooleanField(_('is staff'), default=False)
  65.  
  66. ADMIN = 1
  67. STUDENT = 2
  68. TEACHER = 3
  69. CONTROLLER = 4
  70. user_role = models.SmallIntegerField(_('user role'), choices=(
  71. (ADMIN, 'Admin'),
  72. (STUDENT, 'Student'),
  73. (TEACHER, 'Teacher'),
  74. (CONTROLLER, 'Controller'),
  75. ))
  76.  
  77. USERNAME_FIELD = 'user_id'
  78. REQUIRED_FIELDS = []
  79.  
  80. objects = UserManager()
  81.  
  82. class Meta:
  83. verbose_name = _('user')
  84. verbose_name_plural = _('users')
  85.  
  86. def get_full_name(self):
  87. """
  88. Returns the first_name plus the last_name, with a space in between.
  89. """
  90. full_name = '%s %s' % (self.first_name, self.last_name)
  91. return full_name.strip()
  92.  
  93. def get_short_name(self):
  94. return self.first_name
  95.  
  96. def get_all_admins(self):
  97. return self.objects.filter(user_role=1) # ADMIN = 1
  98.  
  99. def get_all_students(self):
  100. return self.objects.filter(user_role=2) # STUDENT = 2
  101.  
  102. def get_all_teachers(self):
  103. return self.objects.filter(user_role=3) # TEACHER = 3
  104.  
  105. def get_all_controllers(self):
  106. return self.objects.filter(user_role=4) # CONTROLLER = 4
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement