From 0ce5a4e561da2fdb743c72e25193fd9bfc648ec7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Mon, 21 Jan 2019 09:33:08 +0100 Subject: [PATCH] add has_last_version_accept and has_last_version_refuse indexes (#22001) --- src/pfwbged/policy/indexers.py | 43 ++++++++++++++++++- .../policy/profiles/default/catalog.xml | 8 ++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/pfwbged/policy/indexers.py b/src/pfwbged/policy/indexers.py index 0ff8f6d..8e1718c 100644 --- a/src/pfwbged/policy/indexers.py +++ b/src/pfwbged/policy/indexers.py @@ -46,7 +46,46 @@ def can_last_version_validate(obj, **kw): continue wf_tool = getToolByName(obj, 'portal_workflow') workflowActions = wf_tool.listActionInfos(object=child) - return bool('validate' in [x.get('id') for x in workflowActions]) + return bool('submit' in [x.get('id') for x in workflowActions]) return False - grok.global_adapter(can_last_version_validate, name='can_last_version_validate') + + +@indexer(IDmsDocument) +def has_last_version_accept(obj, **kw): + last_version = None + wf_tool = getToolByName(obj, 'portal_workflow') + for child in reversed(obj.values()): + if child.portal_type != 'dmsmainfile': + continue + last_version = child + for task in reversed(obj.values()): + if task.portal_type != 'validation': + continue + if task.target.to_object.Title() != last_version.Title(): + continue + workflowActions = wf_tool.listActionInfos(object=task) + return bool('validate' in [x.get('id') for x in workflowActions]) + break + return False +grok.global_adapter(has_last_version_accept, name='has_last_version_accept') + + +@indexer(IDmsDocument) +def has_last_version_refuse(obj, **kw): + last_version = None + wf_tool = getToolByName(obj, 'portal_workflow') + for child in reversed(obj.values()): + if child.portal_type != 'dmsmainfile': + continue + last_version = child + for task in reversed(obj.values()): + if task.portal_type != 'validation': + continue + if task.target.to_object.Title() != last_version.Title(): + continue + workflowActions = wf_tool.listActionInfos(object=task) + return bool('refuse' in [x.get('id') for x in workflowActions]) + break + return False +grok.global_adapter(has_last_version_refuse, name='has_last_version_refuse') diff --git a/src/pfwbged/policy/profiles/default/catalog.xml b/src/pfwbged/policy/profiles/default/catalog.xml index d2cd968..f89d398 100644 --- a/src/pfwbged/policy/profiles/default/catalog.xml +++ b/src/pfwbged/policy/profiles/default/catalog.xml @@ -6,6 +6,12 @@ + + + + + + @@ -18,6 +24,8 @@ + +