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