1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Update plugin URL loading logic

This commit is contained in:
Jeremy Stretch
2020-03-20 15:51:14 -04:00
parent bc50c2aa55
commit ad1522f428

View File

@ -8,6 +8,7 @@ from django.views.static import serve
from drf_yasg import openapi from drf_yasg import openapi
from drf_yasg.views import get_schema_view from drf_yasg.views import get_schema_view
from extras.plugins import PluginConfig
from netbox.views import APIRootView, HomeView, StaticMediaFailureView, SearchView from netbox.views import APIRootView, HomeView, StaticMediaFailureView, SearchView
from users.views import LoginView, LogoutView from users.views import LoginView, LogoutView
from .admin import admin_site from .admin import admin_site
@ -76,11 +77,11 @@ plugin_patterns = []
plugin_api_patterns = [] plugin_api_patterns = []
for app in apps.get_app_configs(): for app in apps.get_app_configs():
# Loop over all apps look for installed plugins # Loop over all apps look for installed plugins
if hasattr(app, 'NetBoxPluginMeta'): if isinstance(app, PluginConfig):
# Check if the plugin specifies any URLs # Check if the plugin specifies any URLs
if importlib.util.find_spec('{}.urls'.format(app.name)): if importlib.util.find_spec('{}.urls'.format(app.name)):
urls = importlib.import_module('{}.urls'.format(app.name)) urls = importlib.import_module('{}.urls'.format(app.name))
url_slug = getattr(app.NetBoxPluginMeta, 'url_slug', app.label) url_slug = getattr(app, 'url_slug') or app.label
if hasattr(urls, 'urlpatterns'): if hasattr(urls, 'urlpatterns'):
# Mount URLs at `<url_slug>/<path>` # Mount URLs at `<url_slug>/<path>`
plugin_patterns.append( plugin_patterns.append(
@ -91,7 +92,7 @@ for app in apps.get_app_configs():
if importlib.util.find_spec('{}.api.urls'.format(app.name)): if importlib.util.find_spec('{}.api.urls'.format(app.name)):
urls = importlib.import_module('{}.api.urls'.format(app.name)) urls = importlib.import_module('{}.api.urls'.format(app.name))
if hasattr(urls, 'urlpatterns'): if hasattr(urls, 'urlpatterns'):
url_slug = getattr(app.NetBoxPluginMeta, 'url_slug', app.label) url_slug = getattr(app, 'url_slug') or app.label
# Mount URLs at `<url_slug>/<path>` # Mount URLs at `<url_slug>/<path>`
plugin_api_patterns.append( plugin_api_patterns.append(
path('{}/'.format(url_slug), include((urls.urlpatterns, app.label))) path('{}/'.format(url_slug), include((urls.urlpatterns, app.label)))