Kaydet (Commit) fad72477 authored tarafından Malcolm Tredinnick's avatar Malcolm Tredinnick

Changed HttpRequest.path to be a Unicode object. It has already been

URL-decoded by the time we see it anyway, so keeping it as a UTF-8 bytestring
was causing unnecessary problems.

Also added handling for non-ASCII URL fragments in feed creation (the portion
that was outside the control of the Feed class was messed up).



git-svn-id: http://code.djangoproject.com/svn/django/trunk@5629 bcc190cf-cafb-0310-a4f2-bffc1f526a37
üst 347704d2
...@@ -2,14 +2,14 @@ from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist ...@@ -2,14 +2,14 @@ from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
from django.template import Context, loader, Template, TemplateDoesNotExist from django.template import Context, loader, Template, TemplateDoesNotExist
from django.contrib.sites.models import Site from django.contrib.sites.models import Site
from django.utils import feedgenerator from django.utils import feedgenerator
from django.utils.encoding import smart_unicode from django.utils.encoding import smart_unicode, iri_to_uri
from django.conf import settings from django.conf import settings
def add_domain(domain, url): def add_domain(domain, url):
if not url.startswith('http://'): if not url.startswith('http://'):
# 'url' must already be ASCII and URL-quoted, so no need for encoding # 'url' must already be ASCII and URL-quoted, so no need for encoding
# conversions here. # conversions here.
url = u'http://%s%s' % (domain, url) url = iri_to_uri(u'http://%s%s' % (domain, url))
return url return url
class FeedDoesNotExist(ObjectDoesNotExist): class FeedDoesNotExist(ObjectDoesNotExist):
......
...@@ -2,6 +2,7 @@ from django.core.handlers.base import BaseHandler ...@@ -2,6 +2,7 @@ from django.core.handlers.base import BaseHandler
from django.core import signals from django.core import signals
from django.dispatch import dispatcher from django.dispatch import dispatcher
from django.utils import datastructures from django.utils import datastructures
from django.utils.encoding import force_unicode
from django import http from django import http
from pprint import pformat from pprint import pformat
import os import os
...@@ -13,7 +14,7 @@ import os ...@@ -13,7 +14,7 @@ import os
class ModPythonRequest(http.HttpRequest): class ModPythonRequest(http.HttpRequest):
def __init__(self, req): def __init__(self, req):
self._req = req self._req = req
self.path = req.uri self.path = force_unicode(req.uri)
def __repr__(self): def __repr__(self):
# Since this is called as part of error handling, we need to be very # Since this is called as part of error handling, we need to be very
......
...@@ -2,6 +2,7 @@ from django.core.handlers.base import BaseHandler ...@@ -2,6 +2,7 @@ from django.core.handlers.base import BaseHandler
from django.core import signals from django.core import signals
from django.dispatch import dispatcher from django.dispatch import dispatcher
from django.utils import datastructures from django.utils import datastructures
from django.utils.encoding import force_unicode
from django import http from django import http
from pprint import pformat from pprint import pformat
from shutil import copyfileobj from shutil import copyfileobj
...@@ -73,7 +74,7 @@ def safe_copyfileobj(fsrc, fdst, length=16*1024, size=0): ...@@ -73,7 +74,7 @@ def safe_copyfileobj(fsrc, fdst, length=16*1024, size=0):
class WSGIRequest(http.HttpRequest): class WSGIRequest(http.HttpRequest):
def __init__(self, environ): def __init__(self, environ):
self.environ = environ self.environ = environ
self.path = environ['PATH_INFO'] self.path = force_unicode(environ['PATH_INFO'])
self.META = environ self.META = environ
self.method = environ['REQUEST_METHOD'].upper() self.method = environ['REQUEST_METHOD'].upper()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment