[Erp5-report] r19113 - in /erp5/trunk/products/ERP5Form: ProxyField.py tests/testFields.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Feb 6 19:23:13 CET 2008
Author: alex
Date: Wed Feb 6 19:23:13 2008
New Revision: 19113
URL: http://svn.erp5.org?rev=19113&view=rev
Log:
When a field property becomes delegated, field.values and field.tales entries
for this property should be removed (they are no longer required, no need to
export them in bt5 and make the diff less readable).
Modified:
erp5/trunk/products/ERP5Form/ProxyField.py
erp5/trunk/products/ERP5Form/tests/testFields.py
Modified: erp5/trunk/products/ERP5Form/ProxyField.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/ProxyField.py?rev=19113&r1=19112&r2=19113&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/ProxyField.py (original)
+++ erp5/trunk/products/ERP5Form/ProxyField.py Wed Feb 6 19:23:13 2008
@@ -260,6 +260,8 @@
for key, value in result.items():
if key not in surcharge_list:
result.pop(key)
+ if key in self.tales:
+ self.tales.pop(key)
# now do actual update of values
values.update(result)
@@ -337,6 +339,8 @@
for key, value in result.items():
if key not in surcharge_list:
result.pop(key)
+ if key in self.values:
+ self.values.pop(key)
# now do actual update of values
tales.update(result)
Modified: erp5/trunk/products/ERP5Form/tests/testFields.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/tests/testFields.py?rev=19113&r1=19112&r2=19113&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/tests/testFields.py (original)
+++ erp5/trunk/products/ERP5Form/tests/testFields.py Wed Feb 6 19:23:13 2008
@@ -325,6 +325,55 @@
# Next, call field which the id is same to the template field's.
self.assertEqual('123', proxy_field1.get_value('default'))
+
+ def test_dicts_cleared_on_edit(self):
+ """
+ Test that values and tales dicts are cleared when property is switched to
+ not surcharged.
+ """
+ # create a field
+ original_field = self.addField(self.container.Base_viewProxyFieldLibrary,
+ 'my_title', 'OrigTitle', 'StringField')
+ field = self.addField(self.container.Base_view,
+ 'my_dict_test', '', 'ProxyField')
+ field.manage_edit_xmlrpc(dict(form_id='Base_viewProxyFieldLibrary',
+ field_id='my_title',))
+ def surcharge_edit():
+ #surcharge from edit
+ field._surcharged_edit(dict(title='TestTitle'), ['title'])
+ self.assertTrue('title' in field.delegated_list)
+ self.assertEquals(field.values['title'], 'TestTitle')
+ self.assertTrue('title' not in field.tales)
+
+ def delegate_edit():
+ # delegate the field from edit view
+ field._surcharged_edit(dict(title='TestTitle'), [])
+ self.assertTrue('title' not in field.delegated_list)
+ self.assertTrue('title' not in field.values)
+ self.assertTrue('title' not in field.tales)
+
+ def surcharge_tales():
+ #surcharge from tales
+ field._surcharged_tales(dict(title='string:TestTitle'), ['title'])
+ self.assertTrue('title' in field.delegated_list)
+ self.assertTrue(field.values['title'], 'OrigTitle')
+ self.assertEquals(field.tales['title'], 'string:TestTitle')
+
+ def delegate_tales():
+ # delegate the field from tales view
+ field._surcharged_tales(dict(title='string:TestTitle'), [])
+ self.assertTrue('title' not in field.delegated_list)
+ self.assertTrue('title' not in field.values)
+ self.assertTrue('title' not in field.tales)
+
+ surcharge_edit()
+ delegate_edit()
+ surcharge_edit()
+ delegate_tales()
+ surcharge_tales()
+ delegate_edit()
+ surcharge_tales()
+ delegate_tales()
class TestFieldValueCache(unittest.TestCase):
More information about the Erp5-report
mailing list