From bc51d04988839ff360207a2e27765ce5743d10a4 Mon Sep 17 00:00:00 2001 From: Martin Hauser Date: Wed, 22 Jul 2026 18:01:54 +0200 Subject: [PATCH] fix(extras): Set default return URL for ScriptModule create view The ScriptModule add view now falls back to the Scripts list when no explicit return URL is provided. Adds regression test to verify the default return URL behavior. Fixes #22697 --- netbox/extras/tests/test_views.py | 14 ++++++++++++++ netbox/extras/views.py | 1 + 2 files changed, 15 insertions(+) diff --git a/netbox/extras/tests/test_views.py b/netbox/extras/tests/test_views.py index f04e96bba..1fefd2689 100644 --- a/netbox/extras/tests/test_views.py +++ b/netbox/extras/tests/test_views.py @@ -1148,6 +1148,20 @@ class ScriptListViewTestCase(TestCase): self.assertTemplateUsed(response, 'extras/inc/script_list_content.html') +class ScriptModuleCreateViewTestCase(TestCase): + user_permissions = ['core.add_managedfile', 'extras.add_scriptmodule'] + + @tag('regression') + def test_default_return_url(self): + """ + The add view should fall back to the scripts list as its return URL. + """ + response = self.client.get(reverse('extras:scriptmodule_add')) + + self.assertEqual(response.status_code, 200) + self.assertEqual(response.context['return_url'], reverse('extras:script_list')) + + class ScriptValidationErrorTestCase(TestCase): user_permissions = ['extras.view_script', 'extras.run_script'] diff --git a/netbox/extras/views.py b/netbox/extras/views.py index cec119378..3aea3fbdf 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -1636,6 +1636,7 @@ class DashboardWidgetDeleteView(LoginRequiredMixin, View): class ScriptModuleCreateView(generic.ObjectEditView): queryset = ScriptModule.objects.all() form = forms.ScriptFileForm + default_return_url = 'extras:script_list' def alter_object(self, obj, *args, **kwargs): obj.file_root = ManagedFileRootPathChoices.SCRIPTS