[Erp5-report] r35795 nicolas - /erp5/trunk/products/ERP5Type/XMLExportImport.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon May 31 17:00:23 CEST 2010
Author: nicolas
Date: Mon May 31 17:00:18 2010
New Revision: 35795
URL: http://svn.erp5.org?rev=35795&view=rev
Log:
- Use new marshaller able to produce Qualified nodes (with a namespace)
- Mashalled values are not stored into CDATA node anymore longer
- Choose arbitrary namespace for nodes produce by marshaller: http://www.erp5.org/namespaces/marshaller
Modified:
erp5/trunk/products/ERP5Type/XMLExportImport.py
Modified: erp5/trunk/products/ERP5Type/XMLExportImport.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/XMLExportImport.py?rev=35795&r1=35794&r2=35795&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/XMLExportImport.py [utf8] (original)
+++ erp5/trunk/products/ERP5Type/XMLExportImport.py [utf8] Mon May 31 17:00:18 2010
@@ -36,10 +36,14 @@
from xml.sax.saxutils import escape, unescape
from lxml import etree
from lxml.etree import Element, SubElement
-from xml.marshal.generic import dumps as marshaler
+from xml_marshaller.xml_marshaller import Marshaller
from OFS.Image import Pdata
from zLOG import LOG
from base64 import standard_b64encode
+
+MARSHALLER_NAMESPACE_URI = 'http://www.erp5.org/namespaces/marshaller'
+marshaller = Marshaller(namespace_uri=MARSHALLER_NAMESPACE_URI,
+ as_tree=True).dumps
class OrderedPickler(Pickler):
@@ -109,10 +113,9 @@
else:
raise ValueError("XMLExportImport failed, the data is undefined")
elif prop_type in ('lines', 'tokens',):
- # Use CDATA node to not be taken into account by erp5diff
value = [word.decode('utf-8').encode('ascii','xmlcharrefreplace')\
for word in value]
- sub_object.text = etree.CDATA(marshaler(value))
+ sub_object.append(marshaller(value))
elif prop_type in ('text', 'string',):
sub_object.text = unicode(escape(value), 'utf-8')
elif prop_type != 'None':
@@ -151,18 +154,18 @@
if isinstance(role, unicode):
role = role.encode('utf-8')
role_list.append(role)
- local_role_node.text = etree.CDATA(marshaler(tuple(role_list)))
+ local_role_node.append(marshaller(tuple(role_list)))
if getattr(self, 'get_local_permissions', None) is not None:
for user_permission in self.get_local_permissions():
local_permission_node = SubElement(object, 'local_permission',
attrib=dict(id=user_permission[0], type='tokens'))
- local_permission_node.text = etree.CDATA(marshaler(user_permission[1]))
+ local_permission_node.append(marshaller(user_permission[1]))
# Sometimes theres is roles specified for groups, like with CPS
if getattr(self, 'get_local_group_roles', None) is not None:
for group_role in self.get_local_group_roles():
local_group_node = SubElement(object, 'local_group',
attrib=dict(id=group_role[0], type='tokens'))
- local_group_node.text = etree.CDATA(marshaler(group_role[1]))
+ local_group_node.append(marshaller(group_role[1]))
if return_as_object:
return root
return etree.tostring(root, encoding='utf-8',
More information about the Erp5-report
mailing list