Ticket #2131: django-ticket-2131-http-response-send-file.2-django1.0.2final-v1.2.diff
| File django-ticket-2131-http-response-send-file.2-django1.0.2final-v1.2.diff, 3.6 kB (added by mizatservercave, 1 year ago) |
|---|
-
django/core/handlers/modpython.py
old new 209 209 210 210 # Convert our custom HttpResponse object back into the mod_python req. 211 211 req.content_type = response['Content-Type'] 212 if hasattr(response, 'sendfile_filename'): 213 req.sendfile(response.sendfile_filename) 214 return 0 212 215 for key, value in response.items(): 213 216 if key != 'content-type': 214 217 req.headers_out[str(key)] = str(value) -
django/core/handlers/wsgi.py
old new 250 250 except KeyError: 251 251 status_text = 'UNKNOWN STATUS CODE' 252 252 status = '%s %s' % (response.status_code, status_text) 253 254 if hasattr(response, 'sendfile_filename') and response.has_header('Content-Length'): 255 del response['Content-Length'] 253 256 response_headers = [(str(k), str(v)) for k, v in response.items()] 254 257 for c in response.cookies.values(): 255 258 response_headers.append(('Set-Cookie', str(c.output(header='')))) 256 259 start_response(status, response_headers) 260 if hasattr(response, 'sendfile_filename'): 261 filelike = open(response.sendfile_filename, 'rb') 262 block_size = response.block_size 263 if 'wsgi.file_wrapper' in environ: 264 return environ['wsgi.file_wrapper'](filelike, block_size) 265 else: 266 return iter(lambda: filelike.read(block_size), '') 267 257 268 return response 258 269 -
django/core/servers/basehttp.py
old new 313 313 in the event loop to iterate over the data, and to call 314 314 'self.close()' once the response is finished. 315 315 """ 316 if not self.result_is_file() and not self.sendfile(): 317 for data in self.result: 318 self.write(data) 319 self.finish_content() 316 for data in self.result: 317 self.write(data) 318 self.finish_content() 320 319 self.close() 321 320 322 321 def get_scheme(self): -
django/http/__init__.py
old new 393 393 raise Exception("This %s instance cannot tell its position" % self.__class__) 394 394 return sum([len(chunk) for chunk in self._container]) 395 395 396 class HttpResponseSendFile(HttpResponse): 397 def __init__(self, path_to_file, content_type=None): 398 HttpResponse.__init__(self) 399 if not content_type: 400 from mimetypes import guess_type 401 content_type = guess_type(path_to_file)[0] 402 if content_type == None: # probably windows w/o proper mimetype lookup 403 content_type = "application/octet-stream" 404 self['Content-Type'] = content_type 405 self.sendfile_filename = path_to_file 406 self.block_size = 8192 407 self.status_code = 200 408 # compatibility; fake being a regular HttpResponse if needed 409 self['Content-Length'] = os.path.getsize(path_to_file) 410 self._container = open(path_to_file) 411 self._is_string = False 412 396 413 class HttpResponseRedirect(HttpResponse): 397 414 status_code = 302 398 415
