Browse Source

new role added for Consultant , updated userproxy and manager file for it

master
Mohsen Taba 2 months ago
parent
commit
6c71546c3a
  1. 4
      apps/account/manager.py
  2. 31
      apps/account/migrations/0004_consultantuser_alter_user_user_type.py
  3. 208
      apps/account/models/groups.py
  4. 5
      apps/account/models/user.py

4
apps/account/manager.py

@ -86,3 +86,7 @@ class SuperAdminUserManager(UserManager):
class StudentUserManager(UserManager): class StudentUserManager(UserManager):
def get_queryset(self): def get_queryset(self):
return super().get_queryset().filter(user_type="student") return super().get_queryset().filter(user_type="student")
class ConsultantUserManager(UserManager):
def get_queryset(self, *args, **kwargs):
return super().get_queryset(*args, **kwargs).filter(user_type='consultant')

31
apps/account/migrations/0004_consultantuser_alter_user_user_type.py

@ -0,0 +1,31 @@
# Generated by Django 5.2.12 on 2026-05-18 14:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('account', '0003_alter_clientuser_options_and_more'),
]
operations = [
migrations.CreateModel(
name='ConsultantUser',
fields=[
],
options={
'verbose_name': 'Consultant User',
'verbose_name_plural': 'Consultant Users',
'proxy': True,
'indexes': [],
'constraints': [],
},
bases=('account.user',),
),
migrations.AlterField(
model_name='user',
name='user_type',
field=models.CharField(choices=[('professor', 'Professor'), ('client', 'Client'), ('student', 'Student'), ('admin', 'Admin'), ('super_admin', 'Super Admin'), ('consultant', 'Consultant')], default='client', help_text='Type of the user.', max_length=20, verbose_name='User Type'),
),
]

208
apps/account/models/groups.py

@ -1,96 +1,112 @@
from django.utils.translation import gettext_lazy as _
from apps.account.models import User
from apps.account.manager import *
from django.contrib.auth.models import Group
class ProfessorUser(User):
objects = ProfessorUserManager()
def save(self, *args, **kwargs):
self.user_type = User.UserType.PROFESSOR
super().save(*args, **kwargs)
group, _ = Group.objects.get_or_create(name="Professor Group")
self.groups.add(group)
class Meta:
proxy = True
verbose_name = _("Professor User")
verbose_name_plural = _("Professor Users")
class ClientUser(User):
objects = ClientUserManager()
def save(self, *args, **kwargs):
self.user_type = User.UserType.CLIENT
super().save(*args, **kwargs)
group, _ = Group.objects.get_or_create(name="Client Group")
self.groups.add(group)
class Meta:
proxy = True
verbose_name = _('User')
verbose_name_plural = _('Users')
ordering = ('-id',)
class AdminUser(User):
objects = AdminUserManager()
def save(self, *args, **kwargs):
self.user_type = User.UserType.ADMIN
super().save(*args, **kwargs)
group, _ = Group.objects.get_or_create(name="Admin Group")
self.groups.add(group)
class Meta:
proxy = True
verbose_name = _("Admin User")
verbose_name_plural = _("Admin Users")
class SuperAdminUser(User):
objects = SuperAdminUserManager()
def save(self, *args, **kwargs):
self.user_type = User.UserType.SUPER_ADMIN
self.is_staff = True
super().save(*args, **kwargs)
class Meta:
proxy = True
verbose_name = _("Super Admin User")
verbose_name_plural = _("Super Admin Users")
class StudentUser(User):
objects = StudentUserManager()
def save(self, *args, **kwargs):
self.user_type = User.UserType.STUDENT
super().save(*args, **kwargs)
group, _ = Group.objects.get_or_create(name="Student Group")
self.groups.add(group)
class Meta:
proxy = True
verbose_name = _("Student User")
verbose_name_plural = _("Student Users")
from django.utils.translation import gettext_lazy as _
from apps.account.models import User
from apps.account.manager import *
from django.contrib.auth.models import Group
class ProfessorUser(User):
objects = ProfessorUserManager()
def save(self, *args, **kwargs):
self.user_type = User.UserType.PROFESSOR
super().save(*args, **kwargs)
group, _ = Group.objects.get_or_create(name="Professor Group")
self.groups.add(group)
class Meta:
proxy = True
verbose_name = _("Professor User")
verbose_name_plural = _("Professor Users")
class ClientUser(User):
objects = ClientUserManager()
def save(self, *args, **kwargs):
self.user_type = User.UserType.CLIENT
super().save(*args, **kwargs)
group, _ = Group.objects.get_or_create(name="Client Group")
self.groups.add(group)
class Meta:
proxy = True
verbose_name = _('User')
verbose_name_plural = _('Users')
ordering = ('-id',)
class AdminUser(User):
objects = AdminUserManager()
def save(self, *args, **kwargs):
self.user_type = User.UserType.ADMIN
super().save(*args, **kwargs)
group, _ = Group.objects.get_or_create(name="Admin Group")
self.groups.add(group)
class Meta:
proxy = True
verbose_name = _("Admin User")
verbose_name_plural = _("Admin Users")
class SuperAdminUser(User):
objects = SuperAdminUserManager()
def save(self, *args, **kwargs):
self.user_type = User.UserType.SUPER_ADMIN
self.is_staff = True
super().save(*args, **kwargs)
class Meta:
proxy = True
verbose_name = _("Super Admin User")
verbose_name_plural = _("Super Admin Users")
class StudentUser(User):
objects = StudentUserManager()
def save(self, *args, **kwargs):
self.user_type = User.UserType.STUDENT
super().save(*args, **kwargs)
group, _ = Group.objects.get_or_create(name="Student Group")
self.groups.add(group)
class Meta:
proxy = True
verbose_name = _("Student User")
verbose_name_plural = _("Student Users")
class ConsultantUser(User):
objects = ConsultantUserManager()
def save(self, *args, **kwargs):
self.user_type = User.UserType.CONSULTANT
super().save(*args, **kwargs)
group, _ = Group.objects.get_or_create(name="Consultant Group")
self.groups.add(group)
class Meta:
proxy = True
verbose_name = _("Consultant User")
verbose_name_plural = _("Consultant Users")

5
apps/account/models/user.py

@ -24,6 +24,7 @@ class User(AbstractUser):
STUDENT = 'student', _("Student") STUDENT = 'student', _("Student")
ADMIN = 'admin', _('Admin') ADMIN = 'admin', _('Admin')
SUPER_ADMIN = 'super_admin', _('Super Admin') SUPER_ADMIN = 'super_admin', _('Super Admin')
CONSULTANT = 'consultant', _('Consultant')
class GenderChoices(models.TextChoices): class GenderChoices(models.TextChoices):
MALE = 'male', _('Male') MALE = 'male', _('Male')
@ -129,6 +130,8 @@ class User(AbstractUser):
return self.UserType.STUDENT return self.UserType.STUDENT
elif self.groups.filter(name="Professor Group").exists(): elif self.groups.filter(name="Professor Group").exists():
return self.UserType.PROFESSOR return self.UserType.PROFESSOR
elif self.groups.filter(name="Consultant Group").exists():
return self.UserType.CONSULTANT
else: else:
return self.UserType.CLIENT return self.UserType.CLIENT
@ -137,6 +140,8 @@ class User(AbstractUser):
"""نقش اصلی کاربر بر اساس اولویت""" """نقش اصلی کاربر بر اساس اولویت"""
if self.groups.filter(name="Professor Group").exists(): if self.groups.filter(name="Professor Group").exists():
return self.UserType.PROFESSOR return self.UserType.PROFESSOR
elif self.groups.filter(name="Consultant Group").exists():
return self.UserType.CONSULTANT
elif self.groups.filter(name="Student Group").exists(): elif self.groups.filter(name="Student Group").exists():
return self.UserType.STUDENT return self.UserType.STUDENT
elif self.groups.filter(name="Admin Group").exists(): elif self.groups.filter(name="Admin Group").exists():

Loading…
Cancel
Save