From 1ed09806327fac07d09d8b6da2426ae4f8987e80 Mon Sep 17 00:00:00 2001 From: renatoalmeidaoliveira Date: Tue, 6 Feb 2024 21:16:30 +0000 Subject: [PATCH] Fix json string sent by render_script_data, and setups run_script to process the input data inside the script form --- netbox/extras/models/models.py | 2 +- netbox/extras/scripts.py | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/netbox/extras/models/models.py b/netbox/extras/models/models.py index 46ddc6d39..0e59c74e7 100644 --- a/netbox/extras/models/models.py +++ b/netbox/extras/models/models.py @@ -177,7 +177,7 @@ class EventRule(CustomFieldsMixin, ExportTemplatesMixin, TagsMixin, ChangeLogged Render Script Data, if defined. Otherwise, jump the context as a JSON object. """ if self.action_data: - return render_jinja2(str(self.action_data), context) + return render_jinja2(json.dumps(self.action_data), context) else: return json.dumps(context, cls=JSONEncoder) diff --git a/netbox/extras/scripts.py b/netbox/extras/scripts.py index f28465547..fa92acfe1 100644 --- a/netbox/extras/scripts.py +++ b/netbox/extras/scripts.py @@ -488,6 +488,12 @@ def run_script(data, job, request=None, commit=True, **kwargs): module = ScriptModule.objects.get(pk=job.object_id) script = module.scripts.get(job.name)() + if isinstance(data, str): + data = json.loads(data) + form = script.as_form(data) + if form.is_valid(): + data = form.cleaned_data + logger = logging.getLogger(f"netbox.scripts.{script.full_name}") logger.info(f"Running script (commit={commit})")