|
|
|
|
@ -11,22 +11,13 @@ from django.utils.timezone import now as datetime_now |
|
|
|
|
|
|
|
|
|
from registration.signals import user_activated |
|
|
|
|
|
|
|
|
|
from core.models import AbstractStatusModel, ActualOnlyManager, STATUS_ACTIVE |
|
|
|
|
from core.models import ( |
|
|
|
|
AbstractStatusModel, ActualOnlyManager, STATUS_ACTIVE, CaseInsensitiveQuerySet |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create your models here. |
|
|
|
|
|
|
|
|
|
class CaseInsensitiveQuerySet(models.QuerySet): |
|
|
|
|
CASE_INSENSITIVE_FIELDS = ('email',) |
|
|
|
|
|
|
|
|
|
def _filter_or_exclude(self, negate, *args, **kwargs): |
|
|
|
|
for field in self.CASE_INSENSITIVE_FIELDS: |
|
|
|
|
if field in kwargs: |
|
|
|
|
kwargs[field + '__iexact'] = kwargs[field] |
|
|
|
|
del kwargs[field] |
|
|
|
|
return super()._filter_or_exclude(negate, *args, **kwargs) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserManager(ActualOnlyManager, BaseUserManager): |
|
|
|
|
def create_superuser(self, email, password): |
|
|
|
|
user = self.model( |
|
|
|
|
@ -39,7 +30,9 @@ class UserManager(ActualOnlyManager, BaseUserManager): |
|
|
|
|
return user |
|
|
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
|
|
return CaseInsensitiveQuerySet(self.model) |
|
|
|
|
bqs = super().get_queryset() |
|
|
|
|
qs = CaseInsensitiveQuerySet(self.model,bqs.query) |
|
|
|
|
return qs |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# @TODO: translate into english and use translation |
|
|
|
|
@ -61,7 +54,7 @@ class User(AbstractStatusModel, PermissionsMixin, AbstractBaseUser): |
|
|
|
|
referral_user = models.ForeignKey('self', |
|
|
|
|
verbose_name=_('Реферальный пользователь'), |
|
|
|
|
on_delete=models.SET_NULL, |
|
|
|
|
blank=True,null=True |
|
|
|
|
blank=True, null=True |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
confirmed_at = models.DateTimeField(_('подвтержден в'), blank=True, null=True) |
|
|
|
|
@ -108,7 +101,7 @@ class Profile(AbstractStatusModel): |
|
|
|
|
|
|
|
|
|
phone_regex = RegexValidator(regex=r'^\((+7)|8)?\d{10}$', |
|
|
|
|
message="Phone number must be entered in the format: '+99999999999'. Up to 12 digits allowed.") |
|
|
|
|
phone = models.CharField(_('телефон'),validators=[phone_regex], max_length=12, blank=True, null=True) |
|
|
|
|
phone = models.CharField(_('телефон'), validators=[phone_regex], max_length=12, blank=True, null=True) |
|
|
|
|
|
|
|
|
|
@property |
|
|
|
|
def is_valid(self): |
|
|
|
|
@ -164,24 +157,12 @@ class Company(AbstractStatusModel): |
|
|
|
|
verbose_name_plural = _('компании') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserPoints(models.Model): |
|
|
|
|
user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, null=True) |
|
|
|
|
points = models.DecimalField(max_digits=8, decimal_places=2, null=True, default=0.00) |
|
|
|
|
requisites = models.CharField(max_length=256, default='') |
|
|
|
|
|
|
|
|
|
def __str__(self): |
|
|
|
|
return str(self.user.id) |
|
|
|
|
|
|
|
|
|
class Meta: |
|
|
|
|
verbose_name = _('очки пользователя') |
|
|
|
|
verbose_name_plural = _('очки пользователя') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@receiver(post_save, sender=get_user_model()) |
|
|
|
|
def create_user_profile(sender, instance, created, **kwargs): |
|
|
|
|
if created: |
|
|
|
|
Profile.objects.create(user=instance).save() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@receiver(user_activated) |
|
|
|
|
def save_activation_date(sender, user, request, **kwargs): |
|
|
|
|
user.confirmed_at = datetime_now() |
|
|
|
|
|