summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt5
-rw-r--r--pyramid/mako_templating.py5
-rw-r--r--pyramid/tests/test_mako_templating.py12
3 files changed, 15 insertions, 7 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index b55ec5e0d..631ae1246 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -6,6 +6,11 @@ Features
- Python 3.2 compatibility.
+- A ``mako.directories`` setting is no longer required to use Mako templates
+ Rationale: Mako template renderers can be specified using an absolute asset
+ spec. An entire application can be written with such asset specs,
+ requiring no ordered lookup path.
+
Bug Fixes
---------
diff --git a/pyramid/mako_templating.py b/pyramid/mako_templating.py
index 29be339f2..cb8f0b264 100644
--- a/pyramid/mako_templating.py
+++ b/pyramid/mako_templating.py
@@ -64,7 +64,7 @@ def renderer_factory(info):
lookup = registry.queryUtility(IMakoLookup)
if lookup is None:
reload_templates = settings.get('reload_templates', False)
- directories = settings.get('mako.directories', None)
+ directories = settings.get('mako.directories', [])
module_directory = settings.get('mako.module_directory', None)
input_encoding = settings.get('mako.input_encoding', 'utf-8')
error_handler = settings.get('mako.error_handler', None)
@@ -72,9 +72,6 @@ def renderer_factory(info):
imports = settings.get('mako.imports', None)
strict_undefined = settings.get('mako.strict_undefined', 'false')
preprocessor = settings.get('mako.preprocessor', None)
- if directories is None:
- raise ConfigurationError(
- 'Mako template used without a ``mako.directories`` setting')
if not is_nonstr_iter(directories):
directories = list(filter(None, directories.splitlines()))
directories = [ abspath_from_asset_spec(d) for d in directories ]
diff --git a/pyramid/tests/test_mako_templating.py b/pyramid/tests/test_mako_templating.py
index 981a5056e..4c444facf 100644
--- a/pyramid/tests/test_mako_templating.py
+++ b/pyramid/tests/test_mako_templating.py
@@ -22,14 +22,20 @@ class Test_renderer_factory(Base, unittest.TestCase):
return renderer_factory(info)
def test_no_directories(self):
- from pyramid.exceptions import ConfigurationError
+ from pyramid.mako_templating import IMakoLookup
info = DummyRendererInfo({
- 'name':'helloworld.mak',
+ 'name':'pyramid.tests:fixtures/helloworld.mak',
'package':None,
'registry':self.config.registry,
'settings':{},
})
- self.assertRaises(ConfigurationError, self._callFUT, info)
+ renderer = self._callFUT(info)
+ lookup = self.config.registry.getUtility(IMakoLookup)
+ self.assertEqual(lookup.directories, [])
+ self.assertEqual(lookup.filesystem_checks, False)
+ self.assertEqual(renderer.path,
+ 'pyramid.tests:fixtures/helloworld.mak')
+ self.assertEqual(renderer.lookup, lookup)
def test_no_lookup(self):
from pyramid.mako_templating import IMakoLookup