1
0
mirror of https://github.com/django/django.git synced 2025-07-03 17:29:12 +00:00

[soc2009/http-wsgi-improvements] Remove setting the Content-Length header for HttpResponseSendFile from the handler, for compatibility, and add a content attribute. Refs #2131.

Also adds a _charset class attribute to HttpResponse so the children all have it.

git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/http-wsgi-improvements@11326 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Chris Cahoon 2009-07-24 19:31:12 +00:00
parent be96986ce8
commit 76fdeaf720
2 changed files with 9 additions and 6 deletions

View File

@ -251,12 +251,7 @@ class WSGIHandler(base.BaseHandler):
filelike = open(filename, 'rb')
return environ['wsgi.file_wrapper'](filelike,
response.block_size)
else:
import os.path
if not os.path.exists(filename):
raise Exception("Filename provided to HttpResponseSendFile does not exist.")
response_headers.append(('Content-Length',
str(os.path.getsize(filename))))
start_response(status, response_headers)
return response

View File

@ -272,6 +272,7 @@ class HttpResponse(object):
_status_code = 200
_codec = None
_charset = None
def __init__(self, content='', mimetype=None, status=None,
content_type=None, request=None):
@ -446,6 +447,8 @@ class HttpResponseSendFile(HttpResponse):
self.block_size = block_size
self['Content-Disposition'] = ('attachment; filename=%s' %
os.path.basename(path_to_file))
if not settings.HTTPRESPONSE_SENDFILE_HEADER and os.path.exists(path_to_file):
self['Content-Length'] = str(os.path.getsize(path_to_file))
self._empty_content = False
def set_empty_content(self):
@ -457,6 +460,11 @@ class HttpResponseSendFile(HttpResponse):
from django.core.servers.basehttp import FileWrapper
return FileWrapper(self.get_file_handler(), self.block_size)
def _get_content(self):
return "".join(self.iter())
content = property(_get_content)
def get_file_handler(self):
if not self.sendfile_fh:
self.sendfile_fh = open(self.sendfile_filename, 'rb')