src/pyams_content/shared/view/__init__.py
changeset 783 e34cc04e9786
parent 780 0e7088a263bc
child 785 99772127f89b
--- a/src/pyams_content/shared/view/__init__.py	Mon Jul 02 17:10:37 2018 +0200
+++ b/src/pyams_content/shared/view/__init__.py	Mon Jul 02 17:11:41 2018 +0200
@@ -36,7 +36,7 @@
 from pyams_catalog.query import CatalogResultSet, or_
 from pyams_content.shared.common import WfSharedContent, register_content_type, SharedContent, IWfSharedContentFactory
 from pyams_utils.adapter import adapter_config, ContextAdapter
-from pyams_utils.list import unique
+from pyams_utils.list import unique_iter
 from pyams_utils.registry import get_utility, get_global_registry
 from pyams_utils.timezone import tztime
 from pyams_workflow.interfaces import IWorkflow
@@ -86,7 +86,7 @@
             content_types |= set(self.selected_content_types)
         return list(content_types)
 
-    def get_results(self, context):
+    def get_results(self, context, sort_index=None, reverse=None, limit=None):
         views_cache = get_cache(VIEWS_CACHE_REGION, VIEWS_CACHE_NAME)
         if self.is_using_context:
             cache_key = VIEW_CONTEXT_CACHE_KEY.format(view=ICacheKeyValue(self),
@@ -100,7 +100,10 @@
             adapter = registry.queryAdapter(self, IViewQuery, name='es')
             if adapter is None:
                 adapter = registry.getAdapter(self, IViewQuery)
-            results = adapter.get_results(context, self.limit)
+            results = adapter.get_results(context,
+                                          sort_index or self.order_by,
+                                          reverse if reverse is not None else self.reversed_order,
+                                          limit or self.limit)
             intids = get_utility(IIntIds)
             views_cache.set_value(cache_key, [intids.queryId(item) for item in results])
             logger.debug("Storing view items to cache key {0}".format(cache_key))
@@ -152,19 +155,19 @@
                 params &= new_params
         return params
 
-    def get_results(self, context, limit=None):
+    def get_results(self, context, sort_index, reverse, limit):
         view = self.context
         catalog = get_utility(ICatalog)
         registry = get_current_registry()
         params = self.get_params(context)
         items = CatalogResultSet(CatalogQuery(catalog).query(params,
-                                                             sort_index=view.order_by,
-                                                             reverse=view.reversed_order,
+                                                             sort_index=sort_index,
+                                                             reverse=reverse,
                                                              limit=limit))
         for name, adapter in sorted(registry.getAdapters((view,), IViewQueryFilterExtension),
                                     key=lambda x: x[1].weight):
             items = adapter.filter(context, items)
-        return unique(items)
+        return unique_iter(items)
 
 
 @subscriber(IObjectModifiedEvent, context_selector=IWfView)