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:
@ -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)))
|
||||||
|
Reference in New Issue
Block a user