diff --git a/netbox/netbox/urls.py b/netbox/netbox/urls.py index ad3806c6f..6a1db6dea 100644 --- a/netbox/netbox/urls.py +++ b/netbox/netbox/urls.py @@ -1,14 +1,17 @@ from django.conf import settings -from django.conf.urls import include, url -from django.urls import path +from django.conf.urls import include +from django.urls import path, register_converter from django.views.static import serve from drf_yasg import openapi from drf_yasg.views import get_schema_view from netbox.views import APIRootView, HomeView, SearchView from users.views import LoginView, LogoutView +from utilities import converters from .admin import admin_site +register_converter(converters.JSONOrYAMLConverter, 'json_or_yaml') + schema_view = get_schema_view( openapi.Info( title="NetBox API", @@ -53,7 +56,7 @@ _patterns = [ path(r'api/virtualization/', include('virtualization.api.urls')), path(r'api/docs/', schema_view.with_ui('swagger'), name='api_docs'), path(r'api/redoc/', schema_view.with_ui('redoc'), name='api_redocs'), - url(r'api/swagger(?P.json|.yaml)', schema_view.without_ui(), name='schema_swagger'), + path(r'api/swagger', schema_view.without_ui(), name='schema_swagger'), # Serving static media in Django to pipe it through LoginRequiredMiddleware path(r'media/', serve, {'document_root': settings.MEDIA_ROOT}), diff --git a/netbox/utilities/converters.py b/netbox/utilities/converters.py new file mode 100644 index 000000000..d8b8f69c4 --- /dev/null +++ b/netbox/utilities/converters.py @@ -0,0 +1,8 @@ +class JSONOrYAMLConverter: + regex = '.json|.yaml' + + def to_python(self, value): + return value + + def to_url(self, value): + return value