84 lines
2.7 KiB
Python
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')
|