From 4f60b4805a7eac04c2a8ec2116a245dbeec3c822 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Fri, 14 Feb 2025 17:49:37 +0100 Subject: ✨ generate_permissions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit manage: - possession (direct, creation, basket) - heritage - areas association - requests ({USER} special syntax) --- ishtar_common/menus.py | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) (limited to 'ishtar_common/menus.py') 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): """ -- cgit v1.2.3