diff --git a/apps/authorization/serializers/common.py b/apps/authorization/serializers/common.py index 8f5bfc57..8249e062 100644 --- a/apps/authorization/serializers/common.py +++ b/apps/authorization/serializers/common.py @@ -89,11 +89,15 @@ class SignupSerializer(serializers.ModelSerializer): user_id=obj.id, country_code=request.country_code) - # Make subscriber - Subscriber.objects.make_subscriber( - email=obj.email, user=obj, ip_address=get_user_ip(request), - country_code=request.country_code, locale=request.locale - ) + # Make subscriber or associate user + + subscriber = Subscriber.objects.associate_user(user=obj) + + if subscriber is None: + Subscriber.objects.make_subscriber( + email=obj.email, user=obj, ip_address=get_user_ip(request), + country_code=request.country_code, locale=request.locale + ) return obj diff --git a/apps/notification/models.py b/apps/notification/models.py index 48362894..3f52f5cc 100644 --- a/apps/notification/models.py +++ b/apps/notification/models.py @@ -38,6 +38,9 @@ class SubscriberManager(models.Manager): else: obj = self.model.objects.filter(email=email).first() + if subscription_types is None: + subscription_types = [] + # update or create if obj: if user: @@ -51,18 +54,17 @@ class SubscriberManager(models.Manager): obj.country_code = country_code obj.locale = locale obj.update_code = generate_string_code() + obj.subscription_types.set(subscription_types) + obj.subscribe_set.update(unsubscribe_date=None) obj.save() else: obj = self.model.objects.create( 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) - return obj def associate_user(self, user):