summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2010-10-31 22:02:50 -0400
committerChris McDonough <chrism@plope.com>2010-10-31 22:02:50 -0400
commit6f1973b325cba5600eb91ff6982baf68b4567336 (patch)
treedfaf978e15ee5b4b1199d40575c3075c57de23ff
parent04bcc2a67e866df226ec2f5ec1baa2754bbe354d (diff)
downloadpyramid-6f1973b325cba5600eb91ff6982baf68b4567336.tar.gz
pyramid-6f1973b325cba5600eb91ff6982baf68b4567336.tar.bz2
pyramid-6f1973b325cba5600eb91ff6982baf68b4567336.zip
defer looking up settings until rendering time (no settings registered yet)
-rw-r--r--pyramid/mako_templating.py2
-rw-r--r--pyramid/renderers.py6
-rw-r--r--pyramid/tests/test_configuration.py8
-rw-r--r--pyramid/tests/test_renderers.py2
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)