[Checkins] SVN: Zope/trunk/lib/python/Products/PageTemplates/ Allow access to ZopeIterator/PathIterator API from restricted Python

Philipp von Weitershausen philikon at philikon.de
Thu Jun 1 16:26:49 EDT 2006


Log message for revision 68451:
  Allow access to ZopeIterator/PathIterator API from restricted Python
  (e.g. python expressions)
  

Changed:
  U   Zope/trunk/lib/python/Products/PageTemplates/Expressions.py
  U   Zope/trunk/lib/python/Products/PageTemplates/tests/testExpressions.py

-=-
Modified: Zope/trunk/lib/python/Products/PageTemplates/Expressions.py
===================================================================
--- Zope/trunk/lib/python/Products/PageTemplates/Expressions.py	2006-06-01 19:56:09 UTC (rev 68450)
+++ Zope/trunk/lib/python/Products/PageTemplates/Expressions.py	2006-06-01 20:26:48 UTC (rev 68451)
@@ -152,6 +152,10 @@
 
 class ZopeIterator(Iterator):
 
+    # allow iterator API to be accessed from (restricted) Python TALES
+    # expressions
+    __allow_access_to_unprotected_subobjects__ = True
+
     # The things below used to be attributes in
     # ZTUtils.Iterator.Iterator, however in zope.tales.tales.Iterator
     # they're methods.  We need BBB on the Python level so we redefine

Modified: Zope/trunk/lib/python/Products/PageTemplates/tests/testExpressions.py
===================================================================
--- Zope/trunk/lib/python/Products/PageTemplates/tests/testExpressions.py	2006-06-01 19:56:09 UTC (rev 68450)
+++ Zope/trunk/lib/python/Products/PageTemplates/tests/testExpressions.py	2006-06-01 20:26:48 UTC (rev 68451)
@@ -69,6 +69,14 @@
         assert ec.evaluate('x | string:$one') == '1'
         assert ec.evaluate('x | not:exists:x')
 
+    def testIteratorZRPythonExpr(self):
+        '''Test access to iterator functions from Python expressions'''
+        ec = self.ec
+        ec.beginScope()
+        ec.setRepeat('loop', "python:[1,2,3]")
+        assert ec.evaluate("python:repeat['loop'].even()")
+        ec.endScope()
+
     def testWrappers(self):
         """Test if defer and lazy are returning their wrappers
         """



More information about the Checkins mailing list