# HG changeset patch # User Goffi # Date 1551376620 -3600 # Node ID 777a582d9641ff4d22c503ee80712e4b3a2e2323 # Parent c86e60ac70c3e048c286adbb65db09137dc9faae core (xml_tools): new elementCopy method to shallow copy a domish.Element diff -r c86e60ac70c3 -r 777a582d9641 sat/tools/xml_tools.py --- a/sat/tools/xml_tools.py Thu Feb 28 18:56:48 2019 +0100 +++ b/sat/tools/xml_tools.py Thu Feb 28 18:57:00 2019 +0100 @@ -1664,6 +1664,25 @@ # Misc other funtions +def elementCopy(element): + """Make a copy of a domish.Element + + The copy will have its own children list, so other elements + can be added as direct children without modifying orignal one. + Children are not deeply copied, so if an element is added to a child or grandchild, + it will also affect original element. + @param element(domish.Element): Element to clone + """ + new_elt = domish.Element( + (element.uri, element.name), + defaultUri = element.defaultUri, + attribs = element.attributes, + localPrefixes = element.localPrefixes) + new_elt.parent = element.parent + new_elt.children = element.children[:] + return new_elt + + def isXHTMLField(field): """Check if a data_form.Field is an XHTML one""" return (field.fieldType is None and field.ext_type == u"xml" and