Wouter van Marle
wouter at squirrel-systems.com
Thu May 19 01:27:36 EDT 2005
Regarding my feature request below, I've hacked together a small piece of code to retrieve the raw python source, and the html result of that source. This code is heavily inspired by the PSP class of psp.py script from mod_python. It works for me, does not support forms and sessions (it is meant to produce html formatted e-mail bodies), does not support Windows (path names there use backslashes), and maybe more limitations. Maybe the developers are interested in adding (something like) this to the psp.py file? get_source produces the python source code, get_html compiles the psp input file to html code. Wouter. from mod_python import _psp import os import sys def get_source(filename): dir, fname = os.path.split(filename) dir += "/" pycode = _psp.parse(fname, dir).splitlines() pycode = [s.rstrip() for s in pycode] for line in pycode: left = line.replace("\t", " "*4) result += left+"\n" return result def get_html(filename, vars={}): code = get_source(filename) lines = code.splitlines() code = 'html = ""\n' for l in lines: l = l.replace("req.write(", "html +=").replace(",0)", "") code += l+"\n" global_scope = globals().copy() global_scope.update(vars) html = "" l = locals() try: exec code in global_scope, l except: et, ev, etb = sys.exc_info() raise et, ev, etb return l["html"] On Thu, 2005-05-19 at 10:58 +0800, Wouter van Marle wrote: > Hi all, > > Then hereby I'll make it a feature request: > > I'd like to have a method to catch the html code as produced by the > run() method of the psp.PSP object for use in e.g. an e-mail body, > instead of having the run() method automatically pass it to the > browser. > > I mean: normally one does something like: > page = psp.PSP(req, "template.psp") > page.run({"spam": 1, "eggs": 5}) > and the page is converted to html, and displayed in the browser. I'd > like to use this templating for creating an e-mail, e.g.: > > page = psp.PSP(req, "template.psp") > body = page.create({"spam": 1, "eggs": 5}) > > Which basically would do exactly the same as the run() module, except > for having the html code as output. > > Regards, > Wouter van Marle > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org > http://mailman.modpython.org/mailman/listinfo/mod_python |