fix ObjectWillBeRemovedEvent task subscriber

This commit is contained in:
Vincent Fretin 2013-10-11 15:06:15 +02:00
parent 23d26e285a
commit 66878a9d5f
1 changed files with 19 additions and 6 deletions

View File

@ -1,7 +1,7 @@
from five import grok
from zope.lifecycleevent.interfaces import IObjectRemovedEvent,\
IObjectAddedEvent, IObjectModifiedEvent
from OFS.interfaces import IObjectWillBeRemovedEvent
from zope.lifecycleevent.interfaces import IObjectAddedEvent, IObjectModifiedEvent
from zope.container.contained import ContainerModifiedEvent
from plone import api
@ -40,16 +40,29 @@ def task_changed_state(context, event):
parent.reindexObject(idxs=['review_state'])
@grok.subscribe(ITask, IObjectRemovedEvent)
@grok.subscribe(ITask, IObjectWillBeRemovedEvent)
def reopen_parent_task(context, event):
"""When a task is deleted, reopen its parent task
"""
parent = context.getParentNode()
parent_state = api.content.get_state(parent)
if parent.portal_type == 'task' and parent_state == 'attributed':
with api.env.adopt_roles(['Reviewer']):
api.content.transition(obj=parent, transition='subtask-abandoned')
parent.reindexObject(idxs=['review_state'])
state = api.content.get_state(context)
if state == 'todo':
with api.env.adopt_roles(['Reviewer']):
api.content.transition(obj=context, transition='abandon')
context.reindexObject(idxs=['review_state'])
elif state == 'refusal-requested':
with api.env.adopt_roles(['Reviewer']):
api.content.transition(obj=context, transition='accept-refusal')
context.reindexObject(idxs=['review_state'])
elif state == 'in-progress':
with api.env.adopt_roles(['Editor']):
api.content.transition(obj=context, transition='ask-for-refusal')
context.reindexObject(idxs=['review_state'])
with api.env.adopt_roles(['Reviewer']):
api.content.transition(obj=context, transition='accept-refusal')
context.reindexObject(idxs=['review_state'])
@grok.subscribe(IBaseTask, IObjectAddedEvent)