summaryrefslogtreecommitdiff
path: root/repoze/bfg/wsgi.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-01-16 18:58:16 +0000
committerChris McDonough <chrism@agendaless.com>2009-01-16 18:58:16 +0000
commit5a7f9a4d57424f14a1e072cc06b6bf7a191a7d08 (patch)
treeb44448198ddf8031b3e09b83dd731f2ae1d6623a /repoze/bfg/wsgi.py
parent4856cc54bcd5feb97db49f1cca923afb01c0bf02 (diff)
downloadpyramid-5a7f9a4d57424f14a1e072cc06b6bf7a191a7d08.tar.gz
pyramid-5a7f9a4d57424f14a1e072cc06b6bf7a191a7d08.tar.bz2
pyramid-5a7f9a4d57424f14a1e072cc06b6bf7a191a7d08.zip
Features
-------- - The functionality of ``repoze.bfg.convention`` has been merged into the core. Applications which make use of ``repoze.bfg.convention`` will continue to work indefinitely, but it is recommended that apps stop depending upon it. To do so, substitute imports of ``repoze.bfg.convention.bfg_view`` with imports of ``repoze.bfg.view.bfg_view``, and change the stanza in ZCML from ``<convention package=".">`` to ``<grok package=".">``. As a result of the merge, bfg has grown a new dependency: ``martian``. - View functions which use the pushpage decorator are now pickleable (meaning their use won't prevent a ``configure.zcml.cache`` file from being written to disk). Implementation Changes ---------------------- - The ``wsgiapp`` decorator now uses ``webob.Request.get_response`` to do its work rather than relying on howgrown WSGI code.
Diffstat (limited to 'repoze/bfg/wsgi.py')
-rw-r--r--repoze/bfg/wsgi.py24
1 files changed, 2 insertions, 22 deletions
diff --git a/repoze/bfg/wsgi.py b/repoze/bfg/wsgi.py
index 93b2c143b..b0feef29e 100644
--- a/repoze/bfg/wsgi.py
+++ b/repoze/bfg/wsgi.py
@@ -1,8 +1,3 @@
-from zope.component import queryUtility
-
-from repoze.bfg.interfaces import IResponseFactory
-
-from webob import Response
try:
from functools import wraps
except ImportError:
@@ -34,20 +29,5 @@ def wsgiapp(wrapped):
WSGI app were a repoze.bfg view.
"""
def decorator(context, request):
- caught = []
- def catch_start_response(status, headers, exc_info=None):
- caught[:] = (status, headers, exc_info)
- environ = request.environ
- body = wrapped(environ, catch_start_response)
- if caught:
- status, headers, exc_info = caught
- response_factory = queryUtility(IResponseFactory, default=Response)
- response = response_factory()
- response.app_iter = body
- response.status = status
- response.headerlist = headers
- return response
- else:
- raise RuntimeError('WSGI start_response not called')
- return wraps(wrapped)(decorator) # for pickleability
-
+ return request.get_response(wrapped)
+ return wraps(wrapped)(decorator) # pickleability