src/pyams_content/shared/view/__init__.py
changeset 1167 04429c162338
parent 1162 d8d05f5c83ba
child 1168 3b177d6db9db
--- 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