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 <jstretch@netboxlabs.com>
This commit is contained in:
Arthur Hanson 2024-07-26 20:46:16 +07:00 committed by GitHub
parent 22319b2cce
commit 0a1ce79154
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 2 additions and 50 deletions

View File

@ -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!")

View File

@ -139,11 +139,6 @@ urlpatterns = [
path('scripts/<int:pk>/jobs/', views.ScriptJobsView.as_view(), name='script_jobs'),
path('script-modules/<int:pk>/', include(get_model_urls('extras', 'scriptmodule'))),
# Redirects for legacy script URLs
# TODO: Remove in NetBox v4.1
path('scripts/<str:module>/<str:name>/', views.LegacyScriptRedirectView.as_view()),
path('scripts/<str:module>/<str:name>/<path:path>/', views.LegacyScriptRedirectView.as_view()),
# Markdown
path('render/markdown/', views.RenderMarkdownView.as_view(), name="render_markdown"),
]

View File

@ -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):

View File

@ -1234,25 +1234,6 @@ class ScriptJobsView(BaseScriptView):
})
class LegacyScriptRedirectView(ContentTypePermissionRequiredMixin, View):
"""
Redirect legacy (pre-v4.0) script URLs. Examples:
/extras/scripts/<module>/<name>/ --> /extras/scripts/<id>/
/extras/scripts/<module>/<name>/source/ --> /extras/scripts/<id>/source/
/extras/scripts/<module>/<name>/jobs/ --> /extras/scripts/<id>/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()

View File

@ -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'

View File

@ -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)

View File

@ -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: