summaryrefslogtreecommitdiff
path: root/repoze/bfg/view.py
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-01-16 19:23:34 +0000
committerChris McDonough <chrism@agendaless.com>2009-01-16 19:23:34 +0000
commitb99526e428d46c54bb866df61c5d326b0c57716a (patch)
tree5d96d465abed746e888e0e94d1f1f49efd770bb4 /repoze/bfg/view.py
parent5a7f9a4d57424f14a1e072cc06b6bf7a191a7d08 (diff)
downloadpyramid-b99526e428d46c54bb866df61c5d326b0c57716a.tar.gz
pyramid-b99526e428d46c54bb866df61c5d326b0c57716a.tar.bz2
pyramid-b99526e428d46c54bb866df61c5d326b0c57716a.zip
- The ``repoze.bfg.view.static`` helper now uses
``webob.Request.get_response`` to do its work rather than relying on howgrown WSGI code.
Diffstat (limited to 'repoze/bfg/view.py')
-rw-r--r--repoze/bfg/view.py21
1 files changed, 4 insertions, 17 deletions
diff --git a/repoze/bfg/view.py b/repoze/bfg/view.py
index f580a4fb1..3b27a8b94 100644
--- a/repoze/bfg/view.py
+++ b/repoze/bfg/view.py
@@ -1,10 +1,7 @@
from paste.urlparser import StaticURLParser
-from webob import Response
-
from zope.component import queryMultiAdapter
from zope.component import queryUtility
-from repoze.bfg.interfaces import IResponseFactory
from repoze.bfg.interfaces import ISecurityPolicy
from repoze.bfg.interfaces import IViewPermission
from repoze.bfg.interfaces import IView
@@ -148,23 +145,13 @@ class static(object):
def __call__(self, context, request):
subpath = '/'.join(request.subpath)
- caught = []
- def catch_start_response(status, headers, exc_info=None):
- caught[:] = (status, headers, exc_info)
- ecopy = request.environ.copy()
+ request_copy = request.copy()
# Fix up PATH_INFO to get rid of everything but the "subpath"
# (the actual path to the file relative to the root dir).
+ request_copy.environ['PATH_INFO'] = '/' + subpath
# Zero out SCRIPT_NAME for good measure.
- ecopy['PATH_INFO'] = '/' + subpath
- ecopy['SCRIPT_NAME'] = ''
- body = self.app(ecopy, catch_start_response)
- 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
+ request_copy.environ['SCRIPT_NAME'] = ''
+ return request_copy.get_response(self.app)
class bfg_view(object):
""" Decorator which allows Python code to make view registrations