src/pyams_content/shared/site/container.py
changeset 1019 43884f675be0
parent 972 bfdb9bbc9175
child 1427 43bd56f3a726
--- 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()