Browse Source

Emit correct date. In theory

pull/112/head
Armin Ronacher 15 years ago
parent
commit
85ff63c32e
  1. 11
      flask/helpers.py
  2. 2
      tests/flask_tests.py

11
flask/helpers.py

@ -240,6 +240,7 @@ def send_file(filename_or_fp, mimetype=None, as_attachment=False,
:param conditional: set to `True` to enable conditional responses.
:param cache_timeout: the timeout in seconds for the headers.
"""
mtime = None
if isinstance(filename_or_fp, basestring):
filename = filename_or_fp
file = None
@ -272,11 +273,21 @@ def send_file(filename_or_fp, mimetype=None, as_attachment=False,
else:
if file is None:
file = open(filename, 'rb')
mtime = os.path.getmtime(filename)
data = wrap_file(request.environ, file)
rv = current_app.response_class(data, mimetype=mimetype, headers=headers,
direct_passthrough=True)
# if we know the file modification date, we can store it as the
# current time to better support conditional requests. Werkzeug
# as of 0.6.1 will override this value however in the conditional
# response with the current time. This will be fixed in Werkzeug
# with a new release, however many WSGI servers will still emit
# a separate date header.
if mtime is not None:
rv.date = int(mtime)
rv.cache_control.public = True
if cache_timeout:
rv.cache_control.max_age = cache_timeout

2
tests/flask_tests.py

@ -19,7 +19,7 @@ import tempfile
from logging import StreamHandler
from contextlib import contextmanager
from datetime import datetime
from werkzeug import parse_date, parse_options_header
from werkzeug import parse_date, parse_options_header, http_date
from werkzeug.exceptions import NotFound
from jinja2 import TemplateNotFound
from cStringIO import StringIO

Loading…
Cancel
Save