From e14201731a29d352f8bdf73f34ca80943eee66d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 19 Sep 2018 00:15:05 +0200 Subject: [PATCH] Merge fs_values when extending record from other module When a module extend a record from another module, it should not erase the fs_values of the original module but instead extend it. So the data is not considered out of sync. issue7693 review70371002 --- trytond/convert.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/trytond/convert.py b/trytond/convert.py index 438dfddadf..993c782082 100644 --- a/trytond/convert.py +++ b/trytond/convert.py @@ -671,13 +671,10 @@ class TrytondXmlHandler(sax.handler.ContentHandler): if self.grouped: self.grouped_write[(module, model)].extend( - (record, to_update, old_values, fs_id, mdata_id)) + (record, to_update, old_values, values, fs_id, mdata_id)) else: - self.write_records(module, model, record, to_update, - old_values, fs_id, mdata_id) - self.grouped_model_data.extend(([self.ModelData(mdata_id)], { - 'fs_values': self.ModelData.dump_values(values), - })) + self.write_records(module, model, + record, to_update, old_values, values, fs_id, mdata_id) else: if self.grouped: self.grouped_creations[model][fs_id] = values @@ -719,13 +716,13 @@ class TrytondXmlHandler(sax.handler.ContentHandler): [r.id for r in records]) def write_records(self, module, model, - record, values, old_values, fs_id, mdata_id, *args): - args = (record, values, old_values, fs_id, mdata_id) + args + record, values, old_values, new_values, fs_id, mdata_id, *args): + args = (record, values, old_values, new_values, fs_id, mdata_id) + args Model = self.pool.get(model) actions = iter(args) to_update = [] - for record, values, _, _, _ in zip(*((actions,) * 5)): + for record, values, _, _, _, _ in zip(*((actions,) * 6)): if values: to_update += [[record], values] # if there is values to update: @@ -750,11 +747,13 @@ class TrytondXmlHandler(sax.handler.ContentHandler): values[key] = self._clean_value(key, record) actions = iter(args) - for record, values, old_values, fs_id, mdata_id in zip( - *((actions,) * 5)): + for record, values, old_values, new_values, fs_id, mdata_id in zip( + *((actions,) * 6)): temp_values = old_values.copy() temp_values.update(values) values = temp_values + fs_values = old_values.copy() + fs_values.update(new_values) if values != old_values: self.grouped_model_data.extend(([self.ModelData(mdata_id)], { @@ -763,10 +762,11 @@ class TrytondXmlHandler(sax.handler.ContentHandler): 'module': module, 'db_id': record.id, 'values': self.ModelData.dump_values(values), + 'fs_values': self.ModelData.dump_values(fs_values), })) # reset_browsercord to keep cache memory low - self.fs2db.reset_browsercord(module, Model.__name__, args[::5]) + self.fs2db.reset_browsercord(module, Model.__name__, args[::6]) def post_import(pool, module, to_delete):