[Zope] Zope Product to globally add/remove a property

Roché Compaan roche at upfrontsystems.co.za
Mon Jun 14 13:48:32 EDT 2004


* Gary Duke Speer <gspeer at cortech.org> [2004-06-12 18:47]:
> Does one of the many Zope products have a feature to walk a tree of
> folderish objects and globally add or remove a named property.
> 
> The delete would simply take the property name as an arguement and execute
> on all folders having the property from the point of execution down.
> The add would take the Property name, the class, and the default/starting
> value and it it doesn't already exist, adds it.
> 
> In the alternative, for a python newbie, is this something that can be
> created easily?  Is there a trick for error suppression needed to manage
> the cases of deleting when the property doesn't exist or adding when
> already added during the recursion through subfolders.  (or testing first)
> 
> Thank you for any suggestions,
> Gary

Add a python script that uses ZopeFind to find all folderish objects and
add/delete properties to them:

    # rootfolder is the root of your tree
    for obj in context.ZopeFind(rootfolder,
            obj_expr='isPrincipiaFolderish', search_sub=1):
        # add new properties
        if not obj.hasProperty('NewPropertyName'):
            obj.manage_addProperty('NewPropertyName', '', 'string')
        # delete properties
        if obj.hasProperty('PropertyToDelete'):
            obj.manage_delProperty('PropertyToDelete')

-- 
Roché Compaan
Upfront Systems                 http://www.upfrontsystems.co.za



More information about the Zope mailing list