se refleja el orden de los atributos del modelo en el xml
FossilOrigin-Name: 5ff5ebc397a11977916b7008ab4d5104a375290a5c5d0356098b69242378f1f8
This commit is contained in:
@@ -22,6 +22,7 @@ class ModelBase(object, metaclass=ModelMeta):
|
||||
obj._text = ""
|
||||
obj._namespace_prefix = None
|
||||
obj._on_change_fields = defaultdict(list)
|
||||
obj._order_fields = []
|
||||
|
||||
def on_change_fields_for_function():
|
||||
# se recorre arbol buscando el primero
|
||||
@@ -38,7 +39,9 @@ class ModelBase(object, metaclass=ModelMeta):
|
||||
# forzamos registros de campos al modelo
|
||||
# al instanciar
|
||||
for (key, v) in type(obj).__dict__.items():
|
||||
|
||||
if isinstance(v, fields.Field):
|
||||
obj._order_fields.append(key)
|
||||
|
||||
if isinstance(v, fields.Attribute) or isinstance(v, fields.Many2One) or isinstance(v, fields.Function):
|
||||
if hasattr(v, 'default') and v.default is not None:
|
||||
setattr(obj, key, v.default)
|
||||
@@ -98,7 +101,17 @@ class ModelBase(object, metaclass=ModelMeta):
|
||||
|
||||
content = ""
|
||||
|
||||
for value in self._fields.values():
|
||||
ordered_fields = {}
|
||||
for name in self._order_fields:
|
||||
if name in self._fields:
|
||||
ordered_fields[name] = True
|
||||
else:
|
||||
for key in self._fields.keys():
|
||||
if key.startswith(name):
|
||||
ordered_fields[key] = True
|
||||
|
||||
for name in ordered_fields.keys():
|
||||
value = self._fields[name]
|
||||
if hasattr(value, 'to_xml'):
|
||||
content += value.to_xml()
|
||||
elif isinstance(value, str):
|
||||
|
||||
Reference in New Issue
Block a user