42 lines
1.2 KiB
Python
Executable File
42 lines
1.2 KiB
Python
Executable File
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)
|