[Zope] adding properties trough pythonscript
Dieter Maurer
dieter at handshake.de
Fri Oct 15 13:32:57 EDT 2004
rv000299 wrote at 2004-10-15 12:24 +0200:
> ...
> ov=map(lambda x:(x.id,x), container.objectValues())
You get the same effect with:
ov = container.objectItems()
> ov.sort()
> for (oid,obj) in ov:
> if not (hasattr(obj,"isPortalContent") or obj.isPrincipiaFolderish):
Be aware of acquisition. Both "hasattr" and attribute lookup
may acquire and thus do not what you except.
Use: "obj.aq_inner.aq_explicit" instead of "obj" at places
where you want to avoid acquisition.
> ...
> try:
> context.manage_addProperty('prop', 0, 'boolean')
> print "prop added<br>"
> except:
> print "adding prop to",str(obj.id),"failed<br>"
Do not use "try: ... except:...". It is dangerous. It can easily
lead to ZODB inconsistencies...
> ...
>The problem is not getting the property added, it does, but editing it
>afterwards in the ZMI is impossible. When I hit the Properties tab of the
>item, the newly added property is not on the page. However when I call the
>prop with a dtml-var it is rendered.
You add the property to "context" but, probably, you wanted it
to get added to "obj"?
--
Dieter
More information about the Zope
mailing list