from django.contrib.auth.models import BaseUserManager from django.db.models import Manager class UserManager(BaseUserManager): def create_user( self, email: str = None, fullname: str = None, password: str = None, **extra_fields ): email = UserManager.normalize_email(email) user = self.model( email=email, fullname=fullname, **extra_fields ) user.set_password(password) user.save(using=self._db) return user def create_superuser(self, email, fullname, password): user = self.create_user( email=email, fullname=fullname, password=password, ) user.is_admin = True user.is_staff = True user.is_superuser = True user.is_active = True user.user_type="super_admin" user.save(using=self._db) return user def change_user_type(self, new_user_type): # حذف گروه‌های فعلی old_group_name = f"{self.user_type.capitalize()} Group" old_group = Group.objects.filter(name=old_group_name).first() if old_group: self.groups.remove(old_group) # تغییر نوع کاربر self.user_type = new_user_type # افزودن گروه جدید new_group_name = f"{new_user_type.capitalize()} Group" new_group, _ = Group.objects.get_or_create(name=new_group_name) self.groups.add(new_group) # ذخیره تغییرات self.save() class ProfessorUserManager(UserManager): def get_queryset(self): return super().get_queryset().filter(user_type="professor") class ClientUserManager(UserManager): def get_queryset(self): return super().get_queryset().filter(user_type="client") class AdminUserManager(UserManager): def get_queryset(self): return super().get_queryset().filter(user_type="admin") class SuperAdminUserManager(UserManager): def get_queryset(self): return super().get_queryset().filter(user_type="super_admin") class StudentUserManager(UserManager): def get_queryset(self): return super().get_queryset().filter(user_type="student")