7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 from pyams_portal.interfaces import PREVIEW_MODE |
|
13 |
12 |
14 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
15 |
14 |
16 |
15 |
17 # import standard library |
16 # import standard library |
18 from itertools import islice |
17 from itertools import islice |
19 |
18 |
20 # import interfaces |
19 # import interfaces |
21 from pyams_content.shared.view.interfaces import IViewsMerger |
20 from pyams_content.shared.view.interfaces import IViewsMerger |
22 from pyams_content.shared.view.portlet.interfaces import IViewItemsPortletSettings, VIEW_DISPLAY_CONTEXT |
21 from pyams_content.shared.view.portlet.interfaces import IViewItemsPortletSettings, VIEW_DISPLAY_CONTEXT |
|
22 from pyams_portal.interfaces import PREVIEW_MODE |
23 from pyams_utils.interfaces import VIEW_PERMISSION |
23 from pyams_utils.interfaces import VIEW_PERMISSION |
24 from pyams_utils.interfaces.url import DISPLAY_CONTEXT |
24 from pyams_utils.interfaces.url import DISPLAY_CONTEXT |
25 |
25 |
26 # import packages |
26 # import packages |
27 from pyams_content.workflow import PUBLISHED_STATES |
27 from pyams_content.workflow import PUBLISHED_STATES |
67 context = request.annotations.get(DISPLAY_CONTEXT, request.root) |
67 context = request.annotations.get(DISPLAY_CONTEXT, request.root) |
68 else: |
68 else: |
69 context = request.context |
69 context = request.context |
70 if not ignore_cache: |
70 if not ignore_cache: |
71 ignore_cache = request.annotations.get(PREVIEW_MODE, False) |
71 ignore_cache = request.annotations.get(PREVIEW_MODE, False) |
72 if len(self.views or ()) < 2: # single view |
72 merger = self.get_merger(request) |
73 for view in self.get_views(): |
73 if merger is not None: |
74 if view is not None: |
74 yield from islice(unique_iter(merger.get_results(self.get_views(), |
75 yield from islice(view.get_results(context, ignore_cache=ignore_cache), |
75 context, |
76 self.limit) |
76 ignore_cache=ignore_cache)), |
77 else: # several views merged together |
77 self.limit) |
78 merger = self.get_merger(request) |
|
79 if merger is not None: |
|
80 yield from islice(unique_iter(merger.get_results(self.get_views(), |
|
81 context, |
|
82 ignore_cache=ignore_cache)), |
|
83 self.limit) |
|
84 |
78 |
85 |
79 |
86 @portlet_config(permission=VIEW_PERMISSION) |
80 @portlet_config(permission=VIEW_PERMISSION) |
87 class ViewItemsPortlet(Portlet): |
81 class ViewItemsPortlet(Portlet): |
88 """View items portlet""" |
82 """View items portlet""" |