diff options
| author | Chris McDonough <chrism@agendaless.com> | 2008-07-07 04:44:57 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2008-07-07 04:44:57 +0000 |
| commit | 7de404bb4af2744a64c13e31a780fc0229b8f9e5 (patch) | |
| tree | 49f0b91b005777071050bf72732300f3bcd8d3ad /repoze/bfg/wsgiadapter.py | |
| parent | 93a4f5df2f74e4cbefc70733f2c0258859207106 (diff) | |
| download | pyramid-7de404bb4af2744a64c13e31a780fc0229b8f9e5.tar.gz pyramid-7de404bb4af2744a64c13e31a780fc0229b8f9e5.tar.bz2 pyramid-7de404bb4af2744a64c13e31a780fc0229b8f9e5.zip | |
Look up a view after traversal; adapt it to IWSGIApplication.
Diffstat (limited to 'repoze/bfg/wsgiadapter.py')
| -rw-r--r-- | repoze/bfg/wsgiadapter.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/repoze/bfg/wsgiadapter.py b/repoze/bfg/wsgiadapter.py new file mode 100644 index 000000000..f76360c27 --- /dev/null +++ b/repoze/bfg/wsgiadapter.py @@ -0,0 +1,29 @@ +from zope.interface import implements +from zope.interface import classProvides + +from repoze.bfg.interfaces import IWSGIApplicationFactory +from repoze.bfg.interfaces import IWSGIApplication +from repoze.bfg.mapply import mapply + +class NaiveWSGIViewAdapter: + classProvides(IWSGIApplicationFactory) + implements(IWSGIApplication) + + def __init__(self, view, request): + self.view = view + self.request = request + + def __call__(self, environ, start_response): + catch_response = [] + def replace_start_response(status, headers): + catch_response[:] = (status, headers) + kwdict = { + 'request':self.request, + 'environ':environ, + 'start_response':start_response, + } + response = mapply(self.view, positional = (), keyword = kwdict) + if not catch_response: + catch_response = (response.status, response.headerlist) + start_response(*catch_response) + return response.app_iter |
