108 |
108 |
super(TransformConverter, self).__init__(*args, **kwargs)
|
109 |
109 |
|
110 |
110 |
def copy(self, **kwargs):
|
111 |
111 |
transformer = kwargs.pop('transformer', self.transformer)
|
112 |
112 |
new = super(TransformConverter, self).copy(**kwargs)
|
113 |
113 |
new.transformer = transformer
|
114 |
114 |
return new
|
115 |
115 |
|
116 |
|
def element_decode(self, data, xsd_element, level=0):
|
|
116 |
def element_decode(self, data, xsd_element, *args):
|
117 |
117 |
if self.transformer:
|
118 |
118 |
if xsd_element.type.name in getattr(self.transformer, 'type_map', {}):
|
119 |
119 |
mapped = self.transformer.type_map[xsd_element.type.name]
|
120 |
120 |
if hasattr(self.transformer, 'decode_%s' % mapped):
|
121 |
121 |
data = getattr(self.transformer, 'decode_%s' % mapped)(data)
|
122 |
|
return super(TransformConverter, self).element_decode(data, xsd_element, level=level)
|
|
122 |
return super(TransformConverter, self).element_decode(data, xsd_element, *args)
|
123 |
123 |
|
124 |
|
def element_encode(self, obj, xsd_element, level=0):
|
|
124 |
def element_encode(self, obj, xsd_element, *args):
|
125 |
125 |
if self.transformer:
|
126 |
126 |
if xsd_element.type.name in getattr(self.transformer, 'type_map', {}):
|
127 |
127 |
mapped = self.transformer.type_map[xsd_element.type.name]
|
128 |
128 |
if hasattr(self.transformer, 'encode_%s' % mapped):
|
129 |
129 |
obj = getattr(self.transformer, 'encode_%s' % mapped)(obj)
|
130 |
|
return super(TransformConverter, self).element_encode(obj, xsd_element, level=level)
|
|
130 |
return super(TransformConverter, self).element_encode(obj, xsd_element, *args)
|
131 |
131 |
|
132 |
132 |
|
133 |
133 |
class JSONSchemaFromXMLSchema(object):
|
134 |
134 |
SIMPLE_TYPE_MAPPING = {
|
135 |
135 |
xmlschema_names.XSD_STRING: 'string',
|
136 |
136 |
xmlschema_names.XSD_INTEGER: 'integer',
|
137 |
137 |
xmlschema_names.XSD_INT: 'integer',
|
138 |
138 |
xmlschema_names.XSD_POSITIVE_INTEGER: 'integer',
|
139 |
|
-
|