From 4ffbddf92d89c3b31cef90043721184a501cd454 Mon Sep 17 00:00:00 2001 From: Justin Bronn Date: Fri, 26 Oct 2007 20:47:20 +0000 Subject: gis: Merged revisions 6525-6613 via svnmerge from [repos:django/trunk trunk]. git-svn-id: http://code.djangoproject.com/svn/django/branches/gis@6615 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/core/handlers/modpython.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'django/core/handlers/modpython.py') diff --git a/django/core/handlers/modpython.py b/django/core/handlers/modpython.py index 52419d9e6c..2a3e03f3dd 100644 --- a/django/core/handlers/modpython.py +++ b/django/core/handlers/modpython.py @@ -14,7 +14,7 @@ import os class ModPythonRequest(http.HttpRequest): def __init__(self, req): self._req = req - self.path = force_unicode(req.uri, errors='ignore') + self.path = force_unicode(req.uri) def __repr__(self): # Since this is called as part of error handling, we need to be very @@ -136,6 +136,8 @@ class ModPythonRequest(http.HttpRequest): method = property(_get_method) class ModPythonHandler(BaseHandler): + request_class = ModPythonRequest + def __call__(self, req): # mod_python fakes the environ, and thus doesn't process SetEnv. This fixes that os.environ.update(req.subprocess_env) @@ -150,13 +152,16 @@ class ModPythonHandler(BaseHandler): dispatcher.send(signal=signals.request_started) try: - request = ModPythonRequest(req) - response = self.get_response(request) - - # Apply response middleware - for middleware_method in self._response_middleware: - response = middleware_method(request, response) - + try: + request = self.request_class(req) + except UnicodeDecodeError: + response = http.HttpResponseBadRequest() + else: + response = self.get_response(request) + + # Apply response middleware + for middleware_method in self._response_middleware: + response = middleware_method(request, response) finally: dispatcher.send(signal=signals.request_finished) -- cgit v1.3