Files
FireGame/AuthApp/models.py
2023-05-16 17:14:16 +03:00

84 lines
2.7 KiB
Python

# coding=utf-8
from __future__ import unicode_literals
from django.contrib.auth.models import User
from django.db import models
from django.utils.translation import gettext_lazy as _
from django.db.models.signals import post_save, pre_save
from django.contrib.contenttypes.fields import GenericRelation
from BaseModels.base_models import BaseModel
from datetime import datetime
from django.conf import settings
def user_name_str(self):
return f'{self.last_name} {self.first_name}'
User.add_to_class("__str__", user_name_str)
class UserProfile(BaseModel):
user = models.OneToOneField(User, verbose_name=_('Пользователь'), related_name=u'user_profile',
null=True, blank=True, on_delete=models.CASCADE)
UI_lang = models.CharField(max_length=2, verbose_name=_('Язык интерфейса'), choices=settings.LANGUAGES)
nick_name = models.CharField(max_length=250, verbose_name=_('Псевдоним'), null=True, blank=True)
authCode = models.CharField(max_length=32, null=True, blank=True)
phone = models.CharField(max_length=100, verbose_name=_('Телефон'), null=True, blank=True)
birthdate = models.DateField(verbose_name=_(u'Дата рождения'), null=True, blank=True)
comment = models.TextField(verbose_name=_('Комментарий'), null=True, blank=True)
referal_link = models.TextField(verbose_name=_('Реферальная ссылка'))
balance = models.FloatField(verbose_name=_('Баланс'), default=0)
questions_count = models.IntegerField(verbose_name=_('Задано вопросов'), default=0)
answer_success_count = models.IntegerField(verbose_name=_('Успешных ответов'), default=0)
def __str__(self):
if self.user:
return '{0} {1}'.format(self.user.last_name, self.user.first_name)
else:
return str(self.id)
class Meta:
permissions = (
)
verbose_name = _('Профиль')
verbose_name_plural = _('Профили')
ordering = ('user__last_name', 'user__first_name')
# @receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User, dispatch_uid='post_save_connect')
# @receiver(pre_save, sender=User)
def preSaveUser(sender, instance, **kwargs):
if not instance.email:
instance.email = str(instance.username).lower()
try:
instance.user_profile.modifiedDT = datetime.now()
except:
pass
pre_save.connect(preSaveUser, sender=User, dispatch_uid='pre_save_connect')