src/pyams_content/shared/site/container.py
changeset 1019 43884f675be0
parent 972 bfdb9bbc9175
child 1427 43bd56f3a726
equal deleted inserted replaced
1018:78d7174de3be 1019:43884f675be0
    10 # FOR A PARTICULAR PURPOSE.
    10 # FOR A PARTICULAR PURPOSE.
    11 #
    11 #
    12 
    12 
    13 __docformat__ = 'restructuredtext'
    13 __docformat__ = 'restructuredtext'
    14 
    14 
    15 
       
    16 # import standard library
       
    17 import json
    15 import json
    18 
    16 
    19 from pyramid.location import lineage
    17 from pyramid.location import lineage
    20 from zope.interface import implementer
    18 from zope.interface import implementer
    21 from zope.intid.interfaces import IIntIds
    19 from zope.intid.interfaces import IIntIds
    22 
    20 
    23 # import interfaces
       
    24 from pyams_content.shared.common.interfaces import ISharedContentFactory
    21 from pyams_content.shared.common.interfaces import ISharedContentFactory
    25 # import packages
       
    26 from pyams_content.shared.site import SiteTopic
    22 from pyams_content.shared.site import SiteTopic
    27 from pyams_content.shared.site.interfaces import ISiteContainer, ISiteFolder
    23 from pyams_content.shared.site.interfaces import ISiteContainer, ISiteElementNavigation, ISiteFolder
    28 from pyams_i18n.interfaces import II18n
    24 from pyams_i18n.interfaces import II18n
    29 from pyams_utils.adapter import adapter_config
    25 from pyams_utils.adapter import adapter_config
    30 from pyams_utils.registry import get_utility
    26 from pyams_utils.registry import get_global_registry, get_utility
    31 from pyams_utils.request import query_request
    27 from pyams_utils.request import check_request, query_request
    32 
    28 
    33 
    29 
    34 @implementer(ISiteContainer)
    30 @implementer(ISiteContainer)
    35 class SiteContainerMixin(object):
    31 class SiteContainerMixin(object):
    36     """Site container mixin class"""
    32     """Site container mixin class"""
       
    33 
       
    34     def get_visible_items(self, request=None):
       
    35 
       
    36         def check_item(item):
       
    37             navigation = registry.queryMultiAdapter((item, request), ISiteElementNavigation)
       
    38             return (navigation is not None) and navigation.visible
       
    39 
       
    40         if request is None:
       
    41             request = check_request()
       
    42         registry = get_global_registry()
       
    43         yield from filter(check_item, self.values())
    37 
    44 
    38     def get_folders_tree(self, selected=None, permission=None):
    45     def get_folders_tree(self, selected=None, permission=None):
    39 
    46 
    40         request = query_request()
    47         request = query_request()
    41         intids = get_utility(IIntIds)
    48         intids = get_utility(IIntIds)