summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2011-07-30 00:49:34 -0600
committerMichael Merickel <michael@merickel.org>2011-07-30 00:49:34 -0600
commit1a45b444d28041c06a188800af1bf918bf26a3d7 (patch)
treefa0f119f31e1bb0639a4b54abcf5d5b3c1edbd22
parent391c349c8d9d0c89633cc2e92a2ddb1c045ab2f1 (diff)
downloadpyramid-1a45b444d28041c06a188800af1bf918bf26a3d7.tar.gz
pyramid-1a45b444d28041c06a188800af1bf918bf26a3d7.tar.bz2
pyramid-1a45b444d28041c06a188800af1bf918bf26a3d7.zip
Added support for a 'pyramid.include' setting to add arbitrary
modules to pyramid from within an INI file.
-rw-r--r--pyramid/config.py7
-rw-r--r--pyramid/tests/test_config.py17
2 files changed, 24 insertions, 0 deletions
diff --git a/pyramid/config.py b/pyramid/config.py
index b0041f370..159422c22 100644
--- a/pyramid/config.py
+++ b/pyramid/config.py
@@ -717,6 +717,11 @@ class Configurator(object):
policies, renderers, a debug logger, a locale negotiator, and various
other settings using the configurator's current registry, as per the
descriptions in the Configurator constructor."""
+ if settings:
+ includes = settings.pop('pyramid.include', '')
+ includes = [x.strip() for x in includes.splitlines()]
+ else:
+ includes = []
registry = self.registry
self._fix_registry()
self._set_settings(settings)
@@ -772,6 +777,8 @@ class Configurator(object):
if default_view_mapper is not None:
self.set_view_mapper(default_view_mapper)
self.commit()
+ for inc in includes:
+ self.include(inc)
def hook_zca(self):
""" Call :func:`zope.component.getSiteManager.sethook` with
diff --git a/pyramid/tests/test_config.py b/pyramid/tests/test_config.py
index 22dd878c5..250c53b9a 100644
--- a/pyramid/tests/test_config.py
+++ b/pyramid/tests/test_config.py
@@ -569,6 +569,18 @@ class ConfiguratorTests(unittest.TestCase):
config.setup_registry(default_permission='view')
self.assertEqual(reg.getUtility(IDefaultPermission), 'view')
+ def test_setup_registry_includes(self):
+ from pyramid.registry import Registry
+ reg = Registry()
+ config = self._makeOne(reg)
+ settings = {
+ 'pyramid.include': """pyramid.tests.test_config.dummy_include
+pyramid.tests.test_config.dummy_include2""",
+ }
+ config.setup_registry(settings=settings)
+ self.assert_(reg.included)
+ self.assert_(reg.also_included)
+
def test_get_settings_nosettings(self):
from pyramid.registry import Registry
reg = Registry()
@@ -5604,6 +5616,11 @@ def dummyfactory(request):
""" """
def dummy_include(config):
+ config.registry.included = True
+ config.action('discrim', None, config.package)
+
+def dummy_include2(config):
+ config.registry.also_included = True
config.action('discrim', None, config.package)
includeme = dummy_include