chore: первый апдейт

This commit is contained in:
protokey committed 2026-09-24 01:00:19 +04:00
1 parent a53fffdb59
commit 136894a376
11 files changed
+183 -11

No files matched your search

+48 -2
View File
@@ -1,2 +1,48 @@
# Create your models here.
# TODO: создать менеджер модель пользователя и кастомную модель пользователя в которой уберем поле email и позволим регистрироваться только по username и password
from django.contrib.auth.base_user import BaseUserManager
from django.contrib.auth.models import AbstractUser
class UserManager(BaseUserManager):
"""Менеджер пользователей без email: только username и password."""
use_in_migrations = True
def _create_user(self, username, password, **extra_fields):
if not username:
raise ValueError('The given username must be set')
username = self.model.normalize_username(username)
user = self.model(username=username, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, username, password=None, **extra_fields):
extra_fields.setdefault('is_staff', False)
extra_fields.setdefault('is_superuser', False)
return self._create_user(username, password, **extra_fields)
def create_superuser(self, username, password=None, **extra_fields):
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(username, password, **extra_fields)
class User(AbstractUser):
"""Пользователь без email. Регистрация только по username и password."""
email = None
EMAIL_FIELD = None
REQUIRED_FIELDS = []
objects = UserManager()
def clean(self):
# AbstractUser.clean() нормализует email, которого у нас нет
pass
def email_user(self, *args, **kwargs):
raise NotImplementedError('User has no email')