Changeset - 0e42ac1a358b
[Not reviewed]
default
0 1 0
Mads Kiilerich - 6 years ago 2019-11-07 02:38:47
mads@kiilerich.com
Grafted from: 695694712ff1
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.
1 file changed with 22 insertions and 9 deletions:
0 comments (0 inline, 0 general)
kallithea/lib/helpers.py
Show inline comments
 
@@ -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)
0 comments (0 inline, 0 general)