summaryrefslogtreecommitdiff
path: root/ishtar_common/menus.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2025-02-14 17:49:37 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2025-02-19 14:43:48 +0100
commit4f60b4805a7eac04c2a8ec2116a245dbeec3c822 (patch)
tree561f87e11ae60c96320523c80c6317ff8f1d2f99 /ishtar_common/menus.py
parent94f357939957dc8a5de453224913dbecdc4dc9db (diff)
downloadIshtar-4f60b4805a7eac04c2a8ec2116a245dbeec3c822.tar.bz2
Ishtar-4f60b4805a7eac04c2a8ec2116a245dbeec3c822.zip
✨ generate_permissions
manage: - possession (direct, creation, basket) - heritage - areas association - requests ({USER} special syntax)
Diffstat (limited to 'ishtar_common/menus.py')
-rw-r--r--ishtar_common/menus.py50
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):
"""