diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-12-12 01:17:11 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2006-12-12 01:17:11 +0000 |
commit | a5230eca8532b7000ecbc70b47cd97b0842a1723 (patch) | |
tree | d33cf9a5cb736a662bcbbd37a271ca324f4c6b16 /lib/mako/codegen.py | |
parent | 001f173c95950acb76d763966a1477aa4fe27345 (diff) | |
download | external_python_mako-a5230eca8532b7000ecbc70b47cd97b0842a1723.tar.gz external_python_mako-a5230eca8532b7000ecbc70b47cd97b0842a1723.tar.bz2 external_python_mako-a5230eca8532b7000ecbc70b47cd97b0842a1723.zip |
cache file args, can be supplied on TemplateLookup, Template, <%page> tag, <%def> tag
Diffstat (limited to 'lib/mako/codegen.py')
-rw-r--r-- | lib/mako/codegen.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/mako/codegen.py b/lib/mako/codegen.py index 4de9f9b..81272ea 100644 --- a/lib/mako/codegen.py +++ b/lib/mako/codegen.py @@ -49,6 +49,7 @@ class _GenerateRenderMethod(object): name = "render" args = None buffered = filtered = False + self.compiler.pagetag = pagetag cached = pagetag is not None and eval(pagetag.attributes.get('cached', 'False')) if args is None: args = ['context'] @@ -337,17 +338,28 @@ class _GenerateRenderMethod(object): """write a post-function decorator to replace a rendering callable with a cached version of itself.""" 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')): + val = node_or_pagetag.parsed_attributes.get(arg[0], None) + if val is not None: + 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 + self.printer.writeline("def %s(context, *args, **kwargs):" % name) self.write_variable_declares(identifiers, limit=node_or_pagetag.undeclared_identifiers()) if buffered: self.printer.writelines( - "return _template_cache.get(%s, createfunc=lambda:__%s(context, *args, **kwargs))" % (cachekey, name), + "return context.get('local').get_cached(%s, %screatefunc=lambda:__%s(context, *args, **kwargs))" % (cachekey, ''.join(["%s=%s, " % (k,v) for k, v in cacheargs.iteritems()]), name), None ) else: self.printer.writelines( - "context.write(_template_cache.get(%s, createfunc=lambda:__%s(context, *args, **kwargs)))" % (cachekey, name), + "context.write(context.get('local').get_cached(%s, %screatefunc=lambda:__%s(context, *args, **kwargs)))" % (cachekey, ''.join(["%s=%s, " % (k,v) for k, v in cacheargs.iteritems()]), name), "return ''", None ) |