diff options
Diffstat (limited to 'ishtar_common/menus.py')
-rw-r--r-- | ishtar_common/menus.py | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/ishtar_common/menus.py b/ishtar_common/menus.py index aae127a09..c455fa73a 100644 --- a/ishtar_common/menus.py +++ b/ishtar_common/menus.py @@ -30,33 +30,34 @@ from django.urls import reverse from django.contrib.auth.models import User -_extra_menus = [] -# collect menu from INSTALLED_APPS -for app in settings.INSTALLED_APPS: - mod = __import__(app, fromlist=["ishtar_menu"]) - if hasattr(mod, "ishtar_menu"): - menu = getattr(mod, "ishtar_menu") - _extra_menus += menu.MENU_SECTIONS - -# sort -__section_items = [mnu for order, mnu in sorted(_extra_menus, key=lambda x: x[0])] -# regroup menus -_section_items, __keys = [], [] -for section_item in __section_items: - if section_item.idx not in __keys: - __keys.append(section_item.idx) - _section_items.append(section_item) - continue - section_childs = _section_items[__keys.index(section_item.idx)].childs - childs_idx = [child.idx for child in section_childs] - for child in section_item.childs: - if child.idx not in childs_idx: - section_childs.append(child) +def get_section_items(): + _extra_menus = [] + # collect menu from INSTALLED_APPS + for app in settings.INSTALLED_APPS: + mod = __import__(app, fromlist=["ishtar_menu"]) + if hasattr(mod, "ishtar_menu"): + menu = getattr(mod, "ishtar_menu") + _extra_menus += menu.MENU_SECTIONS + + # sort + __section_items = [mnu for order, mnu in sorted(_extra_menus, key=lambda x: x[0])] + # regroup menus + _section_items, __keys = [], [] + for section_item in __section_items: + if section_item.idx not in __keys: + __keys.append(section_item.idx) + _section_items.append(section_item) + continue + section_childs = _section_items[__keys.index(section_item.idx)].childs + childs_idx = [child.idx for child in section_childs] + for child in section_item.childs: + if child.idx not in childs_idx: + section_childs.append(child) + return _section_items -class Menu: - ref_childs = _section_items +class Menu: def __init__(self, user, current_action=None, session=None): self.user = user self.initialized = False @@ -74,6 +75,7 @@ class Menu: self.selected_idx = None self.session = session self.items_by_idx = {} + self.ref_childs = get_section_items() def reinit_menu_for_all_user(self): """ |