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' )