Skip to content
Snippets Groups Projects
Commit 73a74ad7 authored by Julian's avatar Julian
Browse files

Implemented ordering for navbar items


Co-authored-by: default avatarnd <nd@cccv.de>
parent b8f2736b
Branches
Tags
No related merge requests found
...@@ -53,7 +53,7 @@ def reset_acl_filter(user): ...@@ -53,7 +53,7 @@ def reset_acl_filter(user):
return Invite.creator_dn == user.dn return Invite.creator_dn == user.dn
@bp.route('/') @bp.route('/')
@register_navbar(lazy_gettext('Invites'), icon='link', blueprint=bp, visible=invite_acl) @register_navbar(14, lazy_gettext('Invites'), icon='link', blueprint=bp, visible=invite_acl)
@invite_acl_required @invite_acl_required
def index(): def index():
invites = Invite.query.filter(view_acl_filter(request.user)).all() invites = Invite.query.filter(view_acl_filter(request.user)).all()
......
...@@ -20,7 +20,7 @@ def mail_acl_check(): ...@@ -20,7 +20,7 @@ def mail_acl_check():
return request.user and request.user.is_in_group(current_app.config['ACL_ADMIN_GROUP']) return request.user and request.user.is_in_group(current_app.config['ACL_ADMIN_GROUP'])
@bp.route("/") @bp.route("/")
@register_navbar(lazy_gettext('Forwardings'), icon='envelope', blueprint=bp, visible=mail_acl_check) @register_navbar(29, lazy_gettext('Forwardings'), icon='envelope', blueprint=bp, visible=mail_acl_check)
def index(): def index():
return render_template('mail/list.html', mails=Mail.query.all()) return render_template('mail/list.html', mails=Mail.query.all())
......
...@@ -7,7 +7,8 @@ def setup_navbar(app): ...@@ -7,7 +7,8 @@ def setup_navbar(app):
# or 'fa' # or 'fa'
# ( see: http://fontawesome.io/icons/ ) # ( see: http://fontawesome.io/icons/ )
# visible is a function that returns "True" if this icon should be visible in the calling context # 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): # pylint: disable=too-many-arguments
def register_navbar(position, name, iconlib='fa', icon=None, group=None, endpoint=None, blueprint=None, visible=None):
def wrapper(func): def wrapper(func):
def deferred_call(state): def deferred_call(state):
assert blueprint assert blueprint
...@@ -27,7 +28,9 @@ def register_navbar(name, iconlib='fa', icon=None, group=None, endpoint=None, bl ...@@ -27,7 +28,9 @@ def register_navbar(name, iconlib='fa', icon=None, group=None, endpoint=None, bl
item['name'] = name item['name'] = name
item['blueprint'] = blueprint item['blueprint'] = blueprint
item['visible'] = visible or (lambda: True) item['visible'] = visible or (lambda: True)
item['position'] = position
state.app.navbarList.append(item) state.app.navbarList.append(item)
state.app.navbarList.sort(key=lambda item: item['position'])
blueprint.record_once(deferred_call) blueprint.record_once(deferred_call)
return func return func
......
...@@ -48,7 +48,7 @@ def role_acl_check(): ...@@ -48,7 +48,7 @@ def role_acl_check():
return request.user and request.user.is_in_group(current_app.config['ACL_ADMIN_GROUP']) return request.user and request.user.is_in_group(current_app.config['ACL_ADMIN_GROUP'])
@bp.route("/") @bp.route("/")
@register_navbar(lazy_gettext('Roles'), icon='key', blueprint=bp, visible=role_acl_check) @register_navbar(25, lazy_gettext('Roles'), icon='key', blueprint=bp, visible=role_acl_check)
def index(): def index():
return render_template('role/list.html', roles=Role.query.all()) return render_template('role/list.html', roles=Role.query.all())
......
...@@ -22,7 +22,7 @@ def acl_check(): #pylint: disable=inconsistent-return-statements ...@@ -22,7 +22,7 @@ def acl_check(): #pylint: disable=inconsistent-return-statements
return redirect(url_for('index')) return redirect(url_for('index'))
@bp.route("/") @bp.route("/")
@register_navbar(lazy_gettext('Moderation'), icon='user-lock', blueprint=bp, visible=user_is_rolemod) @register_navbar(12, lazy_gettext('Moderation'), icon='user-lock', blueprint=bp, visible=user_is_rolemod)
def index(): def index():
roles = Role.query.filter(Role.moderator_group_dn.in_(request.user.group_dns)).all() roles = Role.query.filter(Role.moderator_group_dn.in_(request.user.group_dns)).all()
return render_template('rolemod/list.html', roles=roles) return render_template('rolemod/list.html', roles=roles)
......
...@@ -19,7 +19,7 @@ bp = Blueprint("selfservice", __name__, template_folder='templates', url_prefix= ...@@ -19,7 +19,7 @@ bp = Blueprint("selfservice", __name__, template_folder='templates', url_prefix=
reset_ratelimit = Ratelimit('passwordreset', 1*60*60, 3) reset_ratelimit = Ratelimit('passwordreset', 1*60*60, 3)
@bp.route("/") @bp.route("/")
@register_navbar(lazy_gettext('Selfservice'), icon='portrait', blueprint=bp, visible=lambda: bool(request.user)) @register_navbar(0, lazy_gettext('Selfservice'), icon='portrait', blueprint=bp, visible=lambda: bool(request.user))
@login_required() @login_required()
def index(): def index():
return render_template('selfservice/self.html', user=request.user) return render_template('selfservice/self.html', user=request.user)
......
...@@ -80,7 +80,7 @@ def services_visible(): ...@@ -80,7 +80,7 @@ def services_visible():
return len(get_services(request.user)) > 0 return len(get_services(request.user)) > 0
@bp.route("/") @bp.route("/")
@register_navbar(lazy_gettext('Services'), icon='sitemap', blueprint=bp, visible=services_visible) @register_navbar(9, lazy_gettext('Services'), icon='sitemap', blueprint=bp, visible=services_visible)
def index(): def index():
services = get_services(request.user) services = get_services(request.user)
if not current_app.config['SERVICES']: if not current_app.config['SERVICES']:
......
...@@ -18,7 +18,7 @@ def group_acl_check(): ...@@ -18,7 +18,7 @@ def group_acl_check():
return request.user and request.user.is_in_group(current_app.config['ACL_ADMIN_GROUP']) return request.user and request.user.is_in_group(current_app.config['ACL_ADMIN_GROUP'])
@bp.route("/") @bp.route("/")
@register_navbar(lazy_gettext('Groups'), icon='layer-group', blueprint=bp, visible=group_acl_check) @register_navbar(23, lazy_gettext('Groups'), icon='layer-group', blueprint=bp, visible=group_acl_check)
def index(): def index():
return render_template('group/list.html', groups=Group.query.all()) return render_template('group/list.html', groups=Group.query.all())
......
...@@ -26,7 +26,7 @@ def user_acl_check(): ...@@ -26,7 +26,7 @@ def user_acl_check():
return request.user and request.user.is_in_group(current_app.config['ACL_ADMIN_GROUP']) return request.user and request.user.is_in_group(current_app.config['ACL_ADMIN_GROUP'])
@bp.route("/") @bp.route("/")
@register_navbar(lazy_gettext('Users'), icon='users', blueprint=bp, visible=user_acl_check) @register_navbar(21, lazy_gettext('Users'), icon='users', blueprint=bp, visible=user_acl_check)
def index(): def index():
return render_template('user/list.html', users=User.query.all()) return render_template('user/list.html', users=User.query.all())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment