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})")