[Zope-Checkins] CVS: Packages/Shared/DC/ZRDB -
Aqueduct.py:1.56.68.3.12.1 Connection.py:1.35.68.4.28.1
DA.py:1.110.12.7.22.1 RDB.py:1.33.132.1 Results.py:1.14.118.1
Search.py:1.20.68.3.12.1
Tres Seaver
tseaver at palladion.com
Sat May 28 20:42:16 EDT 2005
Update of /cvs-repository/Packages/Shared/DC/ZRDB
In directory cvs.zope.org:/tmp/cvs-serv32028/lib/python/Shared/DC/ZRDB
Modified Files:
Tag: tseaver-hasattr_geddon-branch
Aqueduct.py Connection.py DA.py RDB.py Results.py Search.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/Shared/DC/ZRDB/Aqueduct.py 1.56.68.3 => 1.56.68.3.12.1 ===
--- Packages/Shared/DC/ZRDB/Aqueduct.py:1.56.68.3 Sun Nov 14 16:35:03 2004
+++ Packages/Shared/DC/ZRDB/Aqueduct.py Sat May 28 20:41:36 2005
@@ -25,6 +25,7 @@
from AccessControl.Role import RoleManager
from DocumentTemplate import HTML
from zExceptions import Redirect
+from ZODB.utils import safe_hasattr
from string import strip, replace
@@ -134,7 +135,7 @@
__traceback_info__=o
q=getattr(o,id)
try:
- if hasattr(q,'_searchable_arguments'):
+ if safe_hasattr(q,'_searchable_arguments'):
try: q=q.__of__(self.aq_parent)
except: pass
return q
=== Packages/Shared/DC/ZRDB/Connection.py 1.35.68.4 => 1.35.68.4.28.1 ===
--- Packages/Shared/DC/ZRDB/Connection.py:1.35.68.4 Thu Jan 8 18:33:58 2004
+++ Packages/Shared/DC/ZRDB/Connection.py Sat May 28 20:41:36 2005
@@ -28,6 +28,7 @@
from cgi import escape
import DocumentTemplate, RDB
from zExceptions import BadRequest
+from ZODB.utils import safe_hasattr
class Connection(
Globals.Persistent,
@@ -75,7 +76,7 @@
def title_and_id(self):
s=Connection.inheritedAttribute('title_and_id')(self)
- if hasattr(self, '_v_connected') and self._v_connected:
+ if safe_hasattr(self, '_v_connected') and self._v_connected:
s="%s, which is connected" % s
else:
s="%s, which is <font color=red> not connected</font>" % s
@@ -83,7 +84,7 @@
def title_or_id(self):
s=Connection.inheritedAttribute('title_or_id')(self)
- if hasattr(self, '_v_connected') and self._v_connected:
+ if safe_hasattr(self, '_v_connected') and self._v_connected:
s="%s (connected)" % s
else:
s="%s (<font color=red> not connected</font>)" % s
@@ -147,7 +148,7 @@
def manage_close_connection(self, REQUEST=None):
" "
try:
- if hasattr(self,'_v_database_connection'):
+ if safe_hasattr(self,'_v_database_connection'):
self._v_database_connection.close()
except:
LOG('Shared.DC.ZRDB.Connection',
=== Packages/Shared/DC/ZRDB/DA.py 1.110.12.7 => 1.110.12.7.22.1 ===
--- Packages/Shared/DC/ZRDB/DA.py:1.110.12.7 Sun May 16 11:17:30 2004
+++ Packages/Shared/DC/ZRDB/DA.py Sat May 28 20:41:36 2005
@@ -39,8 +39,11 @@
from webdav.Resource import Resource
from webdav.Lockable import ResourceLockedError
from zExceptions import BadRequest
-try: from IOBTree import Bucket
-except: Bucket=lambda:{}
+from ZODB.utils import safe_hasattr
+try:
+ from IOBTree import Bucket
+except:
+ Bucket=lambda:{}
class DatabaseError(BadRequest):
@@ -359,8 +362,10 @@
query = query + ('\nDBConnId: %s' % self.connection_hook, )
# Try to fetch from cache
- if hasattr(self,'_v_cache'): cache=self._v_cache
- else: cache=self._v_cache={}, Bucket()
+ if safe_hasattr(self,'_v_cache'):
+ cache=self._v_cache
+ else:
+ cache=self._v_cache={}, Bucket()
cache, tcache = cache
max_cache=self.max_cache_
now=time()
@@ -403,10 +408,13 @@
__traceback_supplement__ = (SQLMethodTracebackSupplement, self)
if REQUEST is None:
- if kw: REQUEST=kw
+ if kw:
+ REQUEST=kw
else:
- if hasattr(self, 'REQUEST'): REQUEST=self.REQUEST
- else: REQUEST={}
+ if safe_hasattr(self, 'REQUEST'):
+ REQUEST=self.REQUEST
+ else:
+ REQUEST={}
# connection hook
c = self.connection_id
@@ -425,7 +433,7 @@
except: raise DatabaseError, (
'%s is not connected to a database' % self.id)
- if hasattr(self, 'aq_parent'):
+ if safe_hasattr(self, 'aq_parent'):
p=self.aq_parent
if self._isBeingAccessedAsZClassDefinedInstanceMethod():
p=p.aq_parent
@@ -453,7 +461,8 @@
result=self._cached_result(DB__, (query, self.max_rows_))
else: result=DB__.query(query, self.max_rows_)
- if hasattr(self, '_v_brain'): brain=self._v_brain
+ if safe_hasattr(self, '_v_brain'):
+ brain=self._v_brain
else:
brain=self._v_brain=getBrain(self.class_file_, self.class_name_)
@@ -486,15 +495,15 @@
if len(results) > 1: raise KeyError, key
else: raise KeyError, key
r=results[0]
- # if hasattr(self, 'aq_parent'): r=r.__of__(self.aq_parent)
+ # if safe_hasattr(self, 'aq_parent'): r=r.__of__(self.aq_parent)
return r
self._arg[key] # raise KeyError if not an arg
return Traverse(self,{},key)
def connectionIsValid(self):
- return (hasattr(self, self.connection_id) and
- hasattr(getattr(self, self.connection_id), 'connected'))
+ return (safe_hasattr(self, self.connection_id) and
+ safe_hasattr(getattr(self, self.connection_id), 'connected'))
def connected(self):
return getattr(getattr(self, self.connection_id), 'connected')()
@@ -506,7 +515,7 @@
Z=getattr(Z, 'aq_self', Z)
for d in self.aq_acquire('_getProductRegistryData')('zclasses'):
z=d['meta_class']
- if hasattr(z._zclass_,'_p_deactivate'):
+ if safe_hasattr(z._zclass_,'_p_deactivate'):
# Eek, persistent
continue
x={}
@@ -561,12 +570,12 @@
except: raise KeyError, key
else: raise KeyError, key
r=results[0]
- # if hasattr(da, 'aq_parent'): r=r.__of__(da.aq_parent)
+ # if safe_hasattr(da, 'aq_parent'): r=r.__of__(da.aq_parent)
self._r=r
if key is self: return r
- if hasattr(r,'__bobo_traverse__'):
+ if safe_hasattr(r,'__bobo_traverse__'):
try: return r.__bobo_traverse__(REQUEST, key)
except: pass
@@ -578,7 +587,8 @@
def __getattr__(self, name):
r=self.__dict__['_r']
- if hasattr(r, name): return getattr(r,name)
+ if safe_hasattr(r, name):
+ return getattr(r,name)
return getattr(self.__dict__['_da'], name)
=== Packages/Shared/DC/ZRDB/RDB.py 1.33 => 1.33.132.1 ===
--- Packages/Shared/DC/ZRDB/RDB.py:1.33 Wed Aug 14 17:50:59 2002
+++ Packages/Shared/DC/ZRDB/RDB.py Sat May 28 20:41:36 2005
@@ -23,6 +23,7 @@
from Record import Record
from Acquisition import Implicit
import ExtensionClass
+from ZODB.utils import safe_hasattr
def parse_text(s):
if find(s,'\\') < 0 and (find(s,'\\t') < 0 and find(s,'\\n') < 0): return s
@@ -143,11 +144,13 @@
# Add SQL Aliases
d=r.__dict__
for k, v in aliases:
- if not hasattr(r,k): d[k]=v
+ if not safe_hasattr(r,k):
+ d[k]=v
- if hasattr(brains, '__init__'):
+ if safe_hasattr(brains, '__init__'):
binit=brains.__init__
- if hasattr(binit,'im_func'): binit=binit.im_func
+ if safe_hasattr(binit,'im_func'):
+ binit=binit.im_func
def __init__(self, data, parent, binit=binit):
Record.__init__(self,data)
binit(self.__of__(parent))
=== Packages/Shared/DC/ZRDB/Results.py 1.14 => 1.14.118.1 ===
--- Packages/Shared/DC/ZRDB/Results.py:1.14 Wed Aug 14 17:50:59 2002
+++ Packages/Shared/DC/ZRDB/Results.py Sat May 28 20:41:36 2005
@@ -15,6 +15,7 @@
from string import strip, lower, upper, join
from Acquisition import Implicit
from Record import Record
+from ZODB.utils import safe_hasattr
class SQLAlias(ExtensionClass.Base):
def __init__(self, name): self._n=name
@@ -75,11 +76,13 @@
# Add SQL Aliases
d=r.__dict__
for k, v in aliases:
- if not hasattr(r,k): d[k]=v
+ if not safe_hasattr(r,k):
+ d[k]=v
- if hasattr(brains, '__init__'):
+ if safe_hasattr(brains, '__init__'):
binit=brains.__init__
- if hasattr(binit,'im_func'): binit=binit.im_func
+ if safe_hasattr(binit,'im_func'):
+ binit=binit.im_func
def __init__(self, data, parent, binit=binit):
Record.__init__(self,data)
if parent is not None: self=self.__of__(parent)
=== Packages/Shared/DC/ZRDB/Search.py 1.20.68.3 => 1.20.68.3.12.1 ===
--- Packages/Shared/DC/ZRDB/Search.py:1.20.68.3 Sun Nov 14 16:35:03 2004
+++ Packages/Shared/DC/ZRDB/Search.py Sat May 28 20:41:36 2005
@@ -16,10 +16,12 @@
__version__='$Revision$'[11:-2]
from Globals import DTMLFile
-from Aqueduct import custom_default_report, custom_default_zpt_report, nicify, Args
+from Aqueduct import custom_default_report, custom_default_zpt_report
+from Aqueduct import nicify, Args
from string import join
from cgi import escape
from AccessControl import getSecurityManager
+from ZODB.utils import safe_hasattr
addForm=DTMLFile('dtml/searchAdd', globals())
def manage_addZSearch(self, report_id, report_title, report_style,
@@ -125,7 +127,7 @@
try:
id=i['id']
if (not old(id) and
- hasattr(getattr(o,id),'_searchable_arguments')
+ safe_hasattr(getattr(o,id),'_searchable_arguments')
):
t.append(i['id'])
ids[id]=1
@@ -146,7 +148,7 @@
__traceback_info__=o
q=getattr(o,id)
try:
- if hasattr(q,'_searchable_arguments'):
+ if safe_hasattr(q,'_searchable_arguments'):
try: q=q.__of__(self.aq_parent)
except: pass
return q
More information about the Zope-Checkins
mailing list