def include(name): """Includes another template into the current template.""" return tools.load_template(name)
def generate_response(instance_path): profiler = None # capture stdout real_stdout = sys.stdout sys.stdout = StringIO.StringIO() try: try: system.setup(instance_path) session.load_session() user.setup() manager.setup() system.subject = get_subject() visited(system.subject, session.sid) csrf_token = data.pop('csrf_token',None) if request.method == 'POST' and system.csrf_validation: if csrf_token == session.csrf_token: del session.csrf_token else: raise CrossSiteRequestForgeryAttempt('expected:%s got:%s' % (session.csrf_token, csrf_token)) requested_app_name = manager.requested_app_name() default_app_name = manager.default_app_name() os.chdir(system.config.sites_path) if not request.route: request.route.append(default_app_name) if manager.can_run(requested_app_name): system.app = manager.get_app(requested_app_name) profiler = system.profile and cProfile.Profile() if profiler: profiler.enable() response = system.app.run() if profiler: profiler.disable() elif not requested_app_name: system.app = manager.get_app(default_app_name) response = system.app.run() elif manager.can_run(default_app_name): response = redirect_to('/') else: response = Page('<H1>Page Missing</H1>Page not found').render() response.status = '404' session.save_session(response) except CrossSiteRequestForgeryAttempt: logger.security('cross site forgery attempt') if not (system.config.get('error','users','0')=='1' or user.is_developer or user.is_administrator): raise else: response = redirect_to('/') except SessionExpiredException: response = Page(load_template('system_application_session_expired', SESSION_EXPIRED_MESSAGE)).render() except: t = traceback.format_exc() logger.error(t) if system.show_errors or user.is_developer or user.is_administrator: msg = load_template('system_application_error_developer', STANDARD_ERROR_MESSAGE) response = Page(msg % dict(message=t)).render() else: msg = load_template('system_application_error_user', FRIENDLY_ERROR_MESSAGE) response = Page(msg).render() if profiler: stats_s = StringIO.StringIO() sortby = 'cumulative' ps = pstats.Stats(profiler, stream=stats_s) ps.sort_stats(sortby) ps.print_stats(.1) t = stats_s.getvalue() t = t.replace(system.lib_path, '~zoom' ).replace('/usr/lib/python2.7/dist-packages/','~' ).replace('/usr/local/lib/python2.7/dist-packages/','~') print t finally: printed_output = sys.stdout.getvalue() sys.stdout.close() sys.stdout = real_stdout if system.logging: logger.complete() if hasattr(response,'printed_output'): response.printed_output = printed_output.replace('<','<').replace('>','>') return response