Skip to content
Snippets Groups Projects
Verified Commit b6aa485b authored by sistason's avatar sistason
Browse files

refactored register_navbar() to not use global variables anymore

... which did break in tests
parent 3389dbac
No related branches found
No related tags found
No related merge requests found
......@@ -15,7 +15,6 @@ from uffd.navbar import register_navbar
from uffd.ratelimit import host_ratelimit, format_delay
from uffd.signup.views import signup_ratelimit
raise ValueError
bp = Blueprint('invite', __name__, template_folder='templates', url_prefix='/invite/')
......
# pylint: disable=invalid-name
navbarList = []
# pylint: enable=invalid-name
def setup_navbar(app):
app.jinja_env.globals['getnavbar'] = lambda: [n for n in navbarList if n['visible']()]
app.navbarList = []
app.jinja_env.globals['getnavbar'] = lambda: [n for n in app.navbarList if n['visible']()]
# iconlib can be 'bootstrap'
# ( see: http://getbootstrap.com/components/#glyphicons )
......@@ -12,6 +9,7 @@ def setup_navbar(app):
# visible is a function that returns "True" if this icon should be visible in the calling context
def register_navbar(name, iconlib='fa', icon=None, group=None, endpoint=None, blueprint=None, visible=None):
def wrapper(func):
def deferred_call(state):
urlendpoint = endpoint
if not endpoint:
# pylint: disable=protected-access
......@@ -28,6 +26,18 @@ def register_navbar(name, iconlib='fa', icon=None, group=None, endpoint=None, bl
item['name'] = name
item['blueprint'] = blueprint
item['visible'] = visible or (lambda: True)
navbarList.append(item)
state.app.navbarList.append(item)
if blueprint:
blueprint.record_once(deferred_call)
else:
class StateMock:
def __init__(self, app):
self.app = app
from flask import current_app
deferred_call(StateMock(current_app))
return func
return wrapper
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment