Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

[soc2009/http-wsgi-improvements] Remove setting the Content-Length he…

…ader 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
  • Loading branch information...
commit 76fdeaf7209c6ef9d0263a205a53891b1f2da8a0 1 parent be96986
Christopher Cahoon ccahoon authored
Showing with 9 additions and 6 deletions.
  1. +1 −6 django/core/handlers/wsgi.py
  2. +8 −0 django/http/__init__.py
7 django/core/handlers/wsgi.py
View
@@ -251,12 +251,7 @@ def __call__(self, environ, start_response):
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
8 django/http/__init__.py
View
@@ -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 @@ def __init__(self, path_to_file, content_type=None, block_size=8192):
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 @@ def __iter__(self):
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')
Please sign in to comment.
Something went wrong with that request. Please try again.