From f4d1166442b36b3b1c78d09a86c2ad9b5fa8cc8d Mon Sep 17 00:00:00 2001 From: helmutm Date: Mon, 13 Dec 2010 07:09:30 +0000 Subject: [PATCH] rearrange code to make macro caching configurable by subclassing git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@4103 fd906abe-77d9-0310-91a1-e0d9ade77398 --- composer/layout/browser/view.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/composer/layout/browser/view.py b/composer/layout/browser/view.py index b64672c..6e89ae9 100644 --- a/composer/layout/browser/view.py +++ b/composer/layout/browser/view.py @@ -37,10 +37,27 @@ from cybertools.util.cache import cache rendererTemplate = ViewPageTemplateFile('renderer.pt') +class CachableRenderer(object): + + lifetime = 3600 + + def __init__(self, view, renderer): + self.view = view + self.renderer = renderer + + def getRenderMacroId(self, *args): + return 'renderer.' + '.'.join(args) + + @cache(getRenderMacroId, lifetime=lifetime) + def renderMacro(self, *args): + return rendererTemplate(self.view, view=self.view, macro=self.renderer) + + class BaseView(object): template = ViewPageTemplateFile('base.pt') rendererTemplate = rendererTemplate + cachableRendererFactory = CachableRenderer page = None parent = None @@ -61,24 +78,10 @@ class BaseView(object): def cachedRenderer(self, name, *args): baseRenderer = self.renderer.template.macros[name] - cr = CachableRenderer(self, baseRenderer) + cr = self.cachableRendererFactory(self, baseRenderer) return cr.renderMacro(*args) -class CachableRenderer(object): - - def __init__(self, view, renderer): - self.view = view - self.renderer = renderer - - def getRenderMacroId(self, *args): - return 'renderer.' + '.'.join(args) - - @cache(getRenderMacroId, lifetime=3600) - def renderMacro(self, *args): - return rendererTemplate(self.view, view=self.view, macro=self.renderer) - - class Page(BaseView): layoutName = 'page'