""" @author p.dolata """ import uuid from django.db import models from django.contrib.auth.models import BaseUserManager, AbstractBaseUser class UserManager(BaseUserManager): """ Manager for custom user model """ def create_user(self, email, password=None): """ Create and return `User` with an email, username and password :param email: email of user :param password: password of user :return: model of new user """ if not email: raise ValueError('Users must have an email address') user = self.model(email=self.normalize_email(email)) user.set_password(password) user.save(using=self._db) return user def create_superuser(self, email, password): """ Create and return a `User` with superuser (admin) permissions :param email: email of superuser :param password: password of superuser :return: model of new superuser """ if password is None: raise TypeError('Superusers must have a password') user = self.create_user(email, password) user.is_superuser = True user.is_staff = True user.save() return user class User(AbstractBaseUser): """ Model of user """ id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) email = models.EmailField( verbose_name='email address', max_length=255, unique=True ) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) is_superuser = models.BooleanField(default=False) USERNAME_FIELD = 'email' REQUIRED_FIELDS = [] objects = UserManager() def __str__(self): return self.email class Meta: """ Class to set table name in database """ db_table = 'user'