def wsgi_app(self, environ, start_response): self.host_framework.start_request(environ) environ['paste.registry'].register(tw.framework, self.host_framework) #XXX Do we really need to stuff these in environ? environ['toscawidgets.prefix'] = self.prefix environ.setdefault('toscawidgets.framework', self.host_framework) environ.setdefault('toscawidgets.javascript.require_once', self.require_once) req = Request(environ) try: tw.framework.script_name = req.script_name if self.serve_resources and req.path_info.startswith(self.prefix): # Intercept request to possibly serve a static resource path_info = req.path_info[len(self.prefix):] script_name = req.script_name + self.prefix resources_app = resources.registry if path_info.startswith(resources_app.prefix): req.path_info = path_info[len(resources_app.prefix):] req.script_name = script_name + resources_app.prefix resp = req.get_response(resources_app) return resp(environ, start_response) else: # Pass request downstream resp = req.get_response(self.application) if 'resp' in locals(): return resp(environ, start_response) else: return HTTPNotFound('There is no such resource')(environ, start_response) finally: self.host_framework.end_request(environ)