[Zope3-Users] Re: catalog of objects' states (hurry.workflow)

Philipp von Weitershausen philipp at weitershausen.de
Tue Jul 31 15:53:03 EDT 2007

Alek Kowalczyk wrote:
> Hello again,
> I have a rather big tree of MyObjects. MyObjects are adaptable to
> hurry.workflow's IWorklowState. Now I'd like to create a catalog to index all
> MyObjects by their current states. How to do that? 
> An option might be(?) to add to MyObject property like that:
> @property
> def currentState(self): return IWorkflowState(self).getState()
> and index this property. 
> But I'm not sure whether it is elegant solution, as it requires the object to
> know that it has workflow and (too) strong link between object and adapter.

Right. Fortunately, indexes know how to adapt. So, in order to index the 
workflow state of your objects, configure a FieldIndex (or ValueIndex 
from zc.catalog) to the IWorkflowState interface. Specify the 'getState' 
  attribute and check the 'callable' option (because it's a method).

When encountering an object to be indexed, the FieldIndex (or 
ValueIndex) will then try to adapt it to IWorkflowState. If that 
succeeds (and it will for your MyObjects), it will call the getState() 
method on that adapter and index the return value.

This and more is described in my book, btw: http://worldcookery.com

http://worldcookery.com -- Professional Zope documentation and training

More information about the Zope3-users mailing list