Merge branch 'feature/news-subscription' into develop

# Conflicts:
#	apps/notification/models.py
#	apps/notification/serializers/common.py
This commit is contained in:
Kuroshini 2019-12-31 00:41:20 +03:00
commit 146f34cebe
3 changed files with 5 additions and 16 deletions

View File

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

View File

@ -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:

View File

@ -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'