Hello Tres Seaver,
Tuesday, October 11, 2005, 5:52:19 PM, you wrote:
Tres, thank you for your help!
I use 3 way in the future, like using CMFUID, but i have my own uids for my
Meanwhile in the begining of the '__do_something_with_my_object__' i use
my_object = my_object.getObjectByUid(my_object.getUid()) # my methods, this
TS> The call chain looks like:
TS> <your code> ->
TS> wf_tool.doActdionFor(...) ->
TS> Both of the tool methods return the result of calling the action. In
TS> cases where the ObjectMoved exception is raised, the exception has the
TS> "new" object wrappers available, but the tool consumes that part of the
TS> information (as you note).
>> Or may be i use WorkflowTool wrongly.
TS> Not really; but the tool doesn't expect that you will need reindex the
TS> object (it already does that in the new location).
TS> Here are a couple of alternate strategies:
TS> - You could modify the workflow action's result (which is coming from
TS> the code which actually raises the ObjectMoved exception) to include
TS> the newly-wrapped object in the result (e.g., as a tuple with the
TS> current result).
Question from other topic: What doActionFor usually returns?
DCWorkflowDefinition.doActionFor returns usually None, but
DCWorkflowDefinition.wrapWorkflowMethod returns result of the custom method.
TS> - You could move the code in '__do_something_with_my_object__' into an
TS> "after" script of the workflow, where it would be passed the object
TS> in its new wrappers.
this is usefull too, because portal_workflow do reindexObject with new dict
that getCatalogVariablesFor method returned, but usually i have many
ZCatalogs that indexed my_object ( though this fixed by overriding
reindexObject method )
TS> - You could use the CMFUID tools, and find the object in its new
TS> location after running the workflow transition using its UID.
the best solution :)
Or, may be added to ImplicitAcquisionWrapper new method 'aq_rewrap'
>>> l = [1,2,3]
>>> def list_modification1(l):
l = [3,2,1]
>>> def list_modification2(l):
l[:] = [3,2,1]
[1, 2, 3]
[3, 2, 1] <-- changed the list
wrapper = ImplicitAcquisitionWrapper( obj, container )
ImplicitAcqusitionWrapper sets 2 C attributes
and ImplicitAcqusitionWrapper.aq_rewrap( self, container ) sets new
And use aq_rewrap instead of ObjectMoved.getNewObject.
Is this usefull, and do i need to send this to [EMAIL PROTECTED]
Zope-CMF maillist - Zope-CMF@lists.zope.org
See http://collector.zope.org/CMF for bug reports and feature requests