diff --git a/odoo/import_xml.rng b/odoo/import_xml.rng index 6c1095bdd28..034a3bc89f0 100644 --- a/odoo/import_xml.rng +++ b/odoo/import_xml.rng @@ -314,6 +314,7 @@ data + diff --git a/odoo/tools/convert.py b/odoo/tools/convert.py index 91c4a10e4f2..2df1c5a5ccf 100644 --- a/odoo/tools/convert.py +++ b/odoo/tools/convert.py @@ -229,7 +229,7 @@ class xml_import(object): **safe_eval(context, { 'ref': self.id_get, **(eval_context or {}) - }) + }), } ) return self.env @@ -446,6 +446,10 @@ form: module.record_id""" % (xml_id,) res[f_name] = f_val if extra_vals: res.update(extra_vals) + if 'sequence' not in res and 'sequence' in model._fields: + sequence = self.next_sequence() + if sequence: + res['sequence'] = sequence data = dict(xml_id=xid, values=res, noupdate=self.noupdate) record = model._load_records([data], self.mode == 'update') @@ -546,6 +550,7 @@ form: module.record_id""" % (xml_id,) self.envs.append(self.get_env(el)) self._noupdate.append(nodeattr2bool(el, 'noupdate', self.noupdate)) + self._sequences.append(0 if nodeattr2bool(el, 'auto_sequence', False) else None) try: f(rec) except ParseError: @@ -568,6 +573,7 @@ form: module.record_id""" % (xml_id,) finally: self._noupdate.pop() self.envs.pop() + self._sequences.pop() @property def env(self): @@ -577,12 +583,19 @@ form: module.record_id""" % (xml_id,) def noupdate(self): return self._noupdate[-1] + def next_sequence(self): + value = self._sequences[-1] + if value is not None: + value = self._sequences[-1] = value + 10 + return value + def __init__(self, env, module, idref, mode, noupdate=False, xml_filename=None): self.mode = mode self.module = module self.envs = [env(context=dict(env.context, lang=None))] self.idref = {} if idref is None else idref self._noupdate = [noupdate] + self._sequences = [] self.xml_filename = xml_filename self._tags = { 'record': self._tag_record,