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

Tres Seaver tseaver at palladion.com
Tue Aug 11 20:27:23 CEST 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 08/11/2015 02:05 PM, Dan Gaibel wrote:
> 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'


You likely want to use 'ZopeFind', which handles all the recursion for
you.  E.g.:

    for _, dtml_doc in context.ZopeFind(obj_metatypes=['DTML Document']):
        # do something with 'dtml_doc' here.


Tres.
- -- 
===================================================================
Tres Seaver          +1 540-429-0999          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBAgAGBQJVyj6LAAoJEPKpaDSJE9HYMI8P/1kXr5HkXlQaX35MM3JPBFG4
cMfDUwumSfD2LQF9NDJPGMWZszu//DBLJ4iQ8Sis7Vu0F5aq9EdruZ8/O3yFYwEh
Asv4p8G0d+M3XX19JUHuH0787xq2Zcf/Jx0lQHBY1gnfg6Jt/xlbL4owaoRqR/gN
zu1iPdc8f00LEKoB7XryXhVilbkkJqn8/wXjNReVBsKwOnCH/E7FPBTKairyzdm0
0Azz5tiRyYvXrndsHsLjok7gBUAWx+aOyJOqqSs/dZmMMj522DDcaXbjfy2jmrr3
JbpccAUTNFIIxKDlgWeoSGNE0fVWaSG/oWnn68IpRWDlpEUrvVjZJZXSBinI0uD/
urXA+1u/r9vinZKjzT/q5qTmrSbuIHd6A2bo2kYTCkTbp8e9gD8Kx8VHWDQjPQCI
tY+iFRxGUAut5oSbdm2fhVx3WhK6qf1SLGCGiEt5x5+Nxyut2d9lPByGpJWmI1Rd
ioJkY1XiE4omsn6blZQfBUauSEkTPEfR+fEtGsj6xDBUv0Uoovjumk+QlV03Zgq+
GJMOUzhBxqxst5QoU6mW5xPV98uQ7Bcspo741Gme+lAjYFoaDSuw8arNWP8clX4P
Gx4LcGoJF4X6kdXIYFwRD4mw+QsTFjD4enDzIUqpIrUL94I6M7nRre0SmDpL5FQk
dSu4D/EGtNxMtkOh/XWp
=6+2r
-----END PGP SIGNATURE-----



More information about the Zope mailing list