#!/usr/bin/python import sys import os import cgi from zptool import ZPTool import config form = cgi.FieldStorage() env = {'environ': {}, 'config': config, 'form': form, 'headers': {'content-type': 'text/html; charset=%s' % config.charset}, } env['environ'].update(dict([(k.lower(), v) for k, v in os.environ.items()])) path = os.path.join(env['environ']['document_root'], env['environ']['path_info'][1:]) # custom exception hook, rendering the error page, fallback to cgitb import cgitb; cgitb.enable() old_hook = sys.excepthook def onerror(exc, e, tb): try: z = ZPTool(config.envdir) print 'Content-Type: text/html; charset=%s' % (config.charset,) print print z.render_error_page(exc, e, tb, env) except: raise old_hook(exc, e, tb) sys.excepthook = onerror # render the requested template z = ZPTool(config.envdir) rendered = z.render(path, env) for k, v in env['headers'].iteritems(): print '%s: %s' % ('-'.join([x.capitalize() for x in k.split('-')]), v) print print rendered.encode(config.charset, 'replace')