diff options
| author | Michael Merickel <michael@merickel.org> | 2011-07-30 00:49:34 -0600 |
|---|---|---|
| committer | Michael Merickel <michael@merickel.org> | 2011-07-30 00:49:34 -0600 |
| commit | 1a45b444d28041c06a188800af1bf918bf26a3d7 (patch) | |
| tree | fa0f119f31e1bb0639a4b54abcf5d5b3c1edbd22 | |
| parent | 391c349c8d9d0c89633cc2e92a2ddb1c045ab2f1 (diff) | |
| download | pyramid-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.py | 7 | ||||
| -rw-r--r-- | pyramid/tests/test_config.py | 17 |
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 |
