From b64d22c7e5692e10434eec83f6e2c64a4fed6a9e Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Wed, 24 Nov 2010 19:01:49 -0500 Subject: allow imports, directories, and default_filters to be lists in settings --- pyramid/mako_templating.py | 11 ++++++---- pyramid/tests/test_mako_templating.py | 41 +++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 4 deletions(-) diff --git a/pyramid/mako_templating.py b/pyramid/mako_templating.py index c9c041edb..3ef2868a5 100644 --- a/pyramid/mako_templating.py +++ b/pyramid/mako_templating.py @@ -71,7 +71,8 @@ def renderer_factory(info): if directories is None: raise ConfigurationError( 'Mako template used without a ``mako.directories`` setting') - directories = filter(None, directories.splitlines()) + if not hasattr(directories, '__iter__'): + directories = filter(None, directories.splitlines()) directories = [ abspath_from_resource_spec(d) for d in directories ] if module_directory is not None: module_directory = abspath_from_resource_spec(module_directory) @@ -79,9 +80,11 @@ def renderer_factory(info): dotted = DottedNameResolver(info.package) error_handler = dotted.maybe_resolve(error_handler) if default_filters is not None: - default_filters = filter(None, default_filters.splitlines()) - if imports: - imports = filter(None, imports.splitlines()) + if not hasattr(default_filters, '__iter__'): + default_filters = filter(None, default_filters.splitlines()) + if imports is not None: + if not hasattr(imports, '__iter__'): + imports = filter(None, imports.splitlines()) lookup = PkgResourceTemplateLookup(directories=directories, module_directory=module_directory, diff --git a/pyramid/tests/test_mako_templating.py b/pyramid/tests/test_mako_templating.py index cfb54b902..4b75e1a28 100644 --- a/pyramid/tests/test_mako_templating.py +++ b/pyramid/tests/test_mako_templating.py @@ -59,6 +59,19 @@ class Test_renderer_factory(Base, unittest.TestCase): lookup = self.config.registry.getUtility(IMakoLookup) self.assertEqual(lookup.directories, [self.templates_dir]*2) + def test_directories_list(self): + from pyramid.mako_templating import IMakoLookup + settings = {'mako.directories':['a', 'b']} + info = DummyRendererInfo({ + 'name':'helloworld.mak', + 'package':None, + 'registry':self.config.registry, + 'settings':settings, + }) + self._callFUT(info) + lookup = self.config.registry.getUtility(IMakoLookup) + self.assertEqual(lookup.directories, ['a', 'b']) + def test_with_module_directory_resource_spec(self): import os from pyramid.mako_templating import IMakoLookup @@ -135,6 +148,20 @@ class Test_renderer_factory(Base, unittest.TestCase): lookup = self.config.registry.getUtility(IMakoLookup) self.assertEqual(lookup.template_args['default_filters'], ['h', 'g']) + def test_with_default_filters_list(self): + from pyramid.mako_templating import IMakoLookup + settings = {'mako.directories':self.templates_dir, + 'mako.default_filters':['h', 'g']} + info = DummyRendererInfo({ + 'name':'helloworld.mak', + 'package':None, + 'registry':self.config.registry, + 'settings':settings, + }) + self._callFUT(info) + lookup = self.config.registry.getUtility(IMakoLookup) + self.assertEqual(lookup.template_args['default_filters'], ['h', 'g']) + def test_with_imports(self): from pyramid.mako_templating import IMakoLookup settings = {'mako.directories':self.templates_dir, @@ -149,6 +176,20 @@ class Test_renderer_factory(Base, unittest.TestCase): lookup = self.config.registry.getUtility(IMakoLookup) self.assertEqual(lookup.template_args['imports'], ['one', 'two']) + def test_with_imports_list(self): + from pyramid.mako_templating import IMakoLookup + settings = {'mako.directories':self.templates_dir, + 'mako.imports':['one', 'two']} + info = DummyRendererInfo({ + 'name':'helloworld.mak', + 'package':None, + 'registry':self.config.registry, + 'settings':settings, + }) + self._callFUT(info) + lookup = self.config.registry.getUtility(IMakoLookup) + self.assertEqual(lookup.template_args['imports'], ['one', 'two']) + def test_with_lookup(self): from pyramid.mako_templating import IMakoLookup lookup = dict() -- cgit v1.2.3