Merge branch '0.10-maintenance'
This commit is contained in:
commit
23d9b33e92
4 changed files with 28 additions and 10 deletions
1
CHANGES
1
CHANGES
|
|
@ -32,6 +32,7 @@ Version 0.10.2
|
||||||
- Fixed an issue with query parameters getting removed from requests in
|
- Fixed an issue with query parameters getting removed from requests in
|
||||||
the test client when absolute URLs were requested.
|
the test client when absolute URLs were requested.
|
||||||
- Made `@before_first_request` into a decorator as intended.
|
- Made `@before_first_request` into a decorator as intended.
|
||||||
|
- Fixed an etags bug when sending a file streams with a name.
|
||||||
|
|
||||||
Version 0.10.1
|
Version 0.10.1
|
||||||
--------------
|
--------------
|
||||||
|
|
|
||||||
|
|
@ -538,14 +538,19 @@ def send_file(filename_or_fp, mimetype=None, as_attachment=False,
|
||||||
rv.expires = int(time() + cache_timeout)
|
rv.expires = int(time() + cache_timeout)
|
||||||
|
|
||||||
if add_etags and filename is not None:
|
if add_etags and filename is not None:
|
||||||
rv.set_etag('flask-%s-%s-%s' % (
|
try:
|
||||||
os.path.getmtime(filename),
|
rv.set_etag('flask-%s-%s-%s' % (
|
||||||
os.path.getsize(filename),
|
os.path.getmtime(filename),
|
||||||
adler32(
|
os.path.getsize(filename),
|
||||||
filename.encode('utf-8') if isinstance(filename, text_type)
|
adler32(
|
||||||
else filename
|
filename.encode('utf-8') if isinstance(filename, text_type)
|
||||||
) & 0xffffffff
|
else filename
|
||||||
))
|
) & 0xffffffff
|
||||||
|
))
|
||||||
|
except OSError:
|
||||||
|
warn('Access %s failed, maybe it does not exist, so ignore etags in '
|
||||||
|
'headers' % filename, stacklevel=2)
|
||||||
|
|
||||||
if conditional:
|
if conditional:
|
||||||
rv = rv.make_conditional(request)
|
rv = rv.make_conditional(request)
|
||||||
# make sure we don't send x-sendfile for servers that
|
# make sure we don't send x-sendfile for servers that
|
||||||
|
|
|
||||||
|
|
@ -303,6 +303,18 @@ class SendfileTestCase(FlaskTestCase):
|
||||||
rv.close()
|
rv.close()
|
||||||
# etags
|
# etags
|
||||||
self.assert_equal(len(captured), 1)
|
self.assert_equal(len(captured), 1)
|
||||||
|
with catch_warnings() as captured:
|
||||||
|
class PyStringIO(StringIO):
|
||||||
|
pass
|
||||||
|
f = PyStringIO('Test')
|
||||||
|
f.name = 'test.txt'
|
||||||
|
rv = flask.send_file(f)
|
||||||
|
rv.direct_passthrough = False
|
||||||
|
self.assert_equal(rv.data, b'Test')
|
||||||
|
self.assert_equal(rv.mimetype, 'text/plain')
|
||||||
|
rv.close()
|
||||||
|
# attachment_filename and etags
|
||||||
|
self.assert_equal(len(captured), 3)
|
||||||
with catch_warnings() as captured:
|
with catch_warnings() as captured:
|
||||||
f = StringIO('Test')
|
f = StringIO('Test')
|
||||||
rv = flask.send_file(f, mimetype='text/plain')
|
rv = flask.send_file(f, mimetype='text/plain')
|
||||||
|
|
|
||||||
|
|
@ -207,8 +207,8 @@ class TestToolsTestCase(FlaskTestCase):
|
||||||
with app.test_client() as c:
|
with app.test_client() as c:
|
||||||
rv = c.post('http://domain.com/action?vodka=42', data={'gin': 43})
|
rv = c.post('http://domain.com/action?vodka=42', data={'gin': 43})
|
||||||
self.assert_equal(rv.status_code, 200)
|
self.assert_equal(rv.status_code, 200)
|
||||||
self.assert_('gin' in flask.request.form)
|
self.assert_true('gin' in flask.request.form)
|
||||||
self.assert_('vodka' in flask.request.args)
|
self.assert_true('vodka' in flask.request.args)
|
||||||
|
|
||||||
|
|
||||||
class SubdomainTestCase(FlaskTestCase):
|
class SubdomainTestCase(FlaskTestCase):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue