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 |
12 |
13 |
13 __docformat__ = 'restructuredtext' |
14 __docformat__ = 'restructuredtext' |
14 |
15 |
15 |
16 |
16 # import standard library |
17 # import standard library |
57 for oid in self.views or (): |
58 for oid in self.views or (): |
58 view = get_sequence_target(oid, state=PUBLISHED_STATES) |
59 view = get_sequence_target(oid, state=PUBLISHED_STATES) |
59 if view is not None: |
60 if view is not None: |
60 yield view |
61 yield view |
61 |
62 |
62 def get_items(self, request=None): |
63 def get_items(self, request=None, ignore_cache=False): |
63 if request is None: |
64 if request is None: |
64 request = check_request() |
65 request = check_request() |
65 if self.views_context == VIEW_DISPLAY_CONTEXT: |
66 if self.views_context == VIEW_DISPLAY_CONTEXT: |
66 context = request.annotations.get(DISPLAY_CONTEXT, request.root) |
67 context = request.annotations.get(DISPLAY_CONTEXT, request.root) |
67 else: |
68 else: |
68 context = request.context |
69 context = request.context |
|
70 if not ignore_cache: |
|
71 ignore_cache = request.annotations.get(PREVIEW_MODE, False) |
69 if len(self.views or ()) < 2: # single view |
72 if len(self.views or ()) < 2: # single view |
70 for view in self.get_views(): |
73 for view in self.get_views(): |
71 if view is not None: |
74 if view is not None: |
72 yield from islice(view.get_results(context), self.limit) |
75 yield from islice(view.get_results(context, ignore_cache=ignore_cache), |
|
76 self.limit) |
73 else: # several views merged together |
77 else: # several views merged together |
74 merger = self.get_merger(request) |
78 merger = self.get_merger(request) |
75 if merger is not None: |
79 if merger is not None: |
76 yield from islice(unique_iter(merger.get_results(self.get_views(), context)), self.limit) |
80 yield from islice(unique_iter(merger.get_results(self.get_views(), |
|
81 context, |
|
82 ignore_cache=ignore_cache)), |
|
83 self.limit) |
77 |
84 |
78 |
85 |
79 @portlet_config(permission=VIEW_PERMISSION) |
86 @portlet_config(permission=VIEW_PERMISSION) |
80 class ViewItemsPortlet(Portlet): |
87 class ViewItemsPortlet(Portlet): |
81 """View items portlet""" |
88 """View items portlet""" |