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

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Apr 3 17:19:35 CEST 2007


Author: kazuhiko
Date: Tue Apr  3 17:19:28 2007
New Revision: 13904

URL: http://svn.erp5.org?rev=13904&view=rev
Log:
* use a non-volatile attribute name for selection container in using persistent mapping (closes #638).

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=13904&r1=13903&r2=13904&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/SelectionTool.py (original)
+++ erp5/trunk/products/ERP5Form/SelectionTool.py Tue Apr  3 17:19:28 2007
@@ -186,14 +186,16 @@
       """
         Return the selection container.
       """
-      value = getattr(self, '_v_selection_data', None)
-      if value is None:
-        if self.isMemcachedUsed():
+      if self.isMemcachedUsed():
+        value = getattr(self, '_v_selection_data', None)
+        if value is None:
           value = self.getPortalObject().portal_memcached.getMemcachedDict(key_prefix='selection_tool')
-        else:
+          setattr(self, '_v_selection_data', value)
+      else:
+        value = getattr(self, '_selection_data', None)
+        if value is None:
           value = PersistentMapping()
-          value.set = value.__setitem__
-        setattr(self, '_v_selection_data', value)
+          setattr(self, '_selection_data', value)
       return value
 
     security.declareProtected(ERP5Permissions.View, 'getSelectionFor')
@@ -220,7 +222,7 @@
 
       user_id = self.portal_membership.getAuthenticatedMember().getUserName()
       if user_id is not None:
-        self.getSelectionContainer().set('%s-%s' % (user_id, selection_name), aq_base(selection_object))
+        self.getSelectionContainer()['%s-%s' % (user_id, selection_name)] = aq_base(selection_object)
       return
 
     security.declareProtected(ERP5Permissions.View, 'getSelectionParamsFor')

Modified: erp5/trunk/products/ERP5Form/tests/testSelectionTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/tests/testSelectionTool.py?rev=13904&r1=13903&r2=13904&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/tests/testSelectionTool.py (original)
+++ erp5/trunk/products/ERP5Form/tests/testSelectionTool.py Tue Apr  3 17:19:28 2007
@@ -61,19 +61,25 @@
     self.portal_selections.setSelectionFor('test_selection', Selection())
     self.portal_selections.setSelectionParamsFor('test_selection', {'key':'value'})
 
-  def testGetSelectionNameList(self, quiet=quiet, run=run_all_test):
+  def testGetSelectionContainer(self, quiet=quiet, run=run_all_test):
     if not run: return
     # use persistent mapping by default
     self.assertEquals(['test_selection'],
                       self.portal_selections.getSelectionNameList())
     self.assertEquals(['test_selection'],
                       self.portal_selections.getSelectionNames())
+    self.assert_(self.portal_selections.getSelectionContainer() is not None)
+    self.assert_(getattr(self.portal_selections, '_selection_data', None)
+                 is not None)
     # use memcached tool
     self.portal_selections.setStorage('Memcached Tool')
     self.assertEquals([],
                       self.portal_selections.getSelectionNameList())
     self.assertEquals([],
                       self.portal_selections.getSelectionNames())
+    self.assert_(self.portal_selections.getSelectionContainer() is not None)
+    self.assert_(getattr(self.portal_selections, '_v_selection_data', None)
+                 is not None)
 
   def testGetSelectionFor(self, quiet=quiet, run=run_all_test):
     if not run: return




More information about the Erp5-report mailing list