From 82bb99f88cd97cc98e0165b12f635d591e357fb3 Mon Sep 17 00:00:00 2001 From: Goffi Date: Thu, 28 Feb 2019 18:57:00 +0100 Subject: [PATCH] core (xml_tools): new elementCopy method to shallow copy a domish.Element --- sat/tools/xml_tools.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/sat/tools/xml_tools.py b/sat/tools/xml_tools.py index 2cdba4aa..0e65a4f7 100644 --- a/sat/tools/xml_tools.py +++ b/sat/tools/xml_tools.py @@ -1664,6 +1664,25 @@ def deferConfirm(*args, **kwargs): # 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