mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
added admin and api views for listing all plugins, and refactored urls import
This commit is contained in:
53
netbox/extras/plugins/urls.py
Normal file
53
netbox/extras/plugins/urls.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import importlib
|
||||
|
||||
from django.apps import apps
|
||||
from django.conf import settings
|
||||
from django.conf.urls import include
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.urls import path
|
||||
from django.utils.module_loading import import_string
|
||||
|
||||
from . import views
|
||||
|
||||
# Plugins
|
||||
plugin_patterns = []
|
||||
plugin_api_patterns = []
|
||||
|
||||
for plugin in settings.PLUGINS:
|
||||
app = apps.get_app_config(plugin)
|
||||
|
||||
url_slug = getattr(app, 'url_slug') or app.label
|
||||
|
||||
# Check if the plugin specifies any URLs
|
||||
try:
|
||||
urlpatterns = import_string(f"{plugin}.urls.urlpatterns")
|
||||
except ImportError:
|
||||
# No urls defined
|
||||
urlpatterns = None
|
||||
if urlpatterns:
|
||||
plugin_patterns.append(
|
||||
path(f"{url_slug}/", include((urlpatterns, app.label)))
|
||||
)
|
||||
|
||||
# Check if the plugin specifies any API URLs
|
||||
try:
|
||||
urlpatterns = import_string(f"{plugin}.api.urls.urlpatterns")
|
||||
app_name = import_string(f"{plugin}.api.urls.app_name")
|
||||
except ImportError:
|
||||
# No urls defined
|
||||
urlpatterns = None
|
||||
if urlpatterns:
|
||||
plugin_api_patterns.append(
|
||||
path(f"{url_slug}/", include((urlpatterns, app_name)))
|
||||
)
|
||||
|
||||
# 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')
|
||||
]
|
Reference in New Issue
Block a user