From f6cf81ea5a74f3520db85aba05982887b910f21b Mon Sep 17 00:00:00 2001 From: Arthur Date: Fri, 4 Sep 2026 14:59:38 -0700 Subject: [PATCH] move check to serializer --- netbox/extras/api/serializers_/scripts.py | 10 ++++++++++ netbox/extras/api/views.py | 6 +----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/netbox/extras/api/serializers_/scripts.py b/netbox/extras/api/serializers_/scripts.py index 3c128959f..77f0aeec1 100644 --- a/netbox/extras/api/serializers_/scripts.py +++ b/netbox/extras/api/serializers_/scripts.py @@ -188,6 +188,16 @@ class ScriptInputSerializer(serializers.Serializer): if script and script.python_class: self.fields['notifications'].default = script.python_class.notifications_default + def validate_data(self, value): + """ + Validates that the script input is an object mapping variable names to values. + """ + if not isinstance(value, dict): + raise serializers.ValidationError( + _('Invalid data payload; expected an object mapping variable names to values.') + ) + return value + def validate_schedule_at(self, value): """ Validates the specified schedule time for a script execution. diff --git a/netbox/extras/api/views.py b/netbox/extras/api/views.py index abf2b176c..739901d82 100644 --- a/netbox/extras/api/views.py +++ b/netbox/extras/api/views.py @@ -409,11 +409,7 @@ class ScriptViewSet(ListModelMixin, RetrieveModelMixin, BaseViewSet): validated = input_serializer.validated_data - payload = validated.get('data') - if not isinstance(payload, dict): - raise ValidationError( - {'data': _('Invalid data payload; expected an object mapping variable names to values.')} - ) + payload = validated['data'] # Guaranteed non-None by the is_executable check above script_class = script.python_class