From b5215b40c3a569266a6c761c0de317895a5fd23a Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Wed, 22 Aug 2018 02:24:54 -0400 Subject: [PATCH] Disable the Tags menu when the user doesn't have the tag create permission or the tag view access for any tag. Disable the Cabinets menu when the user doesn't have the cabinet create permission or the cabinet view permission for any cabinet. Signed-off-by: Roberto Rosario --- HISTORY.rst | 5 +++++ mayan/apps/cabinets/links.py | 8 ++++++-- mayan/apps/cabinets/menus.py | 9 +++++++-- mayan/apps/tags/links.py | 7 +++++-- mayan/apps/tags/menus.py | 9 +++++++-- 5 files changed, 30 insertions(+), 8 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 3e8ee9920f..4fa3b2109c 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -76,6 +76,11 @@ permission which allows viewing an index definiton on the setup menu. - Add support to conditionally disable menus. +- Disable the Tags menu when the user doesn't have the + tag create permission or the tag view access for any tag. +- Disable the Cabinets menu when the user doesn't have the + cabinet create permission or the cabinet view permission + for any cabinet. 3.0.1 (2018-07-08) ================= diff --git a/mayan/apps/cabinets/links.py b/mayan/apps/cabinets/links.py index 4432ad3a8c..f08e3ef3c8 100644 --- a/mayan/apps/cabinets/links.py +++ b/mayan/apps/cabinets/links.py @@ -6,7 +6,7 @@ from django.utils.translation import ugettext_lazy as _ from acls.links import link_acl_list from documents.permissions import permission_document_view -from navigation import Link +from navigation import Link, get_cascade_condition from .icons import icon_cabinet_create, icon_cabinet_list from .permissions import ( @@ -68,7 +68,11 @@ link_cabinet_edit = Link( view='cabinets:cabinet_edit' ) link_cabinet_list = Link( - icon_class=icon_cabinet_list, text=_('All'), view='cabinets:cabinet_list' + condition=get_cascade_condition( + app_label='cabinets', model_name='Cabinet', + object_permission=permission_cabinet_view, + ), icon_class=icon_cabinet_list, text=_('All'), + view='cabinets:cabinet_list' ) link_cabinet_view = Link( args='object.pk', permissions=(permission_cabinet_view,), text=_('Details'), diff --git a/mayan/apps/cabinets/menus.py b/mayan/apps/cabinets/menus.py index fe3abbf9b1..d936d37ffa 100644 --- a/mayan/apps/cabinets/menus.py +++ b/mayan/apps/cabinets/menus.py @@ -2,10 +2,15 @@ from __future__ import unicode_literals from django.utils.translation import ugettext_lazy as _ -from navigation import Menu +from navigation import Menu, get_cascade_condition from .icons import icon_cabinet_list +from .permissions import permission_cabinet_create, permission_cabinet_view menu_cabinets = Menu( - icon_class=icon_cabinet_list, label=_('Cabinets'), name='cabinets menu' + condition=get_cascade_condition( + app_label='cabinets', model_name='Cabinet', + object_permission=permission_cabinet_view, + view_permission=permission_cabinet_create, + ), icon_class=icon_cabinet_list, label=_('Cabinets'), name='cabinets menu' ) diff --git a/mayan/apps/tags/links.py b/mayan/apps/tags/links.py index 7c1e621880..ded8547702 100644 --- a/mayan/apps/tags/links.py +++ b/mayan/apps/tags/links.py @@ -2,7 +2,7 @@ from __future__ import unicode_literals from django.utils.translation import ugettext_lazy as _ -from navigation import Link +from navigation import Link, get_cascade_condition from .icons import ( icon_tag_create, icon_tag_document_list, icon_tag_list @@ -45,7 +45,10 @@ link_tag_document_list = Link( view='tags:document_tags', ) link_tag_list = Link( - icon_class=icon_tag_list, text=_('All'), view='tags:tag_list' + condition=get_cascade_condition( + app_label='tags', model_name='Tag', + object_permission=permission_tag_view, + ), icon_class=icon_tag_list, text=_('All'), view='tags:tag_list' ) link_tag_multiple_delete = Link( permissions=(permission_tag_delete,), text=_('Delete'), diff --git a/mayan/apps/tags/menus.py b/mayan/apps/tags/menus.py index 560a45a4b8..7bde026fd1 100644 --- a/mayan/apps/tags/menus.py +++ b/mayan/apps/tags/menus.py @@ -2,10 +2,15 @@ from __future__ import unicode_literals from django.utils.translation import ugettext_lazy as _ -from navigation import Menu +from navigation import Menu, get_cascade_condition from .icons import icon_menu_tags +from .permissions import permission_tag_create, permission_tag_view menu_tags = Menu( - icon_class=icon_menu_tags, label=_('Tags'), name='tags menu' + condition=get_cascade_condition( + app_label='tags', model_name='Tag', + object_permission=permission_tag_view, + view_permission=permission_tag_create, + ), icon_class=icon_menu_tags, label=_('Tags'), name='tags menu' )