Browse Source

[IMP] disable recomputation during import

pull/988/head
Holger Brunn 7 years ago
parent
commit
0649f636d5
No known key found for this signature in database GPG Key ID: 1C9760FECA3AE18
  1. 1
      base_import_odoo/README.rst
  2. 10
      base_import_odoo/models/import_odoo_database.py

1
base_import_odoo/README.rst

@ -56,7 +56,6 @@ Known issues / Roadmap
* Yes of course this duplicates a lot of connector functionality. Rewrite this with the connector framework, probably collaborate with https://github.com/OCA/connector-odoo2odoo
* Do something with workflows
* Support reference fields, while being at it refactor _run_import_map_values to call a function per field type
* Probably it's safer and faster to disable recomputation during import, and recompute all fields afterwards
Bug Tracker
===========

10
base_import_odoo/models/import_odoo_database.py

@ -160,6 +160,7 @@ class ImportOdooDatabase(models.Model):
"""Import records of a configured model"""
model = self.env[context.model_line.model_id.model]
fields = self._run_import_model_get_fields(context)
recompute_ids = []
for data in context.remote.execute(
model._name, 'read', context.ids, fields.keys()
):
@ -170,9 +171,16 @@ class ImportOdooDatabase(models.Model):
data = self._run_import_map_values(context, data)
_id = data['id']
record = self._create_record(context, model, data)
recompute_ids.append(record.id)
self._run_import_model_cleanup_dummies(
context, model, _id, record.id,
)
to_recompute = model.browse(recompute_ids)
for field in model._fields.values():
if not field.compute:
continue
to_recompute._recompute_todo(field)
to_recompute.recompute()
@api.multi
def _create_record(self, context, model, record):
@ -183,10 +191,12 @@ class ImportOdooDatabase(models.Model):
)
if self.env.ref('base_import_odoo.%s' % xmlid, False):
new = self.env.ref('base_import_odoo.%s' % xmlid)
with self.env.norecompute():
new.with_context(
**self._create_record_context(model, record)
).write(record)
else:
with self.env.norecompute():
new = model.with_context(
**self._create_record_context(model, record)
).create(record)

Loading…
Cancel
Save