diff -r 22716baab0fe -r 2af30495d1d7 src/pyams_content/features/search/portlet/__init__.py --- a/src/pyams_content/features/search/portlet/__init__.py Tue Dec 01 09:19:16 2020 +0100 +++ b/src/pyams_content/features/search/portlet/__init__.py Mon Jan 11 16:45:22 2021 +0100 @@ -19,8 +19,10 @@ from pyams_content import _ from pyams_content.features.search import ISearchFolder -from pyams_content.features.search.portlet.interfaces import ISearchResultsPortletSettings +from pyams_content.features.search.portlet.interfaces import IAggregatedPortletRenderer, \ + ISearchResultsPortletSettings from pyams_content.shared.view.interfaces import RELEVANCE_ORDER, VISIBLE_PUBLICATION_DATE_ORDER +from pyams_portal.interfaces import IPortletRendererSettings from pyams_portal.portlet import Portlet, PortletSettings, portlet_config from pyams_utils.factory import factory_config from pyams_utils.interfaces import VIEW_PERMISSION @@ -44,8 +46,7 @@ params = request.params return params.get('user_search', '').strip() - @staticmethod - def _get_items(request=None, start=0, length=10, limit=None, ignore_cache=False): + def _get_items(self, request=None, start=0, length=10, limit=None, ignore_cache=False): context = get_parent(request.context, ISearchFolder) if context is None: raise StopIteration @@ -57,6 +58,11 @@ if (order_by == RELEVANCE_ORDER) and \ not SearchResultsPortletSettings.has_user_query(request): request.GET['order_by'] = order_by = VISIBLE_PUBLICATION_DATE_ORDER + renderer_settings = IPortletRendererSettings(self) + if IAggregatedPortletRenderer.providedBy(renderer_settings): + aggregates = renderer_settings.aggregates + else: + aggregates = {} yield from context.get_results(context, order_by, reverse=order_by != RELEVANCE_ORDER, limit=limit, @@ -64,19 +70,20 @@ length=int(length), ignore_cache=ignore_cache, get_count=True, - request=request) + request=request, + aggregates=aggregates) def get_items(self, request=None, start=0, length=10, limit=None, ignore_cache=False): if not (self.allow_empty_query or self.has_user_query(request)): - yield from iter(((), 0), ) + yield from iter(((), 0, {}), ) else: check, items = tee( - SearchResultsPortletSettings._get_items(request, start, length, limit, - ignore_cache)) + self._get_items(request, start, length, limit, + ignore_cache)) try: next(check) except StopIteration: - yield from iter(((), 0), ) + yield from iter(((), 0, {}), ) else: yield from items