SmartPicasso/rest-app/smartpicasso/app/user/models.py

73 lines
1.9 KiB
Python
Raw Permalink Normal View History

"""
@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'