Thanks that worked. I use the following code to preload my cache of simple tal templates: from path import path from Singleton import Singleton from ApplicationConfig import ApplicationConfig import logging from simpletal import simpleTAL, simpleTALES class SimpleTALTemplateCache(Singleton): _templateCache = {} def init(self): templateconfig = ApplicationConfig().config.templateconfig logging.info('Initializing template cache') if (templateconfig.preload ): dir = path(templateconfig.startsearchinrootfolder) for d in dir.walkdirs(templateconfig.templatefoldername): td = path(d) for f in td.walkfiles('*.'+templateconfig.templateextension): self._templateCache[f.name] = SimpleTALFile(f.abspath()) logging.debug(self._templateCache) def getTemplate(self, templateName): logging.debug('template cahce is :') logging.debug(self._templateCache) templateconfig = ApplicationConfig().config.templateconfig templateName = templateName+'.'+templateconfig.templateextension if (templateconfig.checkfornewversion): logging.debug('checking if new version of template: '+templateName+' exists') templateFileOld = self._templateCache[templateName] f = path(templateFileOld._sourcePath) if (f.mtime != templateFileOld._lastModifiedTime): logging.debug('new version found for '+templateName+'; loading file from the following path'+f.abspath()) self._templateCache[templateName] = SimpleTALFile(f.abspath()) else: logging.debug('New version of template: '+templateName+' not found. Returning cached template') else: logging.debug('New version of template: '+templateName+' not found. Returning cached template') return self._templateCache[templateName]._template class SimpleTALFile: def __init__(self, filepath): templatefile = path(filepath) self._template = simpleTAL.compileHTMLTemplate(templatefile.text()) self._lastModifiedTime = templatefile.mtime self._sourcePath = filepath -----Original Message----- From: quixote-users-bounces+vineet=eswap.com@mems-exchange.org [mailto:quixote-users-bounces+vineet=eswap.com@mems-exchange.org]On Behalf Of Matt Goodall Sent: Thursday, December 11, 2003 8:01 PM To: vinjvinj@yahoo.com Cc: quixote-users@mems-exchange.org Subject: Re: [Quixote-users] Using simpletal (zpt) with quixote. Vinj Vinj wrote: >I'm setup to use quixote with twsited and would like >to use zpt (simpletal implementation). I had the >following line which worked with webware but fails in >quixote: > >return (template.expand (context, response)) > >I guess simpletal is setup to expect a stream(file) >like object which the response object is not. > >I looked at the publish code and though I had a >workaround, except that the some of the functions in >publish are over written by twisted_http. > One answer is to write to a StringIO object, there may be others. As it happens, I was playing with the same combination just the other day. Below is a small class I wrote which compiles templates, caches them and makes rendering the template trivial. from simpletal import simpleTAL, simpleTALES from cStringIO import StringIO import os.path class TemplateRenderer: def __init__(self): self.cache = {} def getTemplate(self, filename): mtime = os.path.getmtime(filename) template = self.cache.get(filename,None) if template and template[1] == mtime: return template[0] template = simpleTAL.compileHTMLTemplate(file(filename)) self.cache[filename] = (template,mtime) return template def render(self, filename, d=None): context = simpleTALES.Context() if d: for name, value in d.items(): context.addGlobal(name, value) template = self.getTemplate(filename) out = StringIO() template.expand(context,out) return out.getvalue() # Create one tr = TemplateRenderer() Then your page would do something like (untested): class Page: def _q_index(self, request): d = {'name': 'Matt', 'somethingElse': 'whatever'} return tr.render('template.html', d) There may be a (much) better way of doing all this (it's pretty much the first time I've ever used either of Quixote and SimpleTAL) but I hope it helps. Cheers, Matt -- Matt Goodall, Pollenation Internet Ltd w: http://www.pollenation.net e: matt@pollenation.net _______________________________________________ Quixote-users mailing list Quixote-users@mems-exchange.org http://mail.mems-exchange.org/mailman/listinfo/quixote-users