mirror of https://github.com/django/django.git
A few styling fixes.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@7205 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
4d6f0f2650
commit
5b762ca8e7
|
@ -3,23 +3,25 @@ from Cookie import SimpleCookie
|
||||||
from pprint import pformat
|
from pprint import pformat
|
||||||
from urllib import urlencode
|
from urllib import urlencode
|
||||||
from urlparse import urljoin
|
from urlparse import urljoin
|
||||||
from django.utils.datastructures import MultiValueDict, FileDict
|
|
||||||
from django.utils.encoding import smart_str, iri_to_uri, force_unicode
|
|
||||||
from utils import *
|
|
||||||
|
|
||||||
RESERVED_CHARS="!*'();:@&=+$,/?%#[]"
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# The mod_python version is more efficient, so try importing it first.
|
# The mod_python version is more efficient, so try importing it first.
|
||||||
from mod_python.util import parse_qsl
|
from mod_python.util import parse_qsl
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from cgi import parse_qsl
|
from cgi import parse_qsl
|
||||||
|
|
||||||
|
from django.utils.datastructures import MultiValueDict, FileDict
|
||||||
|
from django.utils.encoding import smart_str, iri_to_uri, force_unicode
|
||||||
|
|
||||||
|
from utils import *
|
||||||
|
|
||||||
|
RESERVED_CHARS="!*'();:@&=+$,/?%#[]"
|
||||||
|
|
||||||
|
|
||||||
class Http404(Exception):
|
class Http404(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class HttpRequest(object):
|
class HttpRequest(object):
|
||||||
"A basic HTTP request"
|
"""A basic HTTP request."""
|
||||||
|
|
||||||
# The encoding used in GET/POST dicts. None means use default setting.
|
# The encoding used in GET/POST dicts. None means use default setting.
|
||||||
_encoding = None
|
_encoding = None
|
||||||
|
@ -46,7 +48,7 @@ class HttpRequest(object):
|
||||||
__contains__ = has_key
|
__contains__ = has_key
|
||||||
|
|
||||||
def get_host(self):
|
def get_host(self):
|
||||||
"Returns the HTTP host using the environment or request headers."
|
"""Returns the HTTP host using the environment or request headers."""
|
||||||
# We try three options, in order of decreasing preference.
|
# We try three options, in order of decreasing preference.
|
||||||
if 'HTTP_X_FORWARDED_HOST' in self.META:
|
if 'HTTP_X_FORWARDED_HOST' in self.META:
|
||||||
host = self.META['HTTP_X_FORWARDED_HOST']
|
host = self.META['HTTP_X_FORWARDED_HOST']
|
||||||
|
@ -98,7 +100,7 @@ class HttpRequest(object):
|
||||||
encoding = property(_get_encoding, _set_encoding)
|
encoding = property(_get_encoding, _set_encoding)
|
||||||
|
|
||||||
def parse_file_upload(header_dict, post_data):
|
def parse_file_upload(header_dict, post_data):
|
||||||
"Returns a tuple of (POST QueryDict, FILES MultiValueDict)"
|
"""Returns a tuple of (POST QueryDict, FILES MultiValueDict)."""
|
||||||
import email, email.Message
|
import email, email.Message
|
||||||
from cgi import parse_header
|
from cgi import parse_header
|
||||||
raw_message = '\r\n'.join(['%s:%s' % pair for pair in header_dict.items()])
|
raw_message = '\r\n'.join(['%s:%s' % pair for pair in header_dict.items()])
|
||||||
|
@ -130,6 +132,7 @@ def parse_file_upload(header_dict, post_data):
|
||||||
POST.appendlist(name_dict['name'], submessage.get_payload())
|
POST.appendlist(name_dict['name'], submessage.get_payload())
|
||||||
return POST, FILES
|
return POST, FILES
|
||||||
|
|
||||||
|
|
||||||
class QueryDict(MultiValueDict):
|
class QueryDict(MultiValueDict):
|
||||||
"""
|
"""
|
||||||
A specialized MultiValueDict that takes a query string when initialized.
|
A specialized MultiValueDict that takes a query string when initialized.
|
||||||
|
@ -148,12 +151,13 @@ class QueryDict(MultiValueDict):
|
||||||
self.encoding = encoding
|
self.encoding = encoding
|
||||||
self._mutable = True
|
self._mutable = True
|
||||||
for key, value in parse_qsl((query_string or ''), True): # keep_blank_values=True
|
for key, value in parse_qsl((query_string or ''), True): # keep_blank_values=True
|
||||||
self.appendlist(force_unicode(key, encoding, errors='replace'), force_unicode(value, encoding, errors='replace'))
|
self.appendlist(force_unicode(key, encoding, errors='replace'),
|
||||||
|
force_unicode(value, encoding, errors='replace'))
|
||||||
self._mutable = mutable
|
self._mutable = mutable
|
||||||
|
|
||||||
def _assert_mutable(self):
|
def _assert_mutable(self):
|
||||||
if not self._mutable:
|
if not self._mutable:
|
||||||
raise AttributeError, "This QueryDict instance is immutable"
|
raise AttributeError("This QueryDict instance is immutable")
|
||||||
|
|
||||||
def __setitem__(self, key, value):
|
def __setitem__(self, key, value):
|
||||||
self._assert_mutable()
|
self._assert_mutable()
|
||||||
|
@ -222,7 +226,7 @@ class QueryDict(MultiValueDict):
|
||||||
return MultiValueDict.setdefault(self, key, default)
|
return MultiValueDict.setdefault(self, key, default)
|
||||||
|
|
||||||
def copy(self):
|
def copy(self):
|
||||||
"Returns a mutable copy of this object."
|
"""Returns a mutable copy of this object."""
|
||||||
return self.__deepcopy__({})
|
return self.__deepcopy__({})
|
||||||
|
|
||||||
def urlencode(self):
|
def urlencode(self):
|
||||||
|
@ -243,7 +247,7 @@ def parse_cookie(cookie):
|
||||||
return cookiedict
|
return cookiedict
|
||||||
|
|
||||||
class HttpResponse(object):
|
class HttpResponse(object):
|
||||||
"A basic HTTP response, with content and dictionary-accessed headers"
|
"""A basic HTTP response, with content and dictionary-accessed headers."""
|
||||||
|
|
||||||
status_code = 200
|
status_code = 200
|
||||||
|
|
||||||
|
@ -272,13 +276,13 @@ class HttpResponse(object):
|
||||||
self._headers = {'content-type': ('Content-Type', content_type)}
|
self._headers = {'content-type': ('Content-Type', content_type)}
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
"Full HTTP message, including headers"
|
"""Full HTTP message, including headers."""
|
||||||
return '\n'.join(['%s: %s' % (key, value)
|
return '\n'.join(['%s: %s' % (key, value)
|
||||||
for key, value in self._headers.values()]) \
|
for key, value in self._headers.values()]) \
|
||||||
+ '\n\n' + self.content
|
+ '\n\n' + self.content
|
||||||
|
|
||||||
def _convert_to_ascii(self, *values):
|
def _convert_to_ascii(self, *values):
|
||||||
"Convert all values to ascii strings"
|
"""Converts all values to ascii strings."""
|
||||||
for value in values:
|
for value in values:
|
||||||
if isinstance(value, unicode):
|
if isinstance(value, unicode):
|
||||||
try:
|
try:
|
||||||
|
@ -303,7 +307,7 @@ class HttpResponse(object):
|
||||||
return self._headers[header.lower()][1]
|
return self._headers[header.lower()][1]
|
||||||
|
|
||||||
def has_header(self, header):
|
def has_header(self, header):
|
||||||
"Case-insensitive check for a header"
|
"""Case-insensitive check for a header."""
|
||||||
return self._headers.has_key(header.lower())
|
return self._headers.has_key(header.lower())
|
||||||
|
|
||||||
__contains__ = has_header
|
__contains__ = has_header
|
||||||
|
@ -314,7 +318,8 @@ class HttpResponse(object):
|
||||||
def get(self, header, alternate):
|
def get(self, header, alternate):
|
||||||
return self._headers.get(header.lower(), (None, alternate))[1]
|
return self._headers.get(header.lower(), (None, alternate))[1]
|
||||||
|
|
||||||
def set_cookie(self, key, value='', max_age=None, expires=None, path='/', domain=None, secure=False):
|
def set_cookie(self, key, value='', max_age=None, expires=None, path='/',
|
||||||
|
domain=None, secure=False):
|
||||||
self.cookies[key] = value
|
self.cookies[key] = value
|
||||||
if max_age is not None:
|
if max_age is not None:
|
||||||
self.cookies[key]['max-age'] = max_age
|
self.cookies[key]['max-age'] = max_age
|
||||||
|
@ -360,7 +365,7 @@ class HttpResponse(object):
|
||||||
# See http://docs.python.org/lib/bltin-file-objects.html
|
# See http://docs.python.org/lib/bltin-file-objects.html
|
||||||
def write(self, content):
|
def write(self, content):
|
||||||
if not self._is_string:
|
if not self._is_string:
|
||||||
raise Exception, "This %s instance is not writable" % self.__class__
|
raise Exception("This %s instance is not writable" % self.__class__)
|
||||||
self._container.append(content)
|
self._container.append(content)
|
||||||
|
|
||||||
def flush(self):
|
def flush(self):
|
||||||
|
@ -368,7 +373,7 @@ class HttpResponse(object):
|
||||||
|
|
||||||
def tell(self):
|
def tell(self):
|
||||||
if not self._is_string:
|
if not self._is_string:
|
||||||
raise Exception, "This %s instance cannot tell its position" % self.__class__
|
raise Exception("This %s instance cannot tell its position" % self.__class__)
|
||||||
return sum([len(chunk) for chunk in self._container])
|
return sum([len(chunk) for chunk in self._container])
|
||||||
|
|
||||||
class HttpResponseRedirect(HttpResponse):
|
class HttpResponseRedirect(HttpResponse):
|
||||||
|
@ -425,7 +430,7 @@ def get_host(request):
|
||||||
# this slightly more restricted function.
|
# this slightly more restricted function.
|
||||||
def str_to_unicode(s, encoding):
|
def str_to_unicode(s, encoding):
|
||||||
"""
|
"""
|
||||||
Convert basestring objects to unicode, using the given encoding. Illegaly
|
Converts basestring objects to unicode, using the given encoding. Illegally
|
||||||
encoded input characters are replaced with Unicode "unknown" codepoint
|
encoded input characters are replaced with Unicode "unknown" codepoint
|
||||||
(\ufffd).
|
(\ufffd).
|
||||||
|
|
||||||
|
@ -435,4 +440,3 @@ def str_to_unicode(s, encoding):
|
||||||
return unicode(s, encoding, 'replace')
|
return unicode(s, encoding, 'replace')
|
||||||
else:
|
else:
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue