[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: