Trigger reindexations concerning validation states #22001
This commit is contained in:
parent
00378c9ffc
commit
dc9a0209fb
|
@ -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'])
|
||||
|
|
|
@ -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)
|
||||
|
|
Reference in New Issue