2020-11-30 22:10:22 +01:00
|
|
|
"""
|
|
|
|
@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
|
|
|
|
"""
|
2020-11-30 22:42:24 +01:00
|
|
|
db_table = 'user'
|