[Zope-Checkins] CVS: Packages/TreeDisplay -
TreeTag.py:1.53.68.5.22.1
Tres Seaver
tseaver at palladion.com
Sat May 28 20:42:17 EDT 2005
Update of /cvs-repository/Packages/TreeDisplay
In directory cvs.zope.org:/tmp/cvs-serv32028/lib/python/TreeDisplay
Modified Files:
Tag: tseaver-hasattr_geddon-branch
TreeTag.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/TreeDisplay/TreeTag.py 1.53.68.5 => 1.53.68.5.22.1 ===
--- Packages/TreeDisplay/TreeTag.py:1.53.68.5 Thu Apr 29 14:58:56 2004
+++ Packages/TreeDisplay/TreeTag.py Sat May 28 20:41:36 2005
@@ -17,6 +17,7 @@
from DocumentTemplate.DT_Util import *
from DocumentTemplate.DT_String import String
+from ZODB.utils import safe_hasattr
from cPickle import dumps
from string import translate
@@ -130,9 +131,9 @@
data=[]
idattr=args['id']
- if hasattr(self, idattr):
+ if safe_hasattr(self, idattr):
id = try_call_attr(self, idattr)
- elif hasattr(self, '_p_oid'): id=oid(self)
+ elif safe_hasattr(self, '_p_oid'): id=oid(self)
else: id=pyid(self)
try:
@@ -227,7 +228,7 @@
if level >= 0:
urlattr=args['url']
- if urlattr and hasattr(self, urlattr):
+ if urlattr and safe_hasattr(self, urlattr):
tpUrl = try_call_attr(self, urlattr)
url = (url and ('%s/%s' % (url, tpUrl))) or tpUrl
root_url = root_url or tpUrl
@@ -257,7 +258,7 @@
get = getattr
if items is None:
- if have_arg('branches') and hasattr(self, args['branches']):
+ if have_arg('branches') and safe_hasattr(self, args['branches']):
items = get(self, args['branches'])
items = items()
elif have_arg('branches_expr'):
@@ -448,9 +449,9 @@
__traceback_info__=sub, args, state, substate
ids={}
for item in items:
- if hasattr(item, idattr):
+ if safe_hasattr(item, idattr):
id = try_call_attr(item, idattr)
- elif hasattr(item, '_p_oid'): id=oid(item)
+ elif safe_hasattr(item, '_p_oid'): id=oid(item)
else: id=pyid(item)
if len(sub)==1: sub.append([])
substate=sub[1]
@@ -603,8 +604,10 @@
def tpStateLevel(state, level=0):
for sub in state:
- if len(sub)==2: level = max(level, 1+tpStateLevel(sub[1]))
- else: level=max(level,1)
+ if len(sub)==2:
+ level = max(level, 1+tpStateLevel(sub[1]))
+ else:
+ level=max(level,1)
return level
def tpValuesIds(self, get_items, args,
@@ -618,16 +621,20 @@
r=[]
idattr=args['id']
try:
- try: items=get_items(self)
- except AttributeError: items=()
+ try:
+ items=get_items(self)
+ except AttributeError:
+ items=()
for item in items:
try:
if get_items(item):
- if hasattr(item, idattr):
+ if safe_hasattr(item, idattr):
id = try_call_attr(item, idattr)
- elif hasattr(item, '_p_oid'): id=oid(item)
- else: id=pyid(item)
+ elif safe_hasattr(item, '_p_oid'):
+ id=oid(item)
+ else:
+ id=pyid(item)
e=tpValuesIds(item, get_items, args)
if e: id=[id,e]
More information about the Zope-Checkins
mailing list