From cb344a3792bbafdc86f38f2d5b4a550143bbff34 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Fri, 27 Mar 2020 13:26:53 -0400 Subject: [PATCH] Clean up plugin URL registration --- netbox/extras/plugins/urls.py | 25 ++++++++++--------------- netbox/netbox/urls.py | 7 ++----- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/netbox/extras/plugins/urls.py b/netbox/extras/plugins/urls.py index 064967677..0e4147ad4 100644 --- a/netbox/extras/plugins/urls.py +++ b/netbox/extras/plugins/urls.py @@ -6,16 +6,22 @@ from django.utils.module_loading import import_string from . import views -# Plugins +# Initialize URL base, API, and admin URL patterns for plugins plugin_patterns = [] -plugin_api_patterns = [] +plugin_api_patterns = [ + path('', views.PluginsAPIRootView.as_view(), name='api-root'), + path('installed-plugins/', views.InstalledPluginsAPIView.as_view(), name='plugins-list') +] +plugin_admin_patterns = [ + path('installed-plugins/', views.installed_plugins_admin_view, name='plugins_list') +] +# Register base/API URL patterns for each plugin for plugin in settings.PLUGINS: app = apps.get_app_config(plugin) - base_url = getattr(app, 'base_url') or app.label - # Check if the plugin specifies any URLs + # Check if the plugin specifies any base URLs try: urlpatterns = import_string(f"{plugin}.urls.urlpatterns") plugin_patterns.append( @@ -32,14 +38,3 @@ for plugin in settings.PLUGINS: ) except ImportError: pass - -# Plugin list admin view -admin_plugin_patterns = [ - path('', views.installed_plugins_admin_view, name='plugins_list') -] - -# Plugin list API view -plugin_api_patterns += [ - path('', views.PluginsAPIRootView.as_view(), name='api-root'), - path('installed-plugins/', views.InstalledPluginsAPIView.as_view(), name='plugins-list') -] diff --git a/netbox/netbox/urls.py b/netbox/netbox/urls.py index 52bc197d4..d8aa2f9d1 100644 --- a/netbox/netbox/urls.py +++ b/netbox/netbox/urls.py @@ -1,6 +1,3 @@ -import importlib - -from django.apps import apps from django.conf import settings from django.conf.urls import include from django.urls import path, re_path, reverse @@ -9,7 +6,7 @@ from django.views.static import serve from drf_yasg import openapi from drf_yasg.views import get_schema_view -from extras.plugins.urls import admin_plugin_patterns, plugin_patterns, plugin_api_patterns +from extras.plugins.urls import plugin_admin_patterns, plugin_patterns, plugin_api_patterns from netbox.views import APIRootView, HomeView, StaticMediaFailureView, SearchView from users.views import LoginView, LogoutView from .admin import admin_site @@ -88,7 +85,7 @@ _patterns = [ # Plugins path('plugins/', include((plugin_patterns, 'plugins'))), path('api/plugins/', include((plugin_api_patterns, 'plugins-api'))), - path('admin/plugins/installed-plugins/', include(admin_plugin_patterns)) + path('admin/plugins/', include(plugin_admin_patterns)) ]