Author: mtredinnick
Date: 2007-10-20 02:42:34 -0500 (Sat, 20 Oct 2007)
New Revision: 6550
Modified:
django/trunk/django/core/handlers/modpython.py
django/trunk/django/core/handlers/wsgi.py
Log:
Slightly changed the way we handle non-UTF-8 encoded URIs (see [6475]). Made it
easier to subclass the current behaviour, if needed. Fixed #5738.
Modified: django/trunk/django/core/handlers/modpython.py
===================================================================
--- django/trunk/django/core/handlers/modpython.py 2007-10-20 07:01:12 UTC
(rev 6549)
+++ django/trunk/django/core/handlers/modpython.py 2007-10-20 07:42:34 UTC
(rev 6550)
@@ -14,7 +14,7 @@
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 @@
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 @@
dispatcher.send(signal=signals.request_started)
try:
- request = ModPythonRequest(req)
- response = self.get_response(request)
+ 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)
-
+ # Apply response middleware
+ for middleware_method in self._response_middleware:
+ response = middleware_method(request, response)
finally:
dispatcher.send(signal=signals.request_finished)
Modified: django/trunk/django/core/handlers/wsgi.py
===================================================================
--- django/trunk/django/core/handlers/wsgi.py 2007-10-20 07:01:12 UTC (rev
6549)
+++ django/trunk/django/core/handlers/wsgi.py 2007-10-20 07:42:34 UTC (rev
6550)
@@ -75,7 +75,7 @@
class WSGIRequest(http.HttpRequest):
def __init__(self, environ):
self.environ = environ
- self.path = force_unicode(environ['PATH_INFO'], errors='ignore')
+ self.path = force_unicode(environ['PATH_INFO'])
self.META = environ
self.method = environ['REQUEST_METHOD'].upper()
@@ -179,6 +179,7 @@
class WSGIHandler(BaseHandler):
initLock = Lock()
+ request_class = WSGIRequest
def __call__(self, environ, start_response):
from django.conf import settings
@@ -194,13 +195,16 @@
dispatcher.send(signal=signals.request_started)
try:
- request = WSGIRequest(environ)
- response = self.get_response(request)
+ try:
+ request = self.request_class(environ)
+ 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)
-
+ # Apply response middleware
+ for middleware_method in self._response_middleware:
+ response = middleware_method(request, response)
finally:
dispatcher.send(signal=signals.request_finished)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---