--- 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