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.py31
1 files changed, 22 insertions, 9 deletions
diff --git a/ishtar/furnitures/menus.py b/ishtar/furnitures/menus.py
index 5a2446f79..7ed0a2408 100644
--- a/ishtar/furnitures/menus.py
+++ b/ishtar/furnitures/menus.py
@@ -31,14 +31,23 @@ class SectionItem:
self.available = False
class MenuItem:
- def __init__(self, idx, label, groups=[]):
+ def __init__(self, idx, label, access_controls=[]):
self.idx = idx
self.label = label
- self.groups = groups
+ self.access_controls = access_controls
self.available = False
- def is_available(self, user):
- return True
+ def can_be_available(self, user):
+ for access_control in self.access_controls:
+ if user.has_perm('furnitures.' + access_control):
+ return True
+ return False
+
+ def is_available(self, user, obj=None):
+ for access_control in self.access_controls:
+ if user.has_perm('furnitures.' + access_control, obj):
+ return True
+ return False
class Menu:
def __init__(self, user):
@@ -48,13 +57,14 @@ class Menu:
SectionItem('file_management', _(u"File management"),
childs=[
MenuItem('file_creation', _(u"File creation"),
- groups=['administrator']),
+ access_controls=['add_file', 'add_own_file']),
MenuItem('file_modification', _(u"File modification"),
- groups=['administrator']),
+ access_controls=['change_file', 'change_own_file']),
MenuItem('file_deletion', _(u"File deletion"),
- groups=['administrator']),
+ access_controls=['delete_file', 'delete_own_file']),
]),
]
+ self.items = {}
def init(self):
if self.initialized:
@@ -62,9 +72,12 @@ class Menu:
for main_menu in self.childs:
main_menu.available = False
for child in main_menu.childs:
- child.available = child.is_available(self.user)
+ if self.user:
+ child.available = child.can_be_available(self.user)
if child.available:
main_menu.available = True
+ self.items[child.idx] = child
self.initialized = True
-
+menu = Menu(None)
+menu.init()