diff --git a/apps/notification/models.py b/apps/notification/models.py index 2f0ba500..eefcdb3a 100644 --- a/apps/notification/models.py +++ b/apps/notification/models.py @@ -130,6 +130,10 @@ class Subscriber(ProjectBaseMixin): query = f'?code={self.update_code}' return f'{schema}://{site_domain}{url}{query}' + @property + def active_subscriptions(self): + return self.subscription_types.filter(subscriber__subscribe__unsubscribe_date__isnull=True) + class Subscribe(ProjectBaseMixin): """Subscribe model.""" diff --git a/apps/notification/serializers/common.py b/apps/notification/serializers/common.py index e68d4a14..e1e69991 100644 --- a/apps/notification/serializers/common.py +++ b/apps/notification/serializers/common.py @@ -92,7 +92,7 @@ class SubscribeSerializer(serializers.ModelSerializer): """Subscribe serializer.""" email = serializers.EmailField(required=False, source='send_to') - subscription_types = serializers.SerializerMethodField(source='get_subscription_types', read_only=True) + subscription_types = SubscriptionTypeSerializer(source='active_subscriptions', read_only=True, many=True) class Meta: """Meta class.""" @@ -103,10 +103,3 @@ class SubscribeSerializer(serializers.ModelSerializer): 'subscription_types', 'link_to_unsubscribe', ) - - def get_subscription_types(self, obj): - serializer = SubscriptionTypeSerializer( - obj.subscribe_set.filter(unsubscribe_date=None).values_list('subscription_type', flat=True), - many=True - ) - return serializer.data