summaryrefslogtreecommitdiff
path: root/ishtar/furnitures/menus.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar/furnitures/menus.py')
-rw-r--r--ishtar/furnitures/menus.py163
1 files changed, 101 insertions, 62 deletions
diff --git a/ishtar/furnitures/menus.py b/ishtar/furnitures/menus.py
index ab7715903..12c81ced3 100644
--- a/ishtar/furnitures/menus.py
+++ b/ishtar/furnitures/menus.py
@@ -31,6 +31,26 @@ class SectionItem:
self.label = label
self.childs = childs
self.available = False
+ self.items = {}
+
+ def can_be_available(self, user):
+ for child in self.childs:
+ if child.can_be_available(user):
+ return True
+ return False
+
+ def is_available(self, user, obj=None):
+ for child in self.childs:
+ if child.is_available(user, obj):
+ return True
+ return False
+
+ def set_items(self, user, items):
+ if user:
+ self.available = self.can_be_available(user)
+ for child in self.childs:
+ child.set_items(user, items)
+ items[child.idx] = child
class MenuItem:
def __init__(self, idx, label, model=None, access_controls=[]):
@@ -56,73 +76,97 @@ class MenuItem:
return True
return False
+ def set_items(self, user, items):
+ if user:
+ self.available = self.can_be_available(user)
+
class Menu:
def __init__(self, user):
self.user = user
self.initialized = False
self.childs = [
SectionItem('administration', _(u"Administration"),
- childs=[
- MenuItem('person_creation', _(u"Person creation"),
- model=models.Person,
- access_controls=['add_person', 'add_own_person']),
- MenuItem('person_modification', _(u"Person modification"),
- model=models.Person,
- access_controls=['change_person', 'change_own_person']),
+ childs=[SectionItem('person', _(u"Person"),
+ childs=[
+ MenuItem('person_creation', _(u"Creation"),
+ model=models.Person,
+ access_controls=['add_person', 'add_own_person']),
+ MenuItem('person_modification', _(u"Modification"),
+ model=models.Person,
+ access_controls=['change_person', 'change_own_person']),
+ ]),
MenuItem('account_management', _(u"Account management"),
model=models.IshtarUser,
access_controls=['add_ishtaruser',]),
]),
- SectionItem('file_management', _(u"File management"),
- childs=[
- MenuItem('file_creation', _(u"File creation"),
- model=models.File,
- access_controls=['add_file', 'add_own_file']),
- MenuItem('file_modification', _(u"File modification"),
- model=models.File,
- access_controls=['change_file', 'change_own_file']),
- MenuItem('file_deletion', _(u"File deletion"),
- model=models.File,
- access_controls=['delete_file', 'delete_own_file']),
- MenuItem('file_administrativeact',
- _(u"Add an administrative act"),
- model=models.Operation,
- access_controls=['change_file', 'change_own_file']),
- MenuItem('file_administrativeact_modification',
- _(u"Modify an administrative act"),
- model=models.AdministrativeAct,
- access_controls=['change_file', 'change_own_file']),
- MenuItem('file_administrativeact_deletion',
- _(u"Delete an administrative act"),
- model=models.AdministrativeAct,
- access_controls=['delete_file', 'delete_own_file']),
+ SectionItem('file_management', _(u"Archaelogical file management"),
+ childs=[SectionItem('files', _(u"Archaelogical file"),
+ childs=[
+ MenuItem('file_creation', _(u"Creation"),
+ model=models.File,
+ access_controls=['add_file', 'add_own_file']),
+ MenuItem('file_modification', _(u"Modification"),
+ model=models.File,
+ access_controls=['change_file', 'change_own_file']),
+ MenuItem('file_deletion', _(u"Deletion"),
+ model=models.File,
+ access_controls=['delete_file', 'delete_own_file']),
+ ],),
+ SectionItem('admin_act_files', _(u"Administrative act"),
+ childs=[
+ MenuItem('file_administrativeact',
+ _(u"Add"),
+ model=models.Operation,
+ access_controls=['change_file', 'change_own_file']),
+ MenuItem('file_administrativeact_modification',
+ _(u"Modification"),
+ model=models.AdministrativeAct,
+ access_controls=['change_file', 'change_own_file']),
+ MenuItem('file_administrativeact_deletion',
+ _(u"Deletion"),
+ model=models.AdministrativeAct,
+ access_controls=['delete_file', 'delete_own_file']),
+ ],),
]),
SectionItem('operation_management', _(u"Operation management"),
- childs=[
- MenuItem('operation_creation', _(u"Operation creation"),
- model=models.Operation,
- access_controls=['add_operation', 'add_own_operation']),
- MenuItem('operation_modification', _(u"Operation modification"),
- model=models.Operation,
- access_controls=['change_operation', 'change_own_operation']),
- MenuItem('operation_closing', _(u"Operation closing"),
- model=models.Operation,
- access_controls=['change_operation', 'change_own_operation']),
- MenuItem('operation_deletion', _(u"Operation deletion"),
- model=models.Operation,
- access_controls=['change_operation', 'change_own_operation']),
- MenuItem('operation_administrativeact',
- _(u"Add an administrative act"),
- model=models.Operation,
- access_controls=['change_operation', 'change_own_operation']),
- MenuItem('operation_administrativeact_modification',
- _(u"Modify an administrative act"),
- model=models.AdministrativeAct,
- access_controls=['change_operation', 'change_own_operation']),
- MenuItem('operation_administrativeact_deletion',
- _(u"Delete an administrative act"),
- model=models.AdministrativeAct,
- access_controls=['operation_deletion', 'delete_own_operation']),
+ childs=[SectionItem('operation', _(u"Operation"),
+ childs=[
+ MenuItem('operation_creation', _(u"Creation"),
+ model=models.Operation,
+ access_controls=['add_operation',
+ 'add_own_operation']),
+ MenuItem('operation_modification', _(u"Modification"),
+ model=models.Operation,
+ access_controls=['change_operation',
+ 'change_own_operation']),
+ MenuItem('operation_closing', _(u"Closing"),
+ model=models.Operation,
+ access_controls=['change_operation',
+ 'change_own_operation']),
+ MenuItem('operation_deletion', _(u"Deletion"),
+ model=models.Operation,
+ access_controls=['change_operation',
+ 'change_own_operation']),
+ ],),
+ SectionItem('admin_act_operations',
+ _(u"Administrative act"),
+ childs=[
+ MenuItem('operation_administrativeact',
+ _(u"Add"),
+ model=models.Operation,
+ access_controls=['change_operation',
+ 'change_own_operation']),
+ MenuItem('operation_administrativeact_modification',
+ _(u"Modification"),
+ model=models.AdministrativeAct,
+ access_controls=['change_operation',
+ 'change_own_operation']),
+ MenuItem('operation_administrativeact_deletion',
+ _(u"Deletion"),
+ model=models.AdministrativeAct,
+ access_controls=['operation_deletion',
+ 'delete_own_operation']),
+ ],),
]),
]
self.items = {}
@@ -130,14 +174,9 @@ class Menu:
def init(self):
if self.initialized:
return
+ self.items = {}
for main_menu in self.childs:
- main_menu.available = False
- for child in main_menu.childs:
- if self.user:
- child.available = child.can_be_available(self.user)
- if child.available:
- main_menu.available = True
- self.items[child.idx] = child
+ main_menu.set_items(self.user, self.items)
self.initialized = True
menu = Menu(None)