[Checkins] SVN: z3c.pt/trunk/ Catch name-error in exists-traverser (return false).

Malthe Borch mborch at gmail.com
Mon Mar 2 04:15:14 EST 2009


Log message for revision 97412:
  Catch name-error in exists-traverser (return false).

Changed:
  U   z3c.pt/trunk/CHANGES.txt
  U   z3c.pt/trunk/src/z3c/pt/expressions.py

-=-
Modified: z3c.pt/trunk/CHANGES.txt
===================================================================
--- z3c.pt/trunk/CHANGES.txt	2009-03-02 09:02:04 UTC (rev 97411)
+++ z3c.pt/trunk/CHANGES.txt	2009-03-02 09:15:13 UTC (rev 97412)
@@ -3,6 +3,8 @@
 
 In next release
 
+- Catch ``NameError`` in exists-traverser (return false). [malthe]
+
 - Catch ``NameError`` in exists-evaluator (return false). [malthe]
 
 - If the supplied ``context`` and ``request`` parameters are trivial,

Modified: z3c.pt/trunk/src/z3c/pt/expressions.py
===================================================================
--- z3c.pt/trunk/src/z3c/pt/expressions.py	2009-03-02 09:02:04 UTC (rev 97411)
+++ z3c.pt/trunk/src/z3c/pt/expressions.py	2009-03-02 09:15:13 UTC (rev 97412)
@@ -257,6 +257,17 @@
     
     path_traverse = ZopeExistsTraverser()
 
+    def translate(self, *args, **kwargs):
+        value = super(ExistsTranslator, self).translate(*args, **kwargs)
+        if value is None:
+            return
+        
+        assert isinstance(value, types.value)
+        parts = types.parts(
+            (value, types.value('False')))
+        parts.exceptions = NameError,
+        return parts
+    
 exists_translator = ExistsTranslator()
 path_translator = PathTranslator()
 provider_translator = ProviderTranslator()



More information about the Checkins mailing list