From 3ade61f62418c8389ac6c1d1ba7f78b9378b26b4 Mon Sep 17 00:00:00 2001 From: Max Yakovenko Date: Mon, 23 Jul 2018 03:07:03 +0300 Subject: [PATCH] translate accounts ext model fields and refactor logic --- accounts_ext/models.py | 46 ++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/accounts_ext/models.py b/accounts_ext/models.py index d42af49..ede7360 100644 --- a/accounts_ext/models.py +++ b/accounts_ext/models.py @@ -2,9 +2,8 @@ from django.contrib.auth import get_user_model from django.contrib.auth.models import ( Group as GroupBase, AbstractBaseUser, BaseUserManager, PermissionsMixin ) -from django.core.exceptions import ObjectDoesNotExist from django.core.validators import RegexValidator -from django.db import models, transaction +from django.db import models from django.db.models.signals import post_save from django.dispatch import receiver from django.utils.translation import ugettext_lazy as _ @@ -64,7 +63,7 @@ class User(AbstractStatusModel, PermissionsMixin, AbstractBaseUser): blank=True, null=True, related_name='ref_user') - confirmed_at = models.DateTimeField(_('email confirmed at'), blank=True, null=True) + confirmed_at = models.DateTimeField(_('подвтержден в'), blank=True, null=True) USERNAME_FIELD = 'email' @@ -99,8 +98,8 @@ class Group(GroupBase): # @TODO: translate into english and use translation -class Profile(models.Model): - user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE) +class Profile(AbstractStatusModel): + user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE, verbose_name=_('username')) first_name = models.CharField(_('first name'), max_length=100, blank=True, null=True) last_name = models.CharField(_('last name'), max_length=100, blank=True, null=True) patronymic = models.CharField(_('patronymic'), max_length=100, blank=True, null=True) @@ -126,30 +125,36 @@ class Profile(models.Model): return str(self.user) -COMPANY_STATUS_LEGAL = 25 -COMPANY_STATUS_INDIVIDUAL = 50 -COMPANY_STATUS_CHOICES = ( - (COMPANY_STATUS_LEGAL, _("Компания")), - (COMPANY_STATUS_INDIVIDUAL, _("Физ лицо")) +COMPANY_TYPE_LEGAL = 25 +COMPANY_TYPE_INDIVIDUAL = 50 +COMPANY_TYPE_CHOICES = ( + (COMPANY_TYPE_LEGAL, _("Компания")), + (COMPANY_TYPE_INDIVIDUAL, _("Физ лицо")) ) -COMPANY_STATUS_DEFAULT_CHOICE = COMPANY_STATUS_LEGAL +COMPANY_TYPE_DEFAULT_CHOICE = COMPANY_TYPE_LEGAL + # @TODO: translate into english and use translation class Company(AbstractStatusModel): - user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE) - company_name = models.CharField(_('Компания'),max_length=255, blank=True, null=True) - address = models.TextField(_('Адрес'),blank=True, null=True) - inn = models.CharField(_('ИНН'),max_length=12, blank=True, null=True) - ogrn = models.CharField(_('ОГРН'),max_length=13, blank=True, null=True) - status = models.SmallIntegerField(_('Тип'), choices=COMPANY_STATUS_CHOICES, default=COMPANY_STATUS_DEFAULT_CHOICE, blank= True, null=True) + user = models.OneToOneField(get_user_model(), on_delete=models.CASCADE, verbose_name=_('username')) + company_name = models.CharField(_('Компания'), max_length=255, blank=True, null=True) + address = models.TextField(_('Адрес'), blank=True, null=True) + inn = models.CharField(_('ИНН'), max_length=12, blank=True, null=True) + ogrn = models.CharField(_('ОГРН'), max_length=13, blank=True, null=True) + type = models.SmallIntegerField(_('Тип'), choices=COMPANY_TYPE_CHOICES, default=COMPANY_TYPE_DEFAULT_CHOICE, + blank=True, null=True) + + def set_company_type(self,is_individual_type_predicate): + return COMPANY_TYPE_INDIVIDUAL if is_individual_type_predicate else COMPANY_TYPE_LEGAL + @property def is_individual(self): - return self.status == COMPANY_STATUS_INDIVIDUAL + return self.type == COMPANY_TYPE_INDIVIDUAL @property def is_legal(self): - return self.status == COMPANY_STATUS_LEGAL + return self.status == COMPANY_TYPE_LEGAL def __str__(self): return self.company_name or '' @@ -175,7 +180,8 @@ class UserPoints(models.Model): @receiver(post_save, sender=get_user_model()) def create_user_profile(sender, instance, created, **kwargs): if created: - Profile.objects.create(user=instance) + Profile.objects.create(user=instance).save() + Company.objects.create(user=instance).save() @receiver(user_activated) def save_activation_date(sender, user, request, **kwargs):