|
Detmar Meurers
dm at ling.ohio-state.edu
Wed Jul 18 14:19:15 EDT 2007
Hi Martin,
I am new to the mod_python mailing list.
welcome.
I just wrote a small code that uses the publisher handler and psp.
The pages are correctly generated and published for the users of the
website. My only problem is that I would like to mail a copy of the page
to some email adress.
How could I get the html code of the generated pages in a string ? (if
possible, not using the obvious solution of reposting the data and
grabbing the code through for example wget).
I asked this a while back and based on a pointer by Graham Dumpleton
to a posting by Jim Gallacher I wrote the code below which I think
does what you're looking for.
Best,
Detmar
# Example code for turning psp template into html string, based on
# http://www.modpython.org/pipermail/mod_python/2006-June/021292.html
from mod_python import _psp
def psp2html(filename,vars={}):
req = FakeRequestObject()
vars['req'] = req
source = _psp.parse(filename)
code = compile(source, filename, 'exec')
global_scope = globals().copy()
global_scope.update(vars)
exec code in global_scope
return req.html()
class FakeRequestObject(object):
def __init__(self):
self.htmlList = []
def write(self, value, length):
self.htmlList.append(value)
def html(self):
return "".join(self.htmlList)
if __name__ == "__main__":
print psp2html('template_file.psp', {'var_in_psp1': 'some value' ,
'var_in_psp2': 'another value'})
### end of python file
For completeness sake, the template_file.psp mentioned above looks as:
<html>
<head>
<title>
<%= var_in_psp1 %>
</title>
</head>
<body>
<%= var_in_psp2 %>
</body>
</html>
|