From 0a1ce791542c46c072e942aae0d3d5557480e65d Mon Sep 17 00:00:00 2001 From: Arthur Hanson Date: Fri, 26 Jul 2024 20:46:16 +0700 Subject: [PATCH] 16992 remove TODO for NetBox 4.1 (#16993) * 16992 remove TODO for NetBox 4.1 * 16992 fix custom validator * Remove obsolete LegacyScriptRedirectView --------- Co-authored-by: Jeremy Stretch --- netbox/extras/tests/test_customvalidators.py | 2 +- netbox/extras/urls.py | 5 ----- netbox/extras/validators.py | 8 +------- netbox/extras/views.py | 19 ------------------- netbox/netbox/constants.py | 4 ---- netbox/utilities/forms/fields/dynamic.py | 5 ----- netbox/utilities/templatetags/form_helpers.py | 9 --------- 7 files changed, 2 insertions(+), 50 deletions(-) diff --git a/netbox/extras/tests/test_customvalidators.py b/netbox/extras/tests/test_customvalidators.py index 217fddd18..49deb9da5 100644 --- a/netbox/extras/tests/test_customvalidators.py +++ b/netbox/extras/tests/test_customvalidators.py @@ -14,7 +14,7 @@ from utilities.request import NetBoxFakeRequest class MyValidator(CustomValidator): - def validate(self, instance): + def validate(self, instance, request): if instance.name != 'foo': self.fail("Name must be foo!") diff --git a/netbox/extras/urls.py b/netbox/extras/urls.py index 6d515cf5f..b13af1db9 100644 --- a/netbox/extras/urls.py +++ b/netbox/extras/urls.py @@ -139,11 +139,6 @@ urlpatterns = [ path('scripts//jobs/', views.ScriptJobsView.as_view(), name='script_jobs'), path('script-modules//', include(get_model_urls('extras', 'scriptmodule'))), - # Redirects for legacy script URLs - # TODO: Remove in NetBox v4.1 - path('scripts///', views.LegacyScriptRedirectView.as_view()), - path('scripts////', views.LegacyScriptRedirectView.as_view()), - # Markdown path('render/markdown/', views.RenderMarkdownView.as_view(), name="render_markdown"), ] diff --git a/netbox/extras/validators.py b/netbox/extras/validators.py index 082f87d64..6823c1978 100644 --- a/netbox/extras/validators.py +++ b/netbox/extras/validators.py @@ -123,13 +123,7 @@ class CustomValidator: ) # Execute custom validation logic (if any) - # TODO: Remove in v4.1 - # Inspect the validate() method, which may have been overridden, to determine - # whether we should pass the request (maintains backward compatibility for pre-v4.0) - if 'request' in inspect.signature(self.validate).parameters: - self.validate(instance, request) - else: - self.validate(instance) + self.validate(instance, request) @staticmethod def _get_request_attr(request, name): diff --git a/netbox/extras/views.py b/netbox/extras/views.py index 2de2d4241..2ade79c96 100644 --- a/netbox/extras/views.py +++ b/netbox/extras/views.py @@ -1234,25 +1234,6 @@ class ScriptJobsView(BaseScriptView): }) -class LegacyScriptRedirectView(ContentTypePermissionRequiredMixin, View): - """ - Redirect legacy (pre-v4.0) script URLs. Examples: - /extras/scripts/// --> /extras/scripts// - /extras/scripts///source/ --> /extras/scripts//source/ - /extras/scripts///jobs/ --> /extras/scripts//jobs/ - """ - def get_required_permission(self): - return 'extras.view_script' - - def get(self, request, module, name, path=''): - module = get_object_or_404(ScriptModule.objects.restrict(request.user), file_path__regex=f"^{module}\\.") - script = get_object_or_404(Script.objects.all(), module=module, name=name) - - url = reverse('extras:script', kwargs={'pk': script.pk}) - - return redirect(f'{url}{path}') - - class ScriptResultView(TableMixin, generic.ObjectView): queryset = Job.objects.all() diff --git a/netbox/netbox/constants.py b/netbox/netbox/constants.py index e797f4f29..cdeda583d 100644 --- a/netbox/netbox/constants.py +++ b/netbox/netbox/constants.py @@ -1,7 +1,3 @@ -# Prefix for nested serializers -# TODO: Remove in v4.1 -NESTED_SERIALIZER_PREFIX = 'Nested' - # RQ queue names RQ_QUEUE_DEFAULT = 'default' RQ_QUEUE_HIGH = 'high' diff --git a/netbox/utilities/forms/fields/dynamic.py b/netbox/utilities/forms/fields/dynamic.py index 3459f497a..bec067ba2 100644 --- a/netbox/utilities/forms/fields/dynamic.py +++ b/netbox/utilities/forms/fields/dynamic.py @@ -113,11 +113,6 @@ class DynamicModelChoiceMixin: for var, accessor in self.context.items(): attrs[f'ts-{var}-field'] = accessor - # TODO: Remove in v4.1 - # Legacy means of specifying the disabled indicator - if self.disabled_indicator is not None: - attrs['ts-disabled-field'] = self.disabled_indicator - # Attach any static query parameters if len(self.query_params) > 0: widget.add_query_params(self.query_params) diff --git a/netbox/utilities/templatetags/form_helpers.py b/netbox/utilities/templatetags/form_helpers.py index e9edfed31..242bd7b1c 100644 --- a/netbox/utilities/templatetags/form_helpers.py +++ b/netbox/utilities/templatetags/form_helpers.py @@ -54,15 +54,6 @@ def render_fieldset(form, fieldset): """ Render a group set of fields. """ - # TODO: Remove in NetBox v4.1 - # Handle legacy tuple-based fieldset definitions, e.g. (_('Label'), ('field1, 'field2', 'field3')) - if type(fieldset) is not FieldSet: - warnings.warn( - f"{form.__class__} fieldsets contains a non-FieldSet item: {fieldset}" - ) - name, fields = fieldset - fieldset = FieldSet(*fields, name=name) - rows = [] for item in fieldset.items: