Commit 7ab965ec authored by Klaus Wölfel's avatar Klaus Wölfel Committed by Xiaowu Zhang

composition: Allow to define default models

Models with workflow state "default" are only considered in composition if no
other valid model is defined. This allows to implement "ingest anything"
policy in wendelin.
parent 9a146471
......@@ -54,9 +54,10 @@ def _getEffectiveModel(self, start_date, stop_date):
if not reference:
return self
def get_model_list(excluded_validation_state_list):
query_list = [Query(reference=reference),
Query(portal_type=self.getPortalType()),
Query(validation_state=('deleted', 'invalidated'),
Query(validation_state=excluded_validation_state_list,
operator='NOT')]
if start_date is not None:
query_list.append(ComplexQuery(Query(effective_date=None),
......@@ -73,9 +74,16 @@ def _getEffectiveModel(self, start_date, stop_date):
# created and not yet indexed, or because it was invalidated) ?
# For the moment, we return self if self is invalidated and we raise otherwise.
# This way, if this happens in activity it may succeed when activity is retried.
model_list = self.getPortalObject().portal_catalog.unrestrictedSearchResults(
return self.getPortalObject().portal_catalog.unrestrictedSearchResults(
query=ComplexQuery(logical_operator='AND', *query_list),
sort_on=(('version', 'descending'),))
# Only include default model if no other valid model found
model_list = get_model_list(
excluded_validation_state_list=('deleted', 'invalidated', 'default'))
if not model_list:
model_list = get_model_list(
excluded_validation_state_list=('deleted', 'invalidated'))
if not model_list:
if self.getValidationState() == 'invalidated':
return self
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment