diff --git a/product/ERP5Form/ProxyField.py b/product/ERP5Form/ProxyField.py index a128a95ab1df1755902237aff5c36262c5f938d0..94e092ed126fd3056ad346631d9f7d24a5d146dd 100644 --- a/product/ERP5Form/ProxyField.py +++ b/product/ERP5Form/ProxyField.py @@ -219,6 +219,21 @@ class ProxyField(ZMIField): return self.manage_main(self, REQUEST, manage_tabs_message=message) + def manage_edit_surcharged_xmlrpc(self, mapping): + """Edit surcharged properties + This method is similar to manage_edit_xmlrpc, and it marks the properties + as not delegated. + """ + self._surcharged_edit(mapping, mapping.keys()) + + def manage_tales_surcharged_xmlrpc(self, mapping): + """Edit surcharged TALES + This method is similar to manage_tales_xmlrpc, and it marks the TALES + properties as not delegated. + """ + self._surcharged_tales(mapping, mapping.keys()) + + def _surcharged_edit(self, result, surcharge_list): # first check for any changes values = self.values diff --git a/product/ERP5Form/tests/testFields.py b/product/ERP5Form/tests/testFields.py index c432f6621edb9ca19d95e50a62e481514b3a1697..850a02d28ccb0d62f3363d2cc5961f5f96331350 100644 --- a/product/ERP5Form/tests/testFields.py +++ b/product/ERP5Form/tests/testFields.py @@ -270,6 +270,25 @@ class TestProxyField(unittest.TestCase): # and validate self.container.Base_view.validate_all_to_request(dict()) + def test_manage_edit_surcharged_xmlrpc(self): + # manage_edit_surcharged_xmlrpc is a method to edit proxyfields + # programmatically + original_field = self.addField(self.container.Base_viewProxyFieldLibrary, + 'my_string', 'String', 'StringField') + proxy_field = self.addField(self.container.Base_view, + 'my_String', '', 'ProxyField') + proxy_field.manage_edit_xmlrpc(dict(form_id='Base_viewProxyFieldLibrary', + field_id='my_date',)) + + proxy_field.manage_edit_surcharged_xmlrpc(dict(title='Title')) + self.assertFalse(proxy_field.is_delegated('title')) + self.assertEquals('Title', proxy_field.get_value('title')) + + # beware that all values that are not passed in the mapping will be + # delegated again, regardless of the old state. + proxy_field.manage_edit_surcharged_xmlrpc(dict()) + self.assertTrue(proxy_field.is_delegated('title')) + class TestFieldValueCache(unittest.TestCase): """Tests field value caching system