--- a/src/pyams_content/shared/view/__init__.py Fri Dec 14 09:01:01 2018 +0100
+++ b/src/pyams_content/shared/view/__init__.py Fri Dec 14 11:08:28 2018 +0100
@@ -111,7 +111,7 @@
return list(data_types)
def get_results(self, context, sort_index=None, reverse=None, limit=None,
- start=0, length=999, ignore_cache=False, get_count=False):
+ start=0, length=999, ignore_cache=False, get_count=False, request=None):
results = _MARKER
if not ignore_cache:
# check for cache
@@ -132,14 +132,13 @@
adapter = registry.queryAdapter(self, IViewQuery, name='es')
if adapter is None:
adapter = registry.getAdapter(self, IViewQuery)
- if (not sort_index) or (sort_index == RELEVANCE_ORDER):
- sort_index = None # keep natural order
- else:
+ if not sort_index:
sort_index = self.order_by
results, count = adapter.get_results(context,
sort_index,
reverse if reverse is not None else self.reversed_order,
- limit or self.limit)
+ limit or self.limit,
+ request=request)
count = min(count, limit or self.limit or 999)
cache, results = tee(islice(results, start, start + length))
if not ignore_cache:
@@ -171,7 +170,7 @@
class ViewQuery(ContextAdapter):
"""View query"""
- def get_params(self, context):
+ def get_params(self, context, request=None):
view = self.context
catalog = get_utility(ICatalog)
registry = get_current_registry()
@@ -187,7 +186,7 @@
do_search = True
for name, adapter in sorted(registry.getAdapters((view,), IViewQueryParamsExtension),
key=lambda x: x[1].weight):
- for new_params in adapter.get_params(context):
+ for new_params in adapter.get_params(context, request):
if isinstance(new_params, tuple):
new_params, do_search = new_params
if new_params:
@@ -211,11 +210,11 @@
params &= Any(catalog['data_type'], data_types)
return params
- def get_results(self, context, sort_index, reverse, limit):
+ def get_results(self, context, sort_index, reverse, limit, request=None):
view = self.context
catalog = get_utility(ICatalog)
registry = get_current_registry()
- params = self.get_params(context)
+ params = self.get_params(context, request)
if sort_index == RELEVANCE_ORDER:
sort_index = None
query = CatalogQuery(catalog).query(params,
@@ -226,7 +225,7 @@
items = CatalogResultSet(query)
for name, adapter in sorted(registry.getAdapters((view,), IViewQueryFilterExtension),
key=lambda x: x[1].weight):
- items = adapter.filter(context, items)
+ items = adapter.filter(context, items, request)
return unique_iter(items), total_count