[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