Added history to subscriptions

This commit is contained in:
dormantman 2020-01-24 18:25:17 +03:00
parent 5a1d33c981
commit 8acb86a5ab
3 changed files with 27 additions and 6 deletions

View File

@ -137,10 +137,14 @@ class Subscriber(ProjectBaseMixin):
"""Unsubscribe user.""" """Unsubscribe user."""
self.subscribe_set.update( self.subscribe_set.update(
unsunbscribe_date=now(), unsubscribe_date=now(),
old_subscriber_id=F('subscriber_id'), old_subscriber_id=F('subscriber_id'),
old_subscription_type_id=F('subscription_type_id') old_subscription_type_id=F('subscription_type_id')
).update(subscriber_id=None, subscription_type_id=None) )
self.subscribe_set.update(
subscriber_id=None,
subscription_type_id=None
)
if settings.USE_CELERY: if settings.USE_CELERY:
send_unsubscribe_email.delay(self.email) send_unsubscribe_email.delay(self.email)
@ -166,6 +170,10 @@ class Subscriber(ProjectBaseMixin):
def active_subscriptions(self): def active_subscriptions(self):
return self.subscription_types.exclude(subscriber__subscribe__unsubscribe_date__isnull=False) return self.subscription_types.exclude(subscriber__subscribe__unsubscribe_date__isnull=False)
@property
def subscription_history(self):
return Subscribe.objects.subscription_history(self.pk)
class SubscribeQuerySet(models.QuerySet): class SubscribeQuerySet(models.QuerySet):

View File

@ -141,14 +141,24 @@ class UpdateSubscribeSerializer(serializers.ModelSerializer):
class SubscribeObjectSerializer(serializers.ModelSerializer): class SubscribeObjectSerializer(serializers.ModelSerializer):
"""Subscribe serializer.""" """Subscription type serializer."""
subscription_type = serializers.SerializerMethodField()
class Meta: class Meta:
"""Meta class.""" """Meta class."""
model = models.Subscriber model = models.Subscribe
fields = ('subscriber',) fields = (
read_only_fields = ('subscribe_date', 'unsubscribe_date',) 'subscribe_date',
'unsubscribe_date',
'subscription_type'
)
def get_subscription_type(self, instance):
return SubscriptionTypeSerializer(
models.SubscriptionType.objects.get(pk=instance.old_subscription_type_id)
).data
class SubscribeSerializer(serializers.ModelSerializer): class SubscribeSerializer(serializers.ModelSerializer):
@ -156,6 +166,7 @@ class SubscribeSerializer(serializers.ModelSerializer):
email = serializers.EmailField(required=False, source='send_to') email = serializers.EmailField(required=False, source='send_to')
subscription_types = SubscriptionTypeSerializer(source='active_subscriptions', read_only=True, many=True) subscription_types = SubscriptionTypeSerializer(source='active_subscriptions', read_only=True, many=True)
history = SubscribeObjectSerializer(source='subscription_history', many=True)
class Meta: class Meta:
"""Meta class.""" """Meta class."""
@ -165,6 +176,7 @@ class SubscribeSerializer(serializers.ModelSerializer):
'email', 'email',
'subscription_types', 'subscription_types',
'link_to_unsubscribe', 'link_to_unsubscribe',
'history',
) )

View File

@ -7,6 +7,7 @@ from django.template.loader import get_template, render_to_string
from main.models import SiteSettings from main.models import SiteSettings
from notification import models from notification import models
from django.utils.translation import gettext_lazy as _
@shared_task @shared_task