From d73c70d1ed34b53c21909f9d772a12bf85504601 Mon Sep 17 00:00:00 2001 From: Gary Wilson Jr Date: Sat, 8 Mar 2008 03:06:30 +0000 Subject: [PATCH] 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 --- django/core/handlers/modpython.py | 7 +++-- tests/regressiontests/requests/__init__.py | 3 ++ tests/regressiontests/requests/models.py | 1 + tests/regressiontests/requests/tests.py | 34 ++++++++++++++++++++++ 4 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 tests/regressiontests/requests/__init__.py create mode 100644 tests/regressiontests/requests/models.py create mode 100644 tests/regressiontests/requests/tests.py 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 = '' - return '' % \ - (self.path, get, post, cookies, meta) + return smart_str(u'' % + (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()) + + +>>> from django.core.handlers.wsgi import WSGIRequest +>>> print repr(WSGIRequest({'PATH_INFO': 'bogus', 'REQUEST_METHOD': 'bogus'})) +, +POST:, +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)) + +"""