diff --git a/CHANGES b/CHANGES index b26f575813bc8f92505b1384b84cdae6347c36f5..5eee6daeb7ad059c56525d41ff05fef4fa71b15b 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,7 @@ handling for the given expression. usage is like: ${data | encoding('utf-8', errors='strict')} - removed textmate tmbundle from contrib and into separate SVN location; windows users cant handle those files, setuptools not very good at "pruning" certain directories +- fix so that "cache_timeout" parameter is propigated 0.1.0 diff --git a/lib/mako/codegen.py b/lib/mako/codegen.py index a0bc70ac1008b53d82cc8ab77dfef83aa5d6993e..0496614a8ff86dcaeba53531e740530a2a41cbe6 100644 --- a/lib/mako/codegen.py +++ b/lib/mako/codegen.py @@ -344,15 +344,22 @@ class _GenerateRenderMethod(object): self.printer.writeline("__%s = %s" % (name, name)) cachekey = node_or_pagetag.parsed_attributes.get('cache_key', repr(name)) cacheargs = {} - for arg in (('cache_type', 'type'), ('cache_dir', 'data_dir')): + print node_or_pagetag + for arg in (('cache_type', 'type'), ('cache_dir', 'data_dir'), ('cache_timeout', 'timeout')): val = node_or_pagetag.parsed_attributes.get(arg[0], None) if val is not None: - cacheargs[arg[1]] = val + if arg[1] == 'timeout': + cacheargs[arg[1]] = int(eval(val)) + else: + cacheargs[arg[1]] = val else: if self.compiler.pagetag is not None: val = self.compiler.pagetag.parsed_attributes.get(arg[0], None) if val is not None: - cacheargs[arg[1]] = val + if arg[1] == 'timeout': + cacheargs[arg[1]] == int(eval(val)) + else: + cacheargs[arg[1]] = val self.printer.writeline("def %s(context, *args, **kwargs):" % name) diff --git a/test/cache.py b/test/cache.py index 345f6fe88d51c27c61dd21d001386ea3e874e88c..de5374383d7d7a30b35be3aecd5da0d1e8032067 100644 --- a/test/cache.py +++ b/test/cache.py @@ -144,6 +144,27 @@ class CacheTest(unittest.TestCase): ] assert m.kwargs == {'data_dir':'./test_htdocs', 'type':'dbm'} + def test_args_complete(self): + t = Template(""" + <%def name="foo()" cached="True" cache_timeout="30" cache_dir="./test_htdocs" cache_type="file" cache_key='somekey'> + this is foo + </%def> + + ${foo()} +""") + m = self._install_mock_cache(t) + t.render() + assert m.kwargs == {'data_dir':'./test_htdocs', 'type':'file', 'timeout':30} + + + t2 = Template(""" + <%page cached="True" cache_timeout="30" cache_dir="./test_htdocs" cache_type="file" cache_key='somekey'/> + hi + """) + m = self._install_mock_cache(t2) + t2.render() + assert m.kwargs == {'data_dir':'./test_htdocs', 'type':'file', 'timeout':30} + def test_fileargs_lookup(self): l = lookup.TemplateLookup(cache_dir='./test_htdocs', cache_type='file') l.put_string("test","""