diff options
Diffstat (limited to 'ishtar_common/menu_base.py')
-rw-r--r-- | ishtar_common/menu_base.py | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/ishtar_common/menu_base.py b/ishtar_common/menu_base.py index d18964c40..d88c5c7c9 100644 --- a/ishtar_common/menu_base.py +++ b/ishtar_common/menu_base.py @@ -25,9 +25,7 @@ class SectionItem: css=''): self.idx = idx self._label = label - if not childs: - childs = [] - self.childs = childs + self.childs = childs or [] self.available = False self.items = {} self.profile_restriction = profile_restriction @@ -76,12 +74,12 @@ class SectionItem: class MenuItem: - def __init__(self, idx, label, model=None, access_controls=[], + def __init__(self, idx, label, model=None, access_controls=None, profile_restriction=None, css=''): self.idx = idx self.label = label self.model = model - self.access_controls = access_controls + self.access_controls = access_controls or [] self.available = False self.profile_restriction = profile_restriction self.css = css @@ -102,19 +100,10 @@ class MenuItem: return True if not hasattr(user, 'ishtaruser'): return False - # manage by specific idx - person type - if user.ishtaruser.has_right(self.idx, session=session): - return True - prefix = (self.model._meta.app_label + '.') if self.model else '' for access_control in self.access_controls: - # check by person type - if user.ishtaruser.has_right(access_control, session=session): - return True - access_control = prefix + access_control - # check by specific access control - if user.ishtaruser.has_perm(access_control, self.model, - session=session) or \ - access_control in user.get_group_permissions(): + # check by profile + if user.ishtaruser.person.has_right(access_control, + session=session): return True return False @@ -123,15 +112,11 @@ class MenuItem: return False if not self.access_controls: return True - prefix = (self.model._meta.app_label + '.') if self.model else '' + if not hasattr(user, 'ishtaruser'): + return False for access_control in self.access_controls: - access_control = prefix + access_control - if user.has_perm(access_control, self.model, obj=obj): - # session=session): - return True - # manage by person type - if hasattr(user, 'ishtaruser'): - if user.ishtaruser.has_right(self.idx, session=session): + if user.ishtaruser.person.has_right( + access_control, obj=obj, session=session): return True return False |