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. 16
      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):
def get_queryset(self):
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'),
),
]

16
apps/account/models/groups.py

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

Loading…
Cancel
Save