from django.utils.translation import gettext_lazy as _ from apps.account.models.user import User from apps.account.manager import ClientUserManager, AdminUserManager, SuperAdminUserManager from django.contrib.auth.models import Group 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 = _('Client User') verbose_name_plural = _('Client Users') ordering = ('-id',) class AdminUser(User): objects = AdminUserManager() def save(self, *args, **kwargs): self.user_type = User.UserType.ADMIN self.is_staff = True 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 self.is_superuser = True super().save(*args, **kwargs) class Meta: proxy = True verbose_name = _("Super Admin User") verbose_name_plural = _("Super Admin Users")