mirror of
https://github.com/tubearchivist/tubearchivist-frontend.git
synced 2024-12-23 18:30:16 +00:00
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
"""custom models"""
|
|
from django.contrib.auth.models import (
|
|
AbstractBaseUser,
|
|
BaseUserManager,
|
|
PermissionsMixin,
|
|
)
|
|
from django.db import models
|
|
|
|
|
|
class AccountManager(BaseUserManager):
|
|
"""manage user creation methods"""
|
|
|
|
use_in_migrations = True
|
|
|
|
def _create_user(self, name, password, **extra_fields):
|
|
"""create regular user private"""
|
|
values = [name, password]
|
|
field_value_map = dict(zip(self.model.REQUIRED_FIELDS, values))
|
|
for field_name, value in field_value_map.items():
|
|
if not value:
|
|
raise ValueError(f"The {field_name} value must be set")
|
|
|
|
user = self.model(name=name, **extra_fields)
|
|
user.set_password(password)
|
|
user.save(using=self._db)
|
|
return user
|
|
|
|
def create_user(self, name, password):
|
|
"""create regular user public"""
|
|
return self._create_user(name, password)
|
|
|
|
def create_superuser(self, name, password, **extra_fields):
|
|
"""create super user"""
|
|
extra_fields.setdefault("is_staff", True)
|
|
extra_fields.setdefault("is_superuser", True)
|
|
|
|
if extra_fields.get("is_staff") is not True:
|
|
raise ValueError("Superuser must have is_staff=True.")
|
|
if extra_fields.get("is_superuser") is not True:
|
|
raise ValueError("Superuser must have is_superuser=True.")
|
|
|
|
return self._create_user(name, password, **extra_fields)
|
|
|
|
|
|
class Account(AbstractBaseUser, PermissionsMixin):
|
|
"""handle account creation"""
|
|
|
|
name = models.CharField(max_length=150, unique=True)
|
|
is_staff = models.BooleanField(default=False)
|
|
objects = AccountManager()
|
|
|
|
USERNAME_FIELD = "name"
|
|
REQUIRED_FIELDS = ["password"]
|