[Zope-Checkins] CVS: Packages/ZTUtils - Tree.py:1.15.2.5.22.1 Zope.py:1.11.42.6.26.1

Tres Seaver tseaver at palladion.com
Sat May 28 20:42:18 EDT 2005


Update of /cvs-repository/Packages/ZTUtils
In directory cvs.zope.org:/tmp/cvs-serv32028/lib/python/ZTUtils

Modified Files:
      Tag: tseaver-hasattr_geddon-branch
	Tree.py Zope.py 
Log Message:

  - Removed all uses of the 'hasattr' builtin from the core, where
    the object being tested derives (or might) from Persistent.
    XXX:  currently, this branch imports a 'safe_hasattr' from ZODB.utils,
    which adds a dependency on ZODB for some packages;  we probably
    need a better location, and perhas a C implementation?


=== Packages/ZTUtils/Tree.py 1.15.2.5 => 1.15.2.5.22.1 ===
--- Packages/ZTUtils/Tree.py:1.15.2.5	Tue May  4 15:31:09 2004
+++ Packages/ZTUtils/Tree.py	Sat May 28 20:41:38 2005
@@ -17,6 +17,7 @@
 
 from Acquisition import Explicit
 from ComputedAttribute import ComputedAttribute
+from ZODB.utils import safe_hasattr
 from types import ListType, TupleType
 
 class TreeNode(Explicit):
@@ -177,11 +178,13 @@
 
     def getId(self, object):
         id_attr = self._id
-        if hasattr(object, id_attr):
+        if safe_hasattr(object, id_attr):
             obid = getattr(object, id_attr)
-            if not simple_type(obid): obid = obid()
+            if not simple_type(obid):
+                obid = obid()
             return obid
-        if hasattr(object, '_p_oid'): return str(object._p_oid)
+        if safe_hasattr(object, '_p_oid'):
+            return str(object._p_oid)
         return id(object)
 
     def hasChildren(self, object):


=== Packages/ZTUtils/Zope.py 1.11.42.6 => 1.11.42.6.26.1 ===
--- Packages/ZTUtils/Zope.py:1.11.42.6	Tue Jan 27 10:45:35 2004
+++ Packages/ZTUtils/Zope.py	Sat May 28 20:41:38 2005
@@ -22,6 +22,7 @@
 from Products.ZCatalog.Lazy import Lazy
 from AccessControl import getSecurityManager
 from DateTime import DateTime
+from ZODB.utils import safe_hasattr
 
 try:
     from AccessControl.ZopeGuards import guarded_getitem
@@ -233,7 +234,7 @@
         sublist = None
         if isinstance(v, str):
             pass
-        elif hasattr(v, 'items'):
+        elif safe_hasattr(v, 'items'):
             sublist = []
             for sk, sv in v.items():
                 sm = simple_marshal(sv)



More information about the Zope-Checkins mailing list