use setuptools entrypoints to load plugins
This commit is contained in:
parent
fba08e4a5d
commit
a1fda2a7a1
|
@ -5,6 +5,7 @@ import os.path
|
|||
import django.conf.global_settings as DEFAULT_SETTINGS
|
||||
from django.core.urlresolvers import reverse_lazy
|
||||
from logging.handlers import SysLogHandler
|
||||
import pkg_resources
|
||||
|
||||
PROJECT_ROOT = os.path.join(os.path.dirname(__file__), '.')
|
||||
|
||||
|
@ -154,6 +155,14 @@ INSTALLED_APPS = (
|
|||
'ajax_select',
|
||||
)
|
||||
|
||||
# Load plugin applications
|
||||
for entrypoint in pkg_resources.iter_entry_points('polynum_plugin'):
|
||||
plugin_class = entrypoint.load()
|
||||
plugin = plugin_class()
|
||||
INSTALLED_APPS += tuple(plugin.get_applications())
|
||||
|
||||
|
||||
|
||||
# From http://django-crispy-forms.readthedocs.org/en/d-0/install.html
|
||||
CRISPY_TEMPLATE_PACK = 'bootstrap'
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import pkg_resources
|
||||
|
||||
from django.conf import settings
|
||||
from django.conf.urls import patterns, include, url
|
||||
from django.core.urlresolvers import reverse_lazy
|
||||
|
@ -19,8 +21,22 @@ request_decorator = combine_decorators(
|
|||
user_passes_test(user_has_validated_cgu,
|
||||
login_url=reverse_lazy('cgu-view')))
|
||||
|
||||
# Load plugin applications
|
||||
after_urls = []
|
||||
before_urls = []
|
||||
|
||||
urlpatterns = patterns('',
|
||||
for entrypoint in pkg_resources.iter_entry_points('polynum_plugin'):
|
||||
plugin_class = entrypoint.load()
|
||||
plugin = plugin_class()
|
||||
for after, urls in plugin.get_urls():
|
||||
if after:
|
||||
after_urls.append(url(r'^', include(urls)))
|
||||
else:
|
||||
before_urls.append(url(r'^', include(urls)))
|
||||
|
||||
urlpatterns = patterns('', *before_urls)
|
||||
|
||||
urlpatterns += patterns('',
|
||||
# Uncomment the admin/doc line below to enable admin documentation:
|
||||
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
|
||||
|
||||
|
@ -64,3 +80,4 @@ urlpatterns += patterns('',
|
|||
}),
|
||||
)
|
||||
|
||||
urlpatterns += patterns('', *after_urls)
|
||||
|
|
Reference in New Issue