|
|
|
|
@ -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): |
|
|
|
|
|