From 10b2a8e8e6f7f0f51a204280edd178c6b417284b Mon Sep 17 00:00:00 2001 From: Oleh Paduchak Date: Wed, 23 Apr 2025 11:05:13 +0300 Subject: [PATCH] lifted 1 configured addon per service constraint for link --- addon_service/configured_addon/link/serializers.py | 1 + addon_service/configured_addon/serializers.py | 13 +++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/addon_service/configured_addon/link/serializers.py b/addon_service/configured_addon/link/serializers.py index fea9efc3..b0848489 100644 --- a/addon_service/configured_addon/link/serializers.py +++ b/addon_service/configured_addon/link/serializers.py @@ -62,6 +62,7 @@ class ConfiguredLinkAddonSerializer(ConfiguredAddonSerializer): class Meta: model = ConfiguredLinkAddon read_only_fields = ["external_link_service"] + one_addon_per_node = False fields = [ "id", "display_name", diff --git a/addon_service/configured_addon/serializers.py b/addon_service/configured_addon/serializers.py index ce6d92ad..ab0e6475 100644 --- a/addon_service/configured_addon/serializers.py +++ b/addon_service/configured_addon/serializers.py @@ -40,10 +40,14 @@ def get_current_user_is_owner(self, configured_addon: ConfiguredAddon): def create(self, validated_data): validated_data = self.fix_dotted_base_account(validated_data) base_account = validated_data["base_account"] - if ConfiguredAddon.objects.filter( - base_account__external_service=base_account.external_service, - authorized_resource__resource_uri=validated_data["resource_uri"], - ).exists(): + validate_one_addon = getattr(self.Meta, "one_addon_per_node", True) + if ( + validate_one_addon + and ConfiguredAddon.objects.filter( + base_account__external_service=base_account.external_service, + authorized_resource__resource_uri=validated_data["resource_uri"], + ).exists() + ): raise ValidationError( f"ConfiguredAddon for requested addon and authorized_resource {validated_data['resource_uri']} already exists" ) @@ -61,6 +65,7 @@ def update(self, instance, validated_data): class Meta: resource_name = "configured-addons" model = ConfiguredAddon + one_addon_per_node = True fields = [ "id", "url",