Fixed many subscribers

This commit is contained in:
dormantman 2020-01-17 16:34:59 +03:00
parent 0eba2a4405
commit 8843d5efed
2 changed files with 19 additions and 12 deletions

View File

@ -7,9 +7,9 @@ from django.utils.translation import ugettext_lazy as _
from account.models import User from account.models import User
from location.models import Country from location.models import Country
from notification.tasks import send_unsubscribe_email
from utils.methods import generate_string_code from utils.methods import generate_string_code
from utils.models import ProjectBaseMixin, TJSONField, TranslatedFieldsMixin from utils.models import ProjectBaseMixin, TJSONField, TranslatedFieldsMixin
from notification.tasks import send_unsubscribe_email
class SubscriptionType(ProjectBaseMixin, TranslatedFieldsMixin): class SubscriptionType(ProjectBaseMixin, TranslatedFieldsMixin):
@ -32,9 +32,9 @@ class SubscriberManager(models.Manager):
# search existing object # search existing object
if not user: if not user:
user = User.objects.filter(email=email).first() user = User.objects.filter(email=email).first()
if user: if user:
obj = self.model.objects.filter(models.Q(user=user) | models.Q( obj = self.model.objects.filter(models.Q(user=user) | models.Q(email=user.email)).first()
email=user.email)).first()
else: else:
obj = self.model.objects.filter(email=email).first() obj = self.model.objects.filter(email=email).first()
@ -43,31 +43,39 @@ class SubscriberManager(models.Manager):
if user: if user:
obj.user = user obj.user = user
obj.email = None obj.email = None
else: else:
obj.email = email obj.email = email
obj.ip_address = ip_address obj.ip_address = ip_address
obj.country_code = country_code obj.country_code = country_code
obj.locale = locale obj.locale = locale
obj.update_code = generate_string_code() obj.update_code = generate_string_code()
obj.save() obj.save()
obj.subscription_types.set(subscription_types)
obj.subscribe_set.update(unsubscribe_date=None)
else: else:
obj = self.model.objects.create(user=user, email=email, ip_address=ip_address, obj = self.model.objects.create(
country_code=country_code, locale=locale) user=user, email=email, ip_address=ip_address,
obj.subscription_types.set(subscription_types) country_code=country_code, locale=locale
obj.subscribe_set.update(unsubscribe_date=None) )
obj.subscription_types.set(subscription_types)
obj.subscribe_set.update(unsubscribe_date=None)
return obj return obj
def associate_user(self, user): def associate_user(self, user):
"""Associate user.""" """Associate user."""
obj = self.model.objects.filter(user=user).first() obj = self.model.objects.filter(user=user).first()
if obj is None: if obj is None:
obj = self.model.objects.filter(email=user.email_confirmed, user__isnull=True).first() obj = self.model.objects.filter(email=user.email_confirmed, user__isnull=True).first()
if obj: if obj:
obj.user = user obj.user = user
obj.email = None obj.email = None
obj.save() obj.save()
return obj return obj

View File

@ -47,10 +47,9 @@ class SubscribeInfoAuthUserView(generics.RetrieveAPIView):
user = self.request.user user = self.request.user
if user.is_authenticated: if user.is_authenticated:
try: subscriber = models.Subscriber.objects.filter(user=user).first()
subscriber = models.Subscriber.objects.get(user=user)
except models.Subscriber.DoesNotExist: if subscriber is None:
subscriber = models.Subscriber.objects.make_subscriber( subscriber = models.Subscriber.objects.make_subscriber(
email=user.email, user=user, ip_address=get_user_ip(self.request), email=user.email, user=user, ip_address=get_user_ip(self.request),
country_code=self.request.country_code, locale=self.request.locale country_code=self.request.country_code, locale=self.request.locale