Trigger reindexations concerning validation states #22001

This commit is contained in:
Nicolas Demonte 2019-04-11 14:49:47 +02:00
parent 00378c9ffc
commit dc9a0209fb
2 changed files with 20 additions and 0 deletions

View File

@ -45,6 +45,8 @@ def can_last_version_validate(obj, **kw):
for child in reversed(obj.values()):
if child.portal_type != 'dmsmainfile':
continue
if api.content.get_state(child) == 'trashed':
continue
wf_tool = getToolByName(obj, 'portal_workflow')
workflowActions = wf_tool.listActionInfos(object=child)
return bool('submit' in [x.get('id') for x in workflowActions])
@ -60,6 +62,8 @@ def has_last_version_accept(obj, **kw):
for child in reversed(obj.values()):
if child.portal_type != 'dmsmainfile':
continue
if api.content.get_state(child) == 'trashed':
continue
last_version = child
for task in reversed(obj.values()):
if task.portal_type != 'validation':
@ -81,6 +85,8 @@ def has_last_version_refuse(obj, **kw):
for child in reversed(obj.values()):
if child.portal_type != 'dmsmainfile':
continue
if api.content.get_state(child) == 'trashed':
continue
last_version = child
for task in reversed(obj.values()):
if task.portal_type != 'validation':
@ -92,3 +98,10 @@ def has_last_version_refuse(obj, **kw):
break
return False
grok.global_adapter(has_last_version_refuse, name='has_last_version_refuse')
def reindex_after_version_changes(document):
if IDmsDocument.providedBy(document):
document.reindexObject(idxs=['can_last_version_validate',
'has_last_version_accept',
'has_last_version_refuse'])

View File

@ -33,6 +33,7 @@ from collective.dms.basecontent.dmsfile import IDmsFile, IDmsAppendixFile
from pfwbged.folder.folder import IFolder
from pfwbged.basecontent.behaviors import IPfwbDocument
from pfwbged.policy.indexers import reindex_after_version_changes
from pfwbged.policy import _
from mail import changeWorkflowState
@ -113,6 +114,7 @@ def change_validation_state(context, event):
if api.content.get_state(validation) == 'refused':
api.content.transition(validation, 'cancel-refusal')
validation.reindexObject(idxs=['review_state'])
reindex_after_version_changes(aq_parent(context))
@grok.subscribe(IDmsFile, IObjectWillBeRemovedEvent)
@ -132,6 +134,7 @@ def delete_tasks(context, event):
obj = rv.from_object
#obj.aq_parent.manage_delObjects([obj.getId()]) # we don't want to verify Delete object permission on object
del aq_parent(obj)[obj.getId()]
reindex_after_version_changes(aq_parent(context))
@grok.subscribe(IDmsFile, IObjectAddedEvent)
@ -140,6 +143,7 @@ def version_is_signed_at_creation(context, event):
if context.signed:
api.content.transition(context, 'finish_without_validation')
context.reindexObject(idxs=['review_state'])
reindex_after_version_changes(aq_parent(context))
### Workflow for other documents
@ -260,6 +264,8 @@ def version_note_finished(context, event):
context.__ac_local_roles_block__ = False
context.reindexObjectSecurity()
reindex_after_version_changes(document)
@grok.subscribe(IDmsDocument, IAfterTransitionEvent)
def document_is_processed(context, event):
@ -781,3 +787,4 @@ def set_permissions_on_files_on_add(context, event):
context.reindexObject(idxs=['allowedRolesAndUsers'])
document.reindexObject(idxs=['allowedRolesAndUsers'])
reindex_after_version_changes(document)