Peter Bengtsson wrote at 2008-7-3 15:41 +0100:
from cStringIO import StringIO
def workflowscripts2methods(self): out = StringIO()
print >>out, "Star converting workflow scripts into External Methods"
pw = self.portal_workflow for workflow in pw.objectValues('Workflow'): for container in workflow.objectValues('Workflow Scripts'): meta_type = 'Script (Python)' for script in container.objectValues(meta_type): assert script.meta_type == meta_type print >>out, "script (%r, %s)" % (script.meta_type, script.absolute_url_path())
value = out.getvalue() print value return value
I'm getting an AssertionError on this!!!
For efficiency reasons, a "Folder" maintains the meta types used for filtering "object*" in a separate structure (this is the "_objects" attribute for normal folders). Your "AssertionError" indicates that this structure is inconsistent with the true objects. As long as a folder is only modified by the official "Folder" api ("_setObject", "_delObject" and higher level functions), consistency is garanteed. However, lower level functions can destroy the consistency. It is not a problem with "objectValues". The problem must be elsewhere. -- Dieter