From 1f490056a7b565c287f74b7877b2cb201f36ae46 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 13 Feb 2020 13:49:05 +0100 Subject: [PATCH 1/2] utils: initialize converter when creating XMLSchema (#39818) Also implement Converter.copy() as XMLSchema.__init__ copy the given converter. --- passerelle/utils/xml.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/passerelle/utils/xml.py b/passerelle/utils/xml.py index 9632e04e..c09124f7 100644 --- a/passerelle/utils/xml.py +++ b/passerelle/utils/xml.py @@ -94,6 +94,12 @@ class TransformConverter(xmlschema.UnorderedConverter): self.transformer = kwargs.pop('transformer', None) super(TransformConverter, self).__init__(*args, **kwargs) + def copy(self, **kwargs): + transformer = kwargs.pop('transformer', self.transformer) + new = super(TransformConverter, self).copy(**kwargs) + new.transformer = transformer + return new + def element_decode(self, data, xsd_element, level=0): if self.transformer: if xsd_element.type.name in getattr(self.transformer, 'type_map', {}): @@ -126,7 +132,7 @@ class JSONSchemaFromXMLSchema(object): def __init__(self, xml_schema, root_element): if not isinstance(xml_schema, xmlschema.XMLSchema): - xml_schema = xmlschema.XMLSchema(xml_schema) + xml_schema = xmlschema.XMLSchema(xml_schema, converter=TransformConverter(transformer=self)) self.xml_schema = xml_schema self.root_element = root_element self.json_schema = { -- 2.24.0