Fixed subscriptions
This commit is contained in:
parent
66780ef093
commit
36b9474e36
|
|
@ -30,17 +30,20 @@ class SubscriberManager(models.Manager):
|
||||||
locale=None, subscription_types=None, *args, **kwargs):
|
locale=None, subscription_types=None, *args, **kwargs):
|
||||||
"""Make subscriber and update info."""
|
"""Make subscriber and update info."""
|
||||||
# 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(email=user.email)).first()
|
obj = self.model.objects.filter(user=user).first()
|
||||||
|
|
||||||
|
if obj is None:
|
||||||
|
obj = self.model.objects.filter(email=user.email).first()
|
||||||
|
self.associate_user(user=user)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
obj = self.model.objects.filter(email=email).first()
|
obj = self.model.objects.filter(email=email).first()
|
||||||
|
|
||||||
if subscription_types is None:
|
|
||||||
subscription_types = []
|
|
||||||
|
|
||||||
# update or create
|
# update or create
|
||||||
if obj:
|
if obj:
|
||||||
if user:
|
if user:
|
||||||
|
|
@ -54,17 +57,20 @@ class SubscriberManager(models.Manager):
|
||||||
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.subscription_types.set(subscription_types)
|
|
||||||
obj.subscribe_set.update(unsubscribe_date=None)
|
|
||||||
obj.save()
|
obj.save()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
obj = self.model.objects.create(
|
obj = self.model.objects.create(
|
||||||
user=user, email=email, ip_address=ip_address,
|
user=user, email=email, ip_address=ip_address,
|
||||||
country_code=country_code, locale=locale,
|
country_code=country_code, locale=locale,
|
||||||
subscription_types=subscription_types,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if subscription_types is not None:
|
||||||
|
obj.subscription_types.set(subscription_types)
|
||||||
|
obj.subscribe_set.update(unsubscribe_date=None)
|
||||||
|
obj.save()
|
||||||
|
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
def associate_user(self, user):
|
def associate_user(self, user):
|
||||||
|
|
@ -76,7 +82,7 @@ class SubscriberManager(models.Manager):
|
||||||
|
|
||||||
if obj:
|
if obj:
|
||||||
obj.user = user
|
obj.user = user
|
||||||
obj.email = None
|
obj.email = user.email
|
||||||
obj.save()
|
obj.save()
|
||||||
|
|
||||||
return obj
|
return obj
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ class SubscriptionTypeSerializer(serializers.ModelSerializer):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class CreateSubscribeSerializer(serializers.ModelSerializer):
|
class CreateAndUpdateSubscribeSerializer(serializers.ModelSerializer):
|
||||||
"""Create and Update Subscribe serializer."""
|
"""Create and Update Subscribe serializer."""
|
||||||
|
|
||||||
email = serializers.EmailField(required=False, source='send_to')
|
email = serializers.EmailField(required=False, source='send_to')
|
||||||
|
|
@ -89,20 +89,12 @@ class CreateSubscribeSerializer(serializers.ModelSerializer):
|
||||||
subscriber = models.Subscriber.objects.make_subscriber(**validated_data)
|
subscriber = models.Subscriber.objects.make_subscriber(**validated_data)
|
||||||
|
|
||||||
if settings.USE_CELERY:
|
if settings.USE_CELERY:
|
||||||
send_subscribes_update_email.delay(subscriber.pk)
|
send_subscribes_update_email.delay(subscriber.email)
|
||||||
else:
|
else:
|
||||||
send_subscribes_update_email(subscriber.pk)
|
send_subscribes_update_email(subscriber.email)
|
||||||
|
|
||||||
return subscriber
|
return subscriber
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
|
||||||
if settings.USE_CELERY:
|
|
||||||
send_subscribes_update_email.delay(instance.pk)
|
|
||||||
else:
|
|
||||||
send_subscribes_update_email(instance.pk)
|
|
||||||
|
|
||||||
return super().update(instance, validated_data)
|
|
||||||
|
|
||||||
|
|
||||||
class UpdateSubscribeSerializer(serializers.ModelSerializer):
|
class UpdateSubscribeSerializer(serializers.ModelSerializer):
|
||||||
"""Update with code Subscribe serializer."""
|
"""Update with code Subscribe serializer."""
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,11 @@ from notification import models
|
||||||
|
|
||||||
|
|
||||||
@shared_task
|
@shared_task
|
||||||
def send_subscribes_update_email(subscriber_id):
|
def send_subscribes_update_email(email):
|
||||||
subscriber = models.Subscriber.objects.get(id=subscriber_id)
|
subscriber = models.Subscriber.objects.filter(email=email).first()
|
||||||
|
|
||||||
|
if subscriber is None:
|
||||||
|
return
|
||||||
|
|
||||||
country_code = subscriber.country_code
|
country_code = subscriber.country_code
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ class CreateSubscribeView(generics.CreateAPIView):
|
||||||
|
|
||||||
queryset = models.Subscriber.objects.all()
|
queryset = models.Subscriber.objects.all()
|
||||||
permission_classes = (permissions.AllowAny,)
|
permission_classes = (permissions.AllowAny,)
|
||||||
serializer_class = serializers.CreateSubscribeSerializer
|
serializer_class = serializers.CreateAndUpdateSubscribeSerializer
|
||||||
|
|
||||||
|
|
||||||
class UpdateSubscribeView(generics.UpdateAPIView):
|
class UpdateSubscribeView(generics.UpdateAPIView):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user