[Zope-Checkins] CVS: Releases/Zope/lib/python/Products/PageTemplates - Expressions.py:1.26 TALES.py:1.25

Evan Simpson evan@zope.com
Mon, 10 Dec 2001 10:44:12 -0500


Update of /cvs-repository/Releases/Zope/lib/python/Products/PageTemplates
In directory cvs.zope.org:/tmp/cvs-serv2252

Modified Files:
	Expressions.py TALES.py 
Log Message:
Merge fix from 2.5 branch


=== Releases/Zope/lib/python/Products/PageTemplates/Expressions.py 1.25 => 1.26 ===
         vars = econtext.vars
         exists = 0
+        more_paths = len(self._paths)
         for base, path, dp in self._paths:
+            more_paths = more_paths - 1
             # Expand dynamic path parts from right to left.
             if dp:
                 path = list(path) # Copy!
@@ -135,11 +137,13 @@
                     ob = restrictedTraverse(ob, path, securityManager)
                 exists = 1
                 break
-            except Undefined, e:
-                ob = e
+            except Undefined:
+                if not more_paths:
+                    raise
             except (AttributeError, KeyError, TypeError, IndexError,
                     Unauthorized), e:
-                ob = Undefined(self._s, sys.exc_info())
+                if not more_paths:
+                    raise Undefined(self._s, sys.exc_info())
 
         if self._name == 'exists':
             # All we wanted to know is whether one of the paths exist.


=== Releases/Zope/lib/python/Products/PageTemplates/TALES.py 1.24 => 1.25 ===
         try:
             if ZTUtils.Iterator.next(self):
-                self._context.setLocal(self.name, self.seq[self.index])
+                self._context.setLocal(self.name, self.item)
                 return 1
         except TALESError:
             raise