src/pyams_content/shared/view/portlet/__init__.py
changeset 796 2ef3bacda742
parent 783 e34cc04e9786
child 799 dd66696cb871
equal deleted inserted replaced
795:d282eb691486 796:2ef3bacda742
     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"""