from flask_menu import FlaskMenu import check_menu # any function which returns boolean to set menu visibility of particular menu item # create object app_menu = FlaskMenu(children=[ dict( menu_id='dashboard', title='Dashboard', icon='dashboard', endpoint='main.index', is_visible=lambda menu_instance:check_menu(menu_instance), ), dict( menu_id='order_management', title='Order Management', icon='list', is_visible=lambda menu_instance:check_menu(menu_instance), children=[ dict( menu_id='order_list', title='Orders', endpoint='orders.index', ), dict( menu_id='order_create', title='Create Order', endpoint='orders.create', is_visible=lambda menu_instance:check_menu(menu_instance), ), ], ), ]) # load jinja utility extension app.jinja_env.add_extension('jinja2.ext.do') # make this object globally available in template context @app.context_processor def process_template_context(): return dict(app_menu=app_menu)