[Zope] Zope 2: traversing and modifying DTM doc in folders?

Dan Gaibel dg76 at cornell.edu
Tue Aug 11 20:05:02 CEST 2015


Greetings, I have a developer here trying to fix a problem with some legacy Zope 2 (2.8.6) material. Basically, she is trying to change properties on a DTML document, but so far cannot get the script to recursively search through folders to act on every document in the hierarchy.

Any advice is greatly appreciated!

Best,

Dan

-------------------------------------------------------------------------------------------------------------
Hello, the things we want to do is to find every media file (DTML document) in a folder structure and change their format. They are a few folders deep and the number of folders that contain the file is unknown, so I tried to use a recursive way to get access to every document.

So this is what I did, I wrote a script named changeType with parameter "object", which is initially 0. Then when object is 0, just set object = context. If in "object" we found that there's another folder called f, just called changeType(f). The script is shown as below:

#parameter object = 0
from Products.PythonScripts.standard import html_quote
request = context.REQUEST
RESPONSE =  request.RESPONSE

if object == 0:
   object = context

folders = object.objectValues(['Folder'])
for f in folders:
   fds = f.objectValues(['Folder'])
   if(len(fds) != 0):
      f.changeType(f)
   .......(methods to change format)

But this causes an error:

Error Type: AttributeError
Error Value: ‘str’ object has no attribute ‘objectValues'
​
I think the reason should be, it doesn't seen "object" or "context" as object and context but seen them just as strings. But I have no idea about how could I solve this or if there's any other way I can call a recursive method to get every DTML document in their respective subfolders. Please let me know if you have any suggestion/examples on Zope/found another error in my code/etc. 


More information about the Zope mailing list