[Zope] FW: [Zope] adding properties to all existing docs

michael angelo ruberto michaelangelo@intelligenesis.net
Wed, 8 Nov 2000 12:42:31 -0500


hi Dieter,

thanks for the advice. i have written a small DTML script which i plan to
call from the standard html header so that the intranet users will
unknowingly populate the docs as they browse. saves me from doing it
manually unless there are file objects in the folder. here is the script:

<dtml-in "PARENTS[0].objectItems(['File','DTML Document'])" sort=title>
<dtml-unless "_.string.find(_['id'],'index_html')==0">

<dtml-comment>
properties are added in the unless below.
to add additional properties to this script repeat the unless block
for each new property and change the id and type to what you
want to add.
</dtml-comment>

<dtml-unless "hasProperty('rev')">
<dtml-call "manage_addProperty('rev','none','string')">
</dtml-unless>


</dtml-unless>
</dtml-in>

to run the script give it manager role and call the method in the URL or
with a <dtml-var> tag. you can select the types of objects it "sees" in the
first line. please let me know if there is some flaw in doing it this way.

take care

-<mike>-

ps: i tried to make a python method for this but couldn't figure out how to
handle the objects properly.

-----Original Message-----
From: Dieter Maurer [mailto:dieter@handshake.de]
Sent: Sunday, November 05, 2000 12:49 PM
To: michael angelo ruberto
Cc: zope@zope.org
Subject: Re: [Zope] adding properties to all existing docs


michael angelo ruberto writes:
 > i have a Zope containing 4700+ files and documents. i want to add new
 > properties to all of them, how can i do this programmatically? is it
 > possible to change the base classes? if so, how?
It is possible to change the base class but I would not do it
(as it affects all Zope objects and your change is likely
to disappear when you upgrade).

You can automate Zope either internally or externally.

  Internally (via a method (DTML or Python)) you would
  use ZopeFind to list all objects that need to be
  updated and then iterate (dtml-in) over the objects
  to update.

  Externally, you would use "ZPublisher.ZClient".


I would go for the internal solution.


Dieter