fix queryset for user model in production and development envs

remotes/origin/HEAD
Max Yakovenko 8 years ago
parent aca5febcb6
commit b4e3d5df99
  1. 37
      accounts_ext/models.py

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

Loading…
Cancel
Save