From 650010b835550ebb032decf64af9c111538f20eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Mon, 25 May 2015 12:00:04 +0200 Subject: [PATCH] plugins: add method to register manager urls (#7345) --- combo/manager/urls.py | 4 +++- combo/plugins.py | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/combo/manager/urls.py b/combo/manager/urls.py index 803e5bbf..c9ff0f20 100644 --- a/combo/manager/urls.py +++ b/combo/manager/urls.py @@ -16,9 +16,9 @@ from django.conf.urls import patterns, url, include +from .. import plugins from . import views - urlpatterns = patterns('combo.views', url(r'^$', views.homepage, name='combo-manager-homepage'), url(r'^menu.json$', views.menu_json), @@ -58,3 +58,5 @@ urlpatterns = patterns('combo.views', url(r'^assets/delete$', views.asset_delete, name='combo-manager-asset-delete'), (r'^ckeditor/', include('ckeditor.urls')), ) + +urlpatterns = plugins.register_plugins_manager_urls(urlpatterns) diff --git a/combo/plugins.py b/combo/plugins.py index ad86e75f..cb67151d 100644 --- a/combo/plugins.py +++ b/combo/plugins.py @@ -55,6 +55,22 @@ def register_plugins_urls(urlpatterns): post_patterns = patterns('', *post_urls) return pre_patterns + urlpatterns + post_patterns +def register_plugins_manager_urls(urlpatterns): + pre_urls = [] + post_urls = [] + for plugin in apps.get_app_configs(): + if hasattr(plugin, 'get_before_manager_urls'): + urls = plugin.get_before_manager_urls() + if urls: + pre_urls.append(url('^', include(urls))) + if hasattr(plugin, 'get_after_manager_urls'): + urls = plugin.get_after_manager_urls() + if urls: + post_urls.append(url('^', include(urls))) + pre_patterns = patterns('', *pre_urls) + post_patterns = patterns('', *post_urls) + return pre_patterns + urlpatterns + post_patterns + def register_plugins_apps(installed_apps): installed_apps = tuple(installed_apps) for plugin in get_plugins():