Merge branch 'feature/news-subscription' into develop
# Conflicts: # apps/notification/models.py # apps/notification/serializers/common.py
This commit is contained in:
commit
146f34cebe
|
|
@ -46,10 +46,12 @@ class SubscriberManager(models.Manager):
|
||||||
obj.update_code = generate_string_code()
|
obj.update_code = generate_string_code()
|
||||||
obj.save()
|
obj.save()
|
||||||
obj.subscription_types.set(subscription_types)
|
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(user=user, email=email, ip_address=ip_address,
|
||||||
country_code=country_code, locale=locale)
|
country_code=country_code, locale=locale)
|
||||||
obj.subscription_types.set(subscription_types)
|
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):
|
||||||
|
|
@ -108,20 +110,7 @@ class Subscriber(ProjectBaseMixin):
|
||||||
|
|
||||||
def unsubscribe(self, query: dict):
|
def unsubscribe(self, query: dict):
|
||||||
"""Unsubscribe user."""
|
"""Unsubscribe user."""
|
||||||
|
self.subscribe_set.update(unsubscribe_date=now())
|
||||||
subscription_types = query.get('subscription_types')
|
|
||||||
|
|
||||||
old_subscribes = self.subscription_types.objects.all()
|
|
||||||
subscribes = self.subscription_types.objects.filter(pk__in=[subscription_types])
|
|
||||||
self.subscription_types = subscribes
|
|
||||||
|
|
||||||
new_ids = set(existing_answer.answer.id for existing_answer in subscribes)
|
|
||||||
old_subscribes_types = [sub for sub in old_subscribes if sub.id not in new_ids]
|
|
||||||
old_subscribes = Subscribe.objects.filter(subscriber=self, subscription_types__in=old_subscribes_types)
|
|
||||||
old_subscribes.update(unsubscribe_date=now())
|
|
||||||
old_subscribes.save()
|
|
||||||
|
|
||||||
self.save()
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def send_to(self):
|
def send_to(self):
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,7 @@ class SubscribeSerializer(serializers.ModelSerializer):
|
||||||
"""Subscribe serializer."""
|
"""Subscribe serializer."""
|
||||||
|
|
||||||
email = serializers.EmailField(required=False, source='send_to')
|
email = serializers.EmailField(required=False, source='send_to')
|
||||||
subscription_types = SubscriptionTypeSerializer(read_only=True)
|
subscription_types = SubscriptionTypeSerializer(read_only=True, source='subscription_types_set')
|
||||||
subscribe_objects = SubscribeObjectSerializer(read_only=True)
|
subscribe_objects = SubscribeObjectSerializer(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ class SubscribeInfoAuthUserView(generics.ListAPIView):
|
||||||
return queryset.filter(user=user)
|
return queryset.filter(user=user)
|
||||||
|
|
||||||
|
|
||||||
class UnsubscribeView(generics.GenericAPIView):
|
class UnsubscribeView(generics.UpdateAPIView):
|
||||||
"""Unsubscribe view."""
|
"""Unsubscribe view."""
|
||||||
|
|
||||||
lookup_field = 'update_code'
|
lookup_field = 'update_code'
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user