parent
6aa3acdd8c
commit
b9ef367c6d
5 changed files with 78 additions and 63 deletions
@ -1,27 +1,35 @@ |
|||||||
from django.db import models |
from django.db import models |
||||||
from django.contrib.auth import get_user_model |
from django.contrib.auth.models import AbstractUser |
||||||
from django.contrib.auth.models import AbstractUser, UserManager |
from django.contrib.postgres import fields as pgfields |
||||||
|
from django.utils.translation import gettext_lazy as _ |
||||||
|
|
||||||
User = get_user_model() |
|
||||||
|
class User(AbstractUser): |
||||||
|
ROLE_CHOICES = ( |
||||||
class LilcityUserManager(UserManager): |
(0, 'пользователь'), |
||||||
def create_user(self, username, email=None, password=None, **extra_fields): |
(1, 'автор'), |
||||||
user = super().create_user(username, email, password, **extra_fields) |
(2, 'администратор'), |
||||||
LilcityUserSettings.objects.create(user=user) |
) |
||||||
return user |
GENDER_CHOICES = ( |
||||||
|
('n', 'не указан'), |
||||||
|
('m', 'Мужчина'), |
||||||
class LilcityUserProxy(User): |
('f', 'Женщина'), |
||||||
objects = LilcityUserManager() |
) |
||||||
|
email = models.EmailField(_('email address'), unique=True) |
||||||
class Meta: |
role = models.PositiveSmallIntegerField(default=0, choices=ROLE_CHOICES) |
||||||
proxy = True |
gender = models.CharField(max_length=1, choices=GENDER_CHOICES) |
||||||
|
country = models.CharField(max_length=50, default='') |
||||||
|
city = models.CharField(max_length=85, default='') |
||||||
class LilcityUserSettings(models.Model): |
about = models.CharField(max_length=1000, default='') |
||||||
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='lilcity_user_settings') |
instagram = models.URLField(default='') |
||||||
is_verification_email = models.BooleanField(default=False) |
facebook = models.URLField(default='') |
||||||
facebook_id = models.PositiveIntegerField(null=True, blank=True, unique=True) |
twitter = models.URLField(default='') |
||||||
|
pinterest = models.URLField(default='') |
||||||
|
youtube = models.URLField(default='') |
||||||
|
vkontakte = models.URLField(default='') |
||||||
|
fb_id = models.PositiveIntegerField(null=True, blank=True, unique=True) |
||||||
|
fb_data = pgfields.JSONField(default={}) |
||||||
|
is_email_proved = models.BooleanField(default=False) |
||||||
|
|
||||||
|
USERNAME_FIELD = 'email' |
||||||
|
REQUIRED_FIELDS = [] |
||||||
|
|||||||
Loading…
Reference in new issue