chore: первый апдейт
This commit is contained in:
1 parent
a53fffdb59
commit
136894a376
11 files changed
+183
-11
No files matched your search
+48
-2
@@ -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')
|
||||
Reference in new issue
Block a user