[Zope-Checkins] CVS: Zope3/lib/python/Zope/PageTemplate - Expressions.py:1.1.2.10.6.1
Jim Fulton
jim@zope.com
Sat, 27 Apr 2002 12:59:25 -0400
Update of /cvs-repository/Zope3/lib/python/Zope/PageTemplate
In directory cvs.zope.org:/tmp/cvs-serv26931/lib/python/Zope/PageTemplate
Modified Files:
Tag: SecurityProxy-branch
Expressions.py
Log Message:
Moved security management modules to Zope.Security.
Added like_unto attribute to protect class so you can say that a class
has the same protections as another class::
<security:protectClass name=".RootFolder." like_unto=".Folder." />
Added some additional calls to removeAllProxies in some component
lookup code while debugging integration of new security model.
Added protections for BTree types.
=== Zope3/lib/python/Zope/PageTemplate/Expressions.py 1.1.2.10 => 1.1.2.10.6.1 ===
from PythonExpr import PythonExpr
+# XXX should we have this dependency?
+from Zope.Exceptions import NotFoundError, Unauthorized
Undefs = (Undefined, AttributeError, KeyError,
TypeError, IndexError, Unauthorized)
+_marker = object()
+
def simpleTraverse(object, path_items):
"""Traverses a sequence of names, first trying attributes then items.
"""
+
for name in path_items:
- if hasattr(object, name):
- object = getattr(object, name)
+ next = getattr(object, name, _marker)
+ if next is not _marker:
+ object = next
elif hasattr(object, '__getitem__'):
object = object[name]
else: