From 8079cc4b42b83ed16827a7c5095b7d39ee9ec003 Mon Sep 17 00:00:00 2001 From: Corban-Lee Date: Tue, 29 Oct 2024 16:49:50 +0000 Subject: [PATCH] limit subscription channels --- apps/api/serializers.py | 7 +++++++ core/settings.py | 1 + 2 files changed, 8 insertions(+) diff --git a/apps/api/serializers.py b/apps/api/serializers.py index bf8ecc4..3e4ed48 100644 --- a/apps/api/serializers.py +++ b/apps/api/serializers.py @@ -324,6 +324,13 @@ class SubscriptionSerializer(DynamicModelSerializer): {"message_style": "Message style must belong to the specified server."} ) + # Prevent assigning more channels than permitted + channels = data.get("channels") + if len(channels) > settings.MAX_CHANNELS_PER_SUBSCRIPTION: + raise serializers.ValidationError( + {"channels": "Please select 5 channels or fewer."} + ) + return data diff --git a/core/settings.py b/core/settings.py index 8526e0d..a18509b 100644 --- a/core/settings.py +++ b/core/settings.py @@ -285,3 +285,4 @@ REST_FRAMEWORK = { MAX_SUBSCRIPTIONS_PER_SERVER = env("MAX_SUBSCRIPTIONS_PER_SERVER", default=15) MAX_FILTERS_PER_SERVER = env("MAX_FILTERS_PER_SERVER", default=15) MAX_MESSAGE_STYLES_PER_SERVER = env("MAX_MESSAGE_STYLES_PER_SERVER", default=15) +MAX_CHANNELS_PER_SUBSCRIPTION = env("MAX_CHANNELS_PER_SUBSCRIPTION", default=5)