src/pyams_content/features/search/portlet/__init__.py
changeset 1443 2af30495d1d7
parent 1406 a568b9d2f7dd
--- 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