from django.db import models from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, AbstractUser from django.contrib.auth.models import PermissionsMixin class CustomUserManager(BaseUserManager): def create_user(self, email, password=None): if not email: raise ValueError('Users must have an email address') user = self.model(email=CustomUserManager.normalize_email(email),) user.set_password(password) user.save(using=self._db) return user def create_superuser(self, email, password): user = self.create_user(email, password) user.is_admin = True user.save(using=self._db) return user class PerformUserManager(models.Manager): def get_queryset(self): return super(PerformUserManager, self).get_queryset().filter(groups__name='Исполнитель') class CustomerUserManager(models.Manager): def get_queryset(self): return super(CustomerUserManager, self).get_queryset().filter(groups__name='Заказчик') class CustomUser(AbstractBaseUser, PermissionsMixin): firstname = models.CharField(max_length=255, blank=True) lastname = models.CharField(max_length=255, blank=True) email = models.EmailField(max_length=255, unique=True, db_index=True) is_active = models.BooleanField(default=True) is_admin = models.BooleanField(default=False) @property def is_staff(self): return self.is_admin def __str__(self): return self.email def get_short_name(self): return self.email def get_full_name(self): return self.firstname + ' ' + self.lastname # def has_perm(self, perm, obj=None): # perm = perm.split('.')[-1] # if self.user and not self.user.is_active: # return False # elif self.user and self.user.is_superuser: # return True # return perm in self.get_perms(obj) # # def has_perm(self, perm, obj=None): # return self.is_admin return True def has_module_perms(self, app_label): return self.is_admin USERNAME_FIELD = 'email' REQUIRED_FIELDS = [] objects = CustomUserManager() perform_objects = PerformUserManager() customers_objects = CustomerUserManager()