diff -r 78d7174de3be -r 43884f675be0 src/pyams_content/shared/site/container.py --- a/src/pyams_content/shared/site/container.py Mon Oct 15 17:22:15 2018 +0200 +++ b/src/pyams_content/shared/site/container.py Tue Oct 16 11:18:52 2018 +0200 @@ -12,29 +12,36 @@ __docformat__ = 'restructuredtext' - -# import standard library import json from pyramid.location import lineage from zope.interface import implementer from zope.intid.interfaces import IIntIds -# import interfaces from pyams_content.shared.common.interfaces import ISharedContentFactory -# import packages from pyams_content.shared.site import SiteTopic -from pyams_content.shared.site.interfaces import ISiteContainer, ISiteFolder +from pyams_content.shared.site.interfaces import ISiteContainer, ISiteElementNavigation, ISiteFolder from pyams_i18n.interfaces import II18n from pyams_utils.adapter import adapter_config -from pyams_utils.registry import get_utility -from pyams_utils.request import query_request +from pyams_utils.registry import get_global_registry, get_utility +from pyams_utils.request import check_request, query_request @implementer(ISiteContainer) class SiteContainerMixin(object): """Site container mixin class""" + def get_visible_items(self, request=None): + + def check_item(item): + navigation = registry.queryMultiAdapter((item, request), ISiteElementNavigation) + return (navigation is not None) and navigation.visible + + if request is None: + request = check_request() + registry = get_global_registry() + yield from filter(check_item, self.values()) + def get_folders_tree(self, selected=None, permission=None): request = query_request()