mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Refactor repeated import code
This commit is contained in:
@ -1,12 +1,11 @@
|
||||
import importlib
|
||||
import sys
|
||||
|
||||
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 extras.plugins.utils import import_object
|
||||
|
||||
from . import views
|
||||
|
||||
# Initialize URL base, API, and admin URL patterns for plugins
|
||||
@ -26,29 +25,15 @@ for plugin_path in settings.PLUGINS:
|
||||
base_url = getattr(app, 'base_url') or app.label
|
||||
|
||||
# Check if the plugin specifies any base URLs
|
||||
spec = importlib.util.find_spec(f"{plugin_path}.urls")
|
||||
if spec is not None:
|
||||
# The plugin has a .urls module - import it
|
||||
urls = importlib.util.module_from_spec(spec)
|
||||
sys.modules[f"{plugin_path}.urls"] = urls
|
||||
spec.loader.exec_module(urls)
|
||||
if hasattr(urls, "urlpatterns"):
|
||||
urlpatterns = urls.urlpatterns
|
||||
plugin_patterns.append(
|
||||
path(f"{base_url}/", include((urlpatterns, app.label)))
|
||||
)
|
||||
urlpatterns = import_object(f"{plugin_path}.urls.urlpatterns")
|
||||
if urlpatterns is not None:
|
||||
plugin_patterns.append(
|
||||
path(f"{base_url}/", include((urlpatterns, app.label)))
|
||||
)
|
||||
|
||||
# Check if the plugin specifies any API URLs
|
||||
spec = importlib.util.find_spec(f"{plugin_path}.api")
|
||||
if spec is not None:
|
||||
spec = importlib.util.find_spec(f"{plugin_path}.api.urls")
|
||||
if spec is not None:
|
||||
# The plugin has a .api.urls module - import it
|
||||
api_urls = importlib.util.module_from_spec(spec)
|
||||
sys.modules[f"{plugin_path}.api.urls"] = api_urls
|
||||
spec.loader.exec_module(api_urls)
|
||||
if hasattr(api_urls, "urlpatterns"):
|
||||
urlpatterns = api_urls.urlpatterns
|
||||
plugin_api_patterns.append(
|
||||
path(f"{base_url}/", include((urlpatterns, f"{app.label}-api")))
|
||||
)
|
||||
urlpatterns = import_object(f"{plugin_path}.api.urls.urlpatterns")
|
||||
if urlpatterns is not None:
|
||||
plugin_api_patterns.append(
|
||||
path(f"{base_url}/", include((urlpatterns, f"{app.label}-api")))
|
||||
)
|
||||
|
Reference in New Issue
Block a user