2020-03-20 20:10:02 -04:00
|
|
|
from django.apps import apps
|
|
|
|
from django.conf import settings
|
|
|
|
from django.conf.urls import include
|
|
|
|
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)
|
|
|
|
|
2020-03-24 16:20:47 -04:00
|
|
|
base_url = getattr(app, 'base_url') or app.label
|
2020-03-20 20:10:02 -04:00
|
|
|
|
|
|
|
# Check if the plugin specifies any 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)))
|
2020-03-20 20:10:02 -04:00
|
|
|
)
|
2020-03-23 14:03:04 -04:00
|
|
|
except ImportError:
|
|
|
|
pass
|
2020-03-20 20:10:02 -04:00
|
|
|
|
|
|
|
# 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")))
|
2020-03-20 20:10:02 -04:00
|
|
|
)
|
2020-03-23 14:03:04 -04:00
|
|
|
except ImportError:
|
|
|
|
pass
|
2020-03-20 20:10:02 -04:00
|
|
|
|
|
|
|
# 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')
|
|
|
|
]
|