[Zope-CMF] Re: Workflow state change event

Tim Terlegård tim.terlegard at valentinewebsystems.se
Fri May 16 06:56:28 EDT 2008


On May 15, 2008, at 10:31 PM, Martin Aspeli wrote:

> Tim Terlegård wrote:
>> I was wondering if it perhaps would make sense to move the
>> ActionSucceededEvent notification after the reindexing of the
>> workflow status has been done?
>> doActionFor(...) calls _invokeWithNotification(...) and the bottom
>> of that method looks like this:
>> def _invokeWithNotification(self, wfs, ob, action, func, args, kw):
>>         ...
>>         for w in wfs:
>>             w.notifySuccess(ob, action, res)
>>             notify(ActionSucceededEvent(ob, w, action, res))
>>         if reindex:
>>             self._reindexWorkflowVariables(ob)
>>         return res
>> In an event handler I would like to use the catalog and search for   
>> published
>> objects, but it's not possible because the catalog is updated  
>> after  the event
>> handler is triggered.
>
> That shouldn't matter, though - you get the object as part of the  
> event, no need to search for it.


The grandparent of the object is doing a catalog search, so the object  
that
currently got a new workflow state isn't found.

The whole use case:

siteroot
    - folderA
       - docB

I have an 'is_empty' index that is based on catalog searches. When  
folderA
doesn't contain any published objects it's considered empty. When  
workflow
is changed on object docB, going from visible to published, I need to  
reindex
the object, and also the parent and the grandparent etc.  So when the  
state
change event handler for docB calls  
folderA.reindexObject(idxs=['is_empty'])
it will not find docB because the catalog does not reflect the state  
change yet.

/Tim


More information about the Zope-CMF mailing list