src/pyams_content/shared/site/container.py
changeset 1427 43bd56f3a726
parent 1019 43884f675be0
equal deleted inserted replaced
1426:ea7a363b538e 1427:43bd56f3a726
    15 import json
    15 import json
    16 
    16 
    17 from pyramid.location import lineage
    17 from pyramid.location import lineage
    18 from zope.interface import implementer
    18 from zope.interface import implementer
    19 from zope.intid.interfaces import IIntIds
    19 from zope.intid.interfaces import IIntIds
       
    20 from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary
    20 
    21 
    21 from pyams_content.shared.common.interfaces import ISharedContentFactory
    22 from pyams_content.shared.common.interfaces import ISharedContentFactory
    22 from pyams_content.shared.site import SiteTopic
    23 from pyams_content.shared.site import SiteTopic
    23 from pyams_content.shared.site.interfaces import ISiteContainer, ISiteElementNavigation, ISiteFolder
    24 from pyams_content.shared.site.interfaces import IBaseSiteItem, ISiteContainer, \
       
    25     ISiteElementNavigation, \
       
    26     ISiteFolder, ISiteManager
    24 from pyams_i18n.interfaces import II18n
    27 from pyams_i18n.interfaces import II18n
    25 from pyams_utils.adapter import adapter_config
    28 from pyams_utils.adapter import adapter_config
    26 from pyams_utils.registry import get_global_registry, get_utility
    29 from pyams_utils.container import find_objects_providing
       
    30 from pyams_utils.registry import get_local_registry, get_global_registry, get_utility
    27 from pyams_utils.request import check_request, query_request
    31 from pyams_utils.request import check_request, query_request
       
    32 from pyams_utils.traversing import get_parent
       
    33 from pyams_utils.vocabulary import vocabulary_config
    28 
    34 
    29 
    35 
    30 @implementer(ISiteContainer)
    36 @implementer(ISiteContainer)
    31 class SiteContainerMixin(object):
    37 class SiteContainerMixin:
    32     """Site container mixin class"""
    38     """Site container mixin class"""
    33 
    39 
    34     def get_visible_items(self, request=None):
    40     def get_visible_items(self, request=None):
    35 
    41 
    36         def check_item(item):
    42         def check_item(item):
    95 
   101 
    96 
   102 
    97 @adapter_config(context=ISiteContainer, provides=ISharedContentFactory)
   103 @adapter_config(context=ISiteContainer, provides=ISharedContentFactory)
    98 def site_container_topic_factory(context):
   104 def site_container_topic_factory(context):
    99     return SiteTopic
   105     return SiteTopic
       
   106 
       
   107 
       
   108 @vocabulary_config(name='PyAMS site contents')
       
   109 class SiteManagerContentsVocabulary(SimpleVocabulary):
       
   110     """Site manager folders vocabulary"""
       
   111 
       
   112     def __init__(self, context):
       
   113         terms = []
       
   114         site = get_parent(context, ISiteManager)
       
   115         if site is not None:
       
   116             registry = get_local_registry()
       
   117             if registry is not None:
       
   118                 request = query_request()
       
   119                 intids = registry.getUtility(IIntIds)
       
   120                 for folder, depth in find_objects_providing(site, IBaseSiteItem, with_depth=True):
       
   121                     terms.append(SimpleTerm(value=intids.queryId(folder),
       
   122                                             title='{}{}'.format(
       
   123                                                 '- ' * depth,
       
   124                                                 II18n(folder).query_attribute('title',
       
   125                                                                               request=request))))
       
   126         super(SiteManagerContentsVocabulary, self).__init__(terms)