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

42 lines
1.4 KiB
Python
Raw Normal View History

from django.apps import apps
from django.conf import settings
from django.conf.urls import include
from django.contrib.admin.views.decorators import staff_member_required
from django.urls import path
from django.utils.module_loading import import_string
from . import views
2020-03-27 13:26:53 -04:00
# Initialize URL base, API, and admin URL patterns for plugins
plugin_patterns = []
2020-03-27 13:26:53 -04:00
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/', staff_member_required(views.InstalledPluginsAdminView.as_view()), name='plugins_list')
2020-03-27 13:26:53 -04:00
]
2020-03-27 13:26:53 -04:00
# Register base/API URL patterns for each plugin
for plugin in settings.PLUGINS:
app = apps.get_app_config(plugin)
2020-03-24 16:20:47 -04:00
base_url = getattr(app, 'base_url') or app.label
2020-03-27 13:26:53 -04:00
# Check if the plugin specifies any base URLs
try:
urlpatterns = import_string(f"{plugin}.urls.urlpatterns")
plugin_patterns.append(
2020-03-24 16:20:47 -04:00
path(f"{base_url}/", include((urlpatterns, app.label)))
)
except ImportError:
pass
# Check if the plugin specifies any API URLs
try:
urlpatterns = import_string(f"{plugin}.api.urls.urlpatterns")
plugin_api_patterns.append(
2020-03-24 16:20:47 -04:00
path(f"{base_url}/", include((urlpatterns, f"{app.label}-api")))
)
except ImportError:
pass