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
This commit is contained in:
parent
027d9eea87
commit
f4d1166442
1 changed files with 18 additions and 15 deletions
|
@ -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'
|
||||
|
|
Loading…
Add table
Reference in a new issue