You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

73 lines
2.3 KiB

from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, AbstractUser
from django.contrib.auth.models import PermissionsMixin
class UserManager(BaseUserManager):
def create_user(self, email, password=None):
if not email:
raise ValueError('Users must have an email address')
user = self.model(email=UserManager.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_superuser = 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 User(AbstractBaseUser, PermissionsMixin):
first_name = models.CharField(max_length=255, blank=True)
last_name = models.CharField(max_length=255, blank=True)
email = models.EmailField(max_length=255, unique=True, db_index=True)
is_active = models.BooleanField(default=True)
@property
def is_staff(self):
return self.is_superuser
def __str__(self):
return self.email
def get_short_name(self):
return self.email
def get_full_name(self):
return self.first_name + ' ' + self.last_name
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
perform_objects = PerformUserManager()
customers_objects = CustomerUserManager()
class Meta:
verbose_name = 'Пользователь'
verbose_name_plural = 'Пользователи'
class Team(models.Model):
name = models.CharField(max_length=255)
users = models.ManyToManyField(User, related_name ='teams', blank=True)
owner = models.OneToOneField(User, related_name='team', null=True)
def __str__(self):
return self.name
class Meta:
verbose_name = 'Команда'
verbose_name_plural = 'Команды'