[Erp5-report] r17543 - in /erp5/trunk/products/ERP5Form: ./ tests/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Nov 12 19:00:50 CET 2007


Author: jerome
Date: Mon Nov 12 19:00:50 2007
New Revision: 17543

URL: http://svn.erp5.org?rev=17543&view=rev
Log:
add a dict like interface for selection tool, so that we can use this kind of
TALES expressions:
context/portal_selections/test_selection/not_found | string:default

Modified:
    erp5/trunk/products/ERP5Form/SelectionTool.py
    erp5/trunk/products/ERP5Form/tests/testSelectionTool.py

Modified: erp5/trunk/products/ERP5Form/SelectionTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/SelectionTool.py?rev=17543&r1=17542&r2=17543&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/SelectionTool.py (original)
+++ erp5/trunk/products/ERP5Form/SelectionTool.py Mon Nov 12 19:00:50 2007
@@ -190,6 +190,9 @@
       selection = self._getSelectionFromContainer(selection_name)
       if selection is not None:
         return selection.__of__(self)
+
+    def __getitem__(self, key):
+        return self.getSelectionParamsFor(key)
 
     security.declareProtected(ERP5Permissions.View, 'setSelectionFor')
     def setSelectionFor(self, selection_name, selection_object, REQUEST=None):

Modified: erp5/trunk/products/ERP5Form/tests/testSelectionTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/tests/testSelectionTool.py?rev=17543&r1=17542&r2=17543&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/tests/testSelectionTool.py (original)
+++ erp5/trunk/products/ERP5Form/tests/testSelectionTool.py Mon Nov 12 19:00:50 2007
@@ -83,6 +83,18 @@
     if not run: return
     self.assertEquals({'key':'value'},
                       self.portal_selections.getSelectionParamsFor('test_selection'))
+
+  def testGetSelectionParamsDictInterface(self):
+    self.assertEquals('value',
+                      self.portal_selections['test_selection']['key'])
+    # the main use case is to have a dict interface in TALES expressions:
+    from Products.PageTemplates.Expressions import getEngine
+    evaluate_tales = getEngine().getContext(dict(context=self.portal)).evaluate
+    self.assertEquals('value',
+            evaluate_tales('context/portal_selections/test_selection/key'))
+    self.assertEquals('default', evaluate_tales(
+      'context/portal_selections/test_selection/not_found | string:default'))
+
 
   def testCallSelectionFor(self, quiet=quiet, run=run_all_test):
     if not run: return




More information about the Erp5-report mailing list