from django.contrib.auth.base_user import BaseUserManager from outbo.apps.core.models import SoftDeletableManager class UserManager(SoftDeletableManager, BaseUserManager): def __init__(self, *, alive_only=False): self.alive_only = alive_only super().__init__() def create_user(self, username, email, password=None, save=True, **kwargs): if username is None: raise TypeError("User must have a username.") if email is None: raise TypeError("User must have an email address.") user = self.model( username=username, email=self.normalize_email(email), **kwargs ) user.set_password(password) if save: user.save() return user def create_superuser(self, username, email, password, save=True): if password is None: raise TypeError("Superuser must have a password.") user = self.create_user( username=username, email=email, password=password, save=False ) user.is_superuser = True user.is_staff = True if save: user.save() return user def regular_users(self): return self.filter(is_staff=False)