From fda0ddd8300e2459c2bc1712693b8c5eb1d408c2 Mon Sep 17 00:00:00 2001 From: Christophe de Vienne Date: Wed, 28 Nov 2012 22:35:17 +0100 Subject: [PATCH] Adapter for turbogears 1.1 --- wsme/tg11.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 wsme/tg11.py diff --git a/wsme/tg11.py b/wsme/tg11.py new file mode 100644 index 0000000..6c0d847 --- /dev/null +++ b/wsme/tg11.py @@ -0,0 +1,40 @@ +from turbogears import config +import cherrypy +from cherrypy.filters.basefilter import BaseFilter +from turbogears.startup import call_on_startup, call_on_shutdown +from wsme.tg1 import wsexpose, wsvalidate +import wsme.tg1 + +__all__ = ['adapt', 'wsexpose', 'wsvalidate'] + + +class WSMECherrypyFilter(BaseFilter): + def __init__(self, controller): + self.controller = controller + self.webpath = None + + def on_start_resource(self): + path = cherrypy.request.path + if path.startswith(self.controller._wsroot._webpath): + cherrypy.request.processRequestBody = False + + +def adapt(wsroot): + wsroot._scan_api = wsme.tg1.scan_api + controller = wsme.tg1.Controller(wsroot) + filter_ = WSMECherrypyFilter(controller) + + def install_filter(): + filter_.webpath = config.get('server.webpath') or '' + controller._wsroot._webpath = \ + filter_.webpath + controller._wsroot._webpath + cherrypy.root._cp_filters.append(filter_) + + def uninstall_filter(): + cherrypy.root._cp_filters.remove(filter_) + controller._wsroot._webpath = \ + controller._wsroot._webpath[len(filter_.webpath):] + + call_on_startup.append(install_filter) + call_on_shutdown.insert(0, uninstall_filter) + return controller