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."""
self.subscribe_set.update(
unsunbscribe_date=now(),
unsubscribe_date=now(),
old_subscriber_id=F('subscriber_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:
send_unsubscribe_email.delay(self.email)
@ -166,6 +170,10 @@ class Subscriber(ProjectBaseMixin):
def active_subscriptions(self):
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):

View File

@ -141,14 +141,24 @@ class UpdateSubscribeSerializer(serializers.ModelSerializer):
class SubscribeObjectSerializer(serializers.ModelSerializer):
"""Subscribe serializer."""
"""Subscription type serializer."""
subscription_type = serializers.SerializerMethodField()
class Meta:
"""Meta class."""
model = models.Subscriber
fields = ('subscriber',)
read_only_fields = ('subscribe_date', 'unsubscribe_date',)
model = models.Subscribe
fields = (
'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):
@ -156,6 +166,7 @@ class SubscribeSerializer(serializers.ModelSerializer):
email = serializers.EmailField(required=False, source='send_to')
subscription_types = SubscriptionTypeSerializer(source='active_subscriptions', read_only=True, many=True)
history = SubscribeObjectSerializer(source='subscription_history', many=True)
class Meta:
"""Meta class."""
@ -165,6 +176,7 @@ class SubscribeSerializer(serializers.ModelSerializer):
'email',
'subscription_types',
'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 notification import models
from django.utils.translation import gettext_lazy as _
@shared_task