This repository has been archived on 2024-01-13. You can view files and clone it, but cannot push or open issues or pull requests.
arka-mvp/account/models.py

57 lines
2.0 KiB
Python

from django.db import models
from django.contrib.auth.models import PermissionsMixin, AbstractBaseUser, BaseUserManager
class SiteAccountManager(BaseUserManager):
def create_user(self, email, name, surname, phone, password):
user = self.model(email=email, name=name, surname=surname, phone=phone, password=password)
user.set_password(password)
user.is_staff = False
user.is_superuser = False
user.save(using=self._db)
return user
def create_superuser(self, email, name, surname, phone, password):
user = self.create_user(email=email, name=name, surname=surname, phone=phone, password=password)
user.is_active = True
user.is_staff = True
user.is_superuser = True
user.save(using=self._db)
return user
def get_by_natural_key(self, email_):
return self.get(email=email_)
class SiteUser(AbstractBaseUser, PermissionsMixin):
"""
Here we are subclassing the Django AbstractBaseUser, which comes with only
3 fields:
1 - password
2 - last_login
3 - is_active
Note than all fields would be required unless specified otherwise, with
`required=False` in the parentheses.
The PermissionsMixin is a model that helps you implement permission settings
as-is or modified to your requirements.
More info: https://goo.gl/YNL2ax
"""
surname = models.CharField(max_length=60, verbose_name="Фамилия")
name = models.CharField(max_length=60, verbose_name="Имя")
email = models.EmailField(unique=True, verbose_name="Email")
phone = models.CharField(unique=True, max_length=16, verbose_name="Телефон")
is_staff = models.BooleanField(default=False, verbose_name="Разрешение на вход в админку")
REQUIRED_FIELDS = ['name', 'surname', 'phone']
USERNAME_FIELD = 'email'
objects = SiteAccountManager()
def get_short_name(self):
return self.email
def natural_key(self):
return self.email
def __str__(self):
return self.email