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