summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Wilson Jr <gary.wilson@gmail.com>2008-03-08 03:06:30 +0000
committerGary Wilson Jr <gary.wilson@gmail.com>2008-03-08 03:06:30 +0000
commitd73c70d1ed34b53c21909f9d772a12bf85504601 (patch)
tree59295e2a4df2637ac2c6874cde988766cdade132
parent1e2852a15dd120ff542a4805d8dceed82fb56ba7 (diff)
Fixed #5595 -- Made `ModPythonRequest.__repr__` return a string instead of a unicode object. Fixes the printout of the request object in those server error e-mails I never get :)
git-svn-id: http://code.djangoproject.com/svn/django/trunk@7200 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/core/handlers/modpython.py7
-rw-r--r--tests/regressiontests/requests/__init__.py3
-rw-r--r--tests/regressiontests/requests/models.py1
-rw-r--r--tests/regressiontests/requests/tests.py34
4 files changed, 42 insertions, 3 deletions
diff --git a/django/core/handlers/modpython.py b/django/core/handlers/modpython.py
index ebf79295e0..abab399009 100644
--- a/django/core/handlers/modpython.py
+++ b/django/core/handlers/modpython.py
@@ -6,7 +6,7 @@ from django.core import signals
from django.core.handlers.base import BaseHandler
from django.dispatch import dispatcher
from django.utils import datastructures
-from django.utils.encoding import force_unicode
+from django.utils.encoding import force_unicode, smart_str
# NOTE: do *not* import settings (or any module which eventually imports
# settings) until after ModPythonHandler has been called; otherwise os.environ
@@ -36,8 +36,9 @@ class ModPythonRequest(http.HttpRequest):
meta = pformat(self.META)
except:
meta = '<could not parse>'
- return '<ModPythonRequest\npath:%s,\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' % \
- (self.path, get, post, cookies, meta)
+ return smart_str(u'<ModPythonRequest\npath:%s,\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' %
+ (self.path, unicode(get), unicode(post),
+ unicode(cookies), unicode(meta)))
def get_full_path(self):
return '%s%s' % (self.path, self._req.args and ('?' + self._req.args) or '')
diff --git a/tests/regressiontests/requests/__init__.py b/tests/regressiontests/requests/__init__.py
new file mode 100644
index 0000000000..3a328850c9
--- /dev/null
+++ b/tests/regressiontests/requests/__init__.py
@@ -0,0 +1,3 @@
+"""
+Tests for Django's various Request objects.
+"""
diff --git a/tests/regressiontests/requests/models.py b/tests/regressiontests/requests/models.py
new file mode 100644
index 0000000000..19f81d601a
--- /dev/null
+++ b/tests/regressiontests/requests/models.py
@@ -0,0 +1 @@
+# Need a models module for the test runner.
diff --git a/tests/regressiontests/requests/tests.py b/tests/regressiontests/requests/tests.py
new file mode 100644
index 0000000000..890dc33c59
--- /dev/null
+++ b/tests/regressiontests/requests/tests.py
@@ -0,0 +1,34 @@
+"""
+>>> from django.http import HttpRequest
+>>> print repr(HttpRequest())
+<HttpRequest
+GET:{},
+POST:{},
+COOKIES:{},
+META:{}>
+
+>>> from django.core.handlers.wsgi import WSGIRequest
+>>> print repr(WSGIRequest({'PATH_INFO': 'bogus', 'REQUEST_METHOD': 'bogus'}))
+<WSGIRequest
+GET:<QueryDict: {}>,
+POST:<QueryDict: {}>,
+COOKIES:{},
+META:{'REQUEST_METHOD': 'bogus', 'PATH_INFO': 'bogus'}>
+
+>>> from django.core.handlers.modpython import ModPythonRequest
+>>> class FakeModPythonRequest(ModPythonRequest):
+... def __init__(self, *args, **kwargs):
+... super(FakeModPythonRequest, self).__init__(*args, **kwargs)
+... self._get = self._post = self._meta = self._cookies = {}
+>>> class Dummy: pass
+...
+>>> req = Dummy()
+>>> req.uri = 'bogus'
+>>> print repr(FakeModPythonRequest(req))
+<ModPythonRequest
+path:bogus,
+GET:{},
+POST:{},
+COOKIES:{},
+META:{}>
+"""