--- a/src/pyams_content/shared/view/__init__.py Wed Nov 14 12:25:30 2018 +0100
+++ b/src/pyams_content/shared/view/__init__.py Wed Nov 14 17:29:40 2018 +0100
@@ -163,26 +163,33 @@
# check publication dates
now = tztime(datetime.utcnow())
params = Lt(catalog['effective_date'], now)
- params &= Gt(catalog['push_end_date'], now)
- # check content types
- content_types = view.get_content_types(context)
- if content_types:
- params &= Any(catalog['content_type'], content_types)
- # check data types
- data_types = view.get_data_types(context)
- if data_types:
- params &= Any(catalog['data_type'], data_types)
# check workflow states
wf_params = None
for workflow in registry.getAllUtilitiesRegisteredFor(IWorkflow):
wf_params = or_(wf_params, Any(catalog['workflow_state'], workflow.published_states))
params &= wf_params
# check custom extensions
+ do_search = True
for name, adapter in sorted(registry.getAdapters((view,), IViewQueryParamsExtension),
key=lambda x: x[1].weight):
new_params = adapter.get_params(context)
+ if isinstance(new_params, tuple):
+ new_params, do_search = new_params
if new_params:
params &= new_params
+ if not do_search:
+ break
+ # activate search
+ if do_search:
+ params &= Gt(catalog['push_end_date'], now)
+ # check content types
+ content_types = view.get_content_types(context)
+ if content_types:
+ params &= Any(catalog['content_type'], content_types)
+ # check data types
+ data_types = view.get_data_types(context)
+ if data_types:
+ params &= Any(catalog['data_type'], data_types)
return params
def get_results(self, context, sort_index, reverse, limit):