From 6f1973b325cba5600eb91ff6982baf68b4567336 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Sun, 31 Oct 2010 22:02:50 -0400 Subject: defer looking up settings until rendering time (no settings registered yet) --- pyramid/mako_templating.py | 2 +- pyramid/renderers.py | 6 ++---- pyramid/tests/test_configuration.py | 8 ++++++-- pyramid/tests/test_renderers.py | 2 +- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/pyramid/mako_templating.py b/pyramid/mako_templating.py index a414338af..9dc2b09e8 100644 --- a/pyramid/mako_templating.py +++ b/pyramid/mako_templating.py @@ -63,7 +63,7 @@ def renderer_factory(info): input_encoding = settings.get('mako.input_encoding', 'utf-8') if directories is None: raise ConfigurationError( - 'Mako template used without a lookup path') + 'Mako template used without a ``mako.directories`` setting') directories = directories.splitlines() directories = [ abspath_from_resource_spec(d) for d in directories ] lookup = PkgResourceTemplateLookup(directories=directories, diff --git a/pyramid/renderers.py b/pyramid/renderers.py index 14380cd16..6c2d20cce 100644 --- a/pyramid/renderers.py +++ b/pyramid/renderers.py @@ -212,10 +212,8 @@ def renderer_from_name(path, package=None): # XXX deprecate? class RendererHelper(object): def __init__(self, name=None, package=None, registry=None): - settings = None if registry is None: registry = get_current_registry() - settings = registry.queryUtility(ISettings) if name and '.' in name: rtype = os.path.splitext(name)[1] @@ -229,10 +227,10 @@ class RendererHelper(object): self.type = rtype self.factory = factory self.registry = registry - self.settings = settings @reify def renderer(self): + settings = self.registry.queryUtility(ISettings) if self.factory is None: raise ValueError( 'No such renderer factory %s' % str(self.type)) @@ -241,7 +239,7 @@ class RendererHelper(object): 'type':self.type, 'package':self.package, 'registry':self.registry, - 'settings':self.settings, + 'settings':settings, }) def get_renderer(self): diff --git a/pyramid/tests/test_configuration.py b/pyramid/tests/test_configuration.py index 0ff65d309..5a75fdae4 100644 --- a/pyramid/tests/test_configuration.py +++ b/pyramid/tests/test_configuration.py @@ -1354,6 +1354,7 @@ class ConfiguratorTests(unittest.TestCase): def test_add_view_with_template_renderer(self): import pyramid.tests + from pyramid.interfaces import ISettings class view(object): def __init__(self, context, request): self.request = request @@ -1369,14 +1370,16 @@ class ConfiguratorTests(unittest.TestCase): request = self._makeRequest(config) result = wrapper(None, request) self.assertEqual(result.body, 'Hello!') + settings = config.registry.queryUtility(ISettings) self.assertEqual(renderer.info, {'registry':config.registry, 'type': '.txt', 'name': 'pyramid.tests:fixtures/minimal.txt', 'package': pyramid.tests, - 'settings':None}) + 'settings':settings}) def test_add_view_with_template_renderer_no_callable(self): import pyramid.tests + from pyramid.interfaces import ISettings config = self._makeOne() renderer = self._registerRenderer(config) fixture = 'pyramid.tests:fixtures/minimal.txt' @@ -1385,12 +1388,13 @@ class ConfiguratorTests(unittest.TestCase): request = self._makeRequest(config) result = wrapper(None, request) self.assertEqual(result.body, 'Hello!') + settings = config.registry.queryUtility(ISettings) self.assertEqual(renderer.info, {'registry':config.registry, 'type': '.txt', 'name': 'pyramid.tests:fixtures/minimal.txt', 'package':pyramid.tests, - 'settings':None, + 'settings':settings, }) def test_add_view_with_request_type_as_iface(self): diff --git a/pyramid/tests/test_renderers.py b/pyramid/tests/test_renderers.py index 018efa2d4..80c04c940 100644 --- a/pyramid/tests/test_renderers.py +++ b/pyramid/tests/test_renderers.py @@ -290,7 +290,7 @@ class TestRendererHelper(unittest.TestCase): factory = self._registerRendererFactory() class DummyRegistry(object): def __init__(self): - self.responses = [factory, lambda *arg: {}] + self.responses = [factory, lambda *arg: {}, None] def queryUtility(self, iface, name=None): self.queried = True return self.responses.pop(0) -- cgit v1.2.3