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")