Browse Source

Fixes #4300: Pass "commit" argument when executing scripts via REST API

Jeremy Stretch 6 years ago
parent
commit
c7b74b2090

+ 2 - 1
docs/release-notes/version-2.7.md

@@ -9,11 +9,12 @@
 
 ## Bug Fixes
 
-* [#4277](https://github.com/netbox-community/netbox/issues/4277) - Fix filtering of clusters by tenant
 * [#4274](https://github.com/netbox-community/netbox/issues/4274) - Fix incorrect schema definition of `int` type choicefields
+* [#4277](https://github.com/netbox-community/netbox/issues/4277) - Fix filtering of clusters by tenant
 * [#4282](https://github.com/netbox-community/netbox/issues/4282) - Fix label on export button for device types
 * [#4285](https://github.com/netbox-community/netbox/issues/4285) - Include A/Z termination sites in provider circuits table
 * [#4295](https://github.com/netbox-community/netbox/issues/4295) - Fix assignment of parent LAG during interface bulk edit
+* [#4300](https://github.com/netbox-community/netbox/issues/4300) - Pass "commit" argument when executing scripts via REST API
 * [#4301](https://github.com/netbox-community/netbox/issues/4301) - Fix exception when deleting device type with components
 
 ---

+ 4 - 3
netbox/extras/api/views.py

@@ -14,7 +14,7 @@ from extras.models import (
     ConfigContext, CustomFieldChoice, ExportTemplate, Graph, ImageAttachment, ObjectChange, ReportResult, Tag,
 )
 from extras.reports import get_report, get_reports
-from extras.scripts import get_script, get_scripts
+from extras.scripts import get_script, get_scripts, run_script
 from utilities.api import FieldChoicesViewSet, IsAuthenticatedOrLoginNotRequired, ModelViewSet
 from . import serializers
 
@@ -265,8 +265,9 @@ class ScriptViewSet(ViewSet):
         input_serializer = serializers.ScriptInputSerializer(data=request.data)
 
         if input_serializer.is_valid():
-            output = script.run(input_serializer.data['data'])
-            script.output = output
+            data = input_serializer.data['data']
+            commit = input_serializer.data['commit']
+            script.output, execution_time = run_script(script, data, request, commit)
             output_serializer = serializers.ScriptOutputSerializer(script)
 
             return Response(output_serializer.data)

+ 1 - 1
netbox/extras/tests/test_api.py

@@ -582,7 +582,7 @@ class ScriptTest(APITestCase):
         var2 = IntegerVar()
         var3 = BooleanVar()
 
-        def run(self, data):
+        def run(self, data, commit=True):
 
             self.log_info(data['var1'])
             self.log_success(data['var2'])