[Zope-Checkins] CVS: Products/OFSP - Draft.py:

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

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

Modified Files:
      Tag: tseaver-hasattr_geddon-branch
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?

=== Products/OFSP/Draft.py => ===
--- Products/OFSP/Draft.py:	Mon Nov 17 17:34:09 2003
+++ Products/OFSP/Draft.py	Sat May 28 20:41:32 2005
@@ -14,6 +14,7 @@
 from Globals import Persistent
 from Acquisition import Implicit
 from OFS import SimpleItem
+from ZODB.utils import safe_hasattr
 def manage_addPrincipiaDraft(self, id, baseid, PATH_INFO, REQUEST=None):
@@ -90,7 +91,8 @@
         dself=getdraft(self, jar)
-        if hasattr(ref, name): return dself, ref, getattr(ref, name)
+        if safe_hasattr(ref, name):
+            return dself, ref, getattr(ref, name)
         return getattr(self, name)
     def nonempty(self):
@@ -150,10 +152,11 @@
 def getdraft(ob, jar):
-    if hasattr(ob,'aq_parent'):
+    if safe_hasattr(ob,'aq_parent'):
         return getdraft(ob.aq_self, jar).__of__(getdraft(ob.aq_parent, jar))
-    if hasattr(ob,'_p_oid'): ob=jar[ob._p_oid]
+    if safe_hasattr(ob,'_p_oid'):
+        ob=jar[ob._p_oid]
     return ob

More information about the Zope-Checkins mailing list