Clean up plugin URL registration

This commit is contained in:
Jeremy Stretch 2020-03-27 13:26:53 -04:00
parent dd9fc4173d
commit cb344a3792
2 changed files with 12 additions and 20 deletions

View File

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

View File

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