# HG changeset patch # User Mads Kiilerich # Date 2019-11-07 02:38:47 # Node ID 0e42ac1a358b4b30e1fe801afacfb16fc931a6cf # Parent 3d6994af1189559adfc0892cec95406f6bef1eb0 helpers: replace webhelpers.flash with own implementation webhelpers is dead. One small function implements pretty much the same functionality, using the same session key so tests still pass, but also very simple and without external dependencies. It could be implemented with a class and different methods for adding, getting and clearing. But internally, it would probably have pretty much the same helper function has here. So let's just avoid the unnecessary complexity and keep it simple. diff --git a/kallithea/lib/helpers.py b/kallithea/lib/helpers.py --- a/kallithea/lib/helpers.py +++ b/kallithea/lib/helpers.py @@ -38,7 +38,6 @@ from webhelpers2.html.tags import select from webhelpers2.html.tags import submit, text, textarea from webhelpers2.number import format_byte_size from webhelpers2.text import chop_at, truncate, wrap_paragraphs -from webhelpers.pylonslib import Flash from kallithea.config.routing import url from kallithea.lib.annotate import annotate_highlight @@ -442,6 +441,26 @@ class _Message(object): return escape(safe_unicode(self.message)) +def _session_flash_messages(append=None, clear=False): + """Manage a message queue in tg.session: return the current message queue + after appending the given message, and possibly clearing the queue.""" + key = 'flash' + from tg import session + if key in session: + flash_messages = session[key] + else: + if append is None: # common fast path - also used for clearing empty queue + return [] # don't bother saving + flash_messages = [] + session[key] = flash_messages + if append is not None and append not in flash_messages: + flash_messages.append(append) + if clear: + session.pop(key, None) + session.save() + return flash_messages + + def flash(message, category=None, logf=None): """ Show a message to the user _and_ log it through the specified function @@ -459,7 +478,7 @@ def flash(message, category=None, logf=N logf('Flash %s: %s', category, message) - _flash(message, category, True) + _session_flash_messages(append=(category, message)) def pop_flash_messages(): @@ -467,13 +486,7 @@ def pop_flash_messages(): The return value is a list of ``Message`` objects. """ - from tg import session - messages = session.pop(_flash.session_key, []) - session.save() - return [_Message(*m) for m in messages] - - -_flash = Flash() + return [_Message(*m) for m in _session_flash_messages(clear=True)] age = lambda x, y=False: _age(x, y)