[Erp5-report] r33654 nicolas - in /erp5/trunk/products/Formulator: FormToXML.py XMLToForm.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Mar 11 15:55:21 CET 2010


Author: nicolas
Date: Thu Mar 11 15:55:19 2010
New Revision: 33654

URL: http://svn.erp5.org?rev=33654&view=rev
Log:
* Support XML un/serialisation of forms which are contain ProxyFields,
by exporting delegated_list property.
* fix indentation issue which duplicates 'tales' node in formToXML
brought by r27696

Modified:
    erp5/trunk/products/Formulator/FormToXML.py
    erp5/trunk/products/Formulator/XMLToForm.py

Modified: erp5/trunk/products/Formulator/FormToXML.py
URL: http://svn.erp5.org/erp5/trunk/products/Formulator/FormToXML.py?rev=33654&r1=33653&r2=33654&view=diff
==============================================================================
--- erp5/trunk/products/Formulator/FormToXML.py [utf8] (original)
+++ erp5/trunk/products/Formulator/FormToXML.py [utf8] Thu Mar 11 15:55:19 2010
@@ -58,17 +58,24 @@
             value_element = SubElement(values_element, key)
           value_element.text = escape(str(value)).decode(encoding)
 
-          tales_element = SubElement(field_element, 'tales')
-          items = field.tales.items()
-          items.sort()
-          for key, value in items:
-            if value:
-              tale_element = SubElement(tales_element, key)
-              tale_element.text = escape(str(value._text)).decode(encoding)
-          messages = SubElement(field_element, 'messages')
-          for message_key in field.get_error_names():
-            message_element = SubElement(messages, 'message', name=message_key)
-            message_element.text = escape(field.get_error_message(message_key)).decode(encoding)
+        tales_element = SubElement(field_element, 'tales')
+        items = field.tales.items()
+        items.sort()
+        for key, value in items:
+          if value:
+            tale_element = SubElement(tales_element, key)
+            tale_element.text = escape(str(value._text)).decode(encoding)
+        messages = SubElement(field_element, 'messages')
+        for message_key in field.get_error_names():
+          message_element = SubElement(messages, 'message', name=message_key)
+          message_element.text = escape(field.get_error_message(message_key)).decode(encoding)
+        # Special attribute for ProxyFields *delegated_list*
+        delegated_list = getattr(field, 'delegated_list', [])
+        if delegated_list:
+          delegated_list_element = SubElement(field_element, 'delegated_list')
+          delegated_list.sort()
+          [SubElement(delegated_list_element, delegated) for delegated in delegated_list]
+
     form_as_string = etree.tostring(form_as_xml, encoding='utf-8',
                                     xml_declaration=True, pretty_print=True)
     if form.unicode_mode:

Modified: erp5/trunk/products/Formulator/XMLToForm.py
URL: http://svn.erp5.org/erp5/trunk/products/Formulator/XMLToForm.py?rev=33654&r1=33653&r2=33654&view=diff
==============================================================================
--- erp5/trunk/products/Formulator/XMLToForm.py [utf8] (original)
+++ erp5/trunk/products/Formulator/XMLToForm.py [utf8] Thu Mar 11 15:55:19 2010
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 import XMLObjects
 from Products.Formulator.TALESField import TALESMethod
 from Products.Formulator.MethodField import Method
@@ -110,11 +111,20 @@
                     text = encode(entry.text, encoding)
                     field.message_values[name] = text
 
+            # set delegated_list, mean ProxyField
+            is_proxy_field = False
+            if hasattr(entry.first, 'delegated_list'):
+                delegated_list_element = entry.first.delegated_list
+                delegated_list = delegated_list_element.getElementNames()
+                field.delegated_list = delegated_list
+                is_proxy_field = True
             # for persistence machinery
             field.values = field.values
             field.tales = field.tales
             field.message_values = field.message_values
-        
+            if is_proxy_field:
+              field.delegated_list = field.delegated_list
+
     # delete default group
     if not has_default:
         form.move_group_down('Default')




More information about the Erp5-report mailing list