Use setdefault() because it sets session.modified correctly.

This commit is contained in:
florentx 2010-04-21 07:23:09 +08:00 committed by Armin Ronacher
parent 3eacc1d068
commit dbe0df756b
2 changed files with 14 additions and 2 deletions

View file

@ -167,7 +167,7 @@ def flash(message):
:param message: the message to be flashed.
"""
session['_flashes'] = session.get('_flashes', ()) + (message,)
session.setdefault('_flashes', []).append(message)
def get_flashed_messages():
@ -177,7 +177,7 @@ def get_flashed_messages():
"""
flashes = _request_ctx_stack.top.flashes
if flashes is None:
_request_ctx_stack.top.flashes = flashes = session.pop('_flashes', ())
_request_ctx_stack.top.flashes = flashes = session.pop('_flashes', [])
return flashes

View file

@ -117,6 +117,18 @@ class BasicFunctionalityTestCase(unittest.TestCase):
expect_exception(flask.session.__setitem__, 'foo', 42)
expect_exception(flask.session.pop, 'foo')
def test_flashes(self):
app = flask.Flask(__name__)
app.secret_key = 'testkey'
with app.test_request_context():
assert not flask.session.modified
flask.flash('Zap')
flask.session.modified = False
flask.flash('Zip')
assert flask.session.modified
assert list(flask.get_flashed_messages()) == ['Zap', 'Zip']
def test_request_processing(self):
app = flask.Flask(__name__)
evts = []