Skip to content

Commit

Permalink
Merge pull request #124 from OCA/16.0
Browse files Browse the repository at this point in the history
Syncing from upstream OCA/connector-interfaces (16.0)
  • Loading branch information
bt-admin authored Oct 20, 2024
2 parents d4651f4 + b5628b9 commit c8e48ce
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 20 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Available addons
----------------
addon | version | maintainers | summary
--- | --- | --- | ---
[connector_importer](connector_importer/) | 16.0.1.1.2 | [![simahawk](https://github.com/simahawk.png?size=30px)](https://github.com/simahawk) | This module takes care of import sessions.
[connector_importer](connector_importer/) | 16.0.1.1.3 | [![simahawk](https://github.com/simahawk.png?size=30px)](https://github.com/simahawk) | This module takes care of import sessions.
[connector_importer_product](connector_importer_product/) | 16.0.1.0.0 | | Ease definition of product imports using `connector_importer`.

[//]: # (end addons)
Expand Down
2 changes: 1 addition & 1 deletion connector_importer/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Connector Importer
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:4b15d9b33afdd2a1f269995f9b6c81701e595a81da9441e8bc2c931eb17bafe7
!! source digest: sha256:51d43a9f901493d0f9e63e37e0479e57145ec7cab2ae469bf05d1a709882b1a8
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
Expand Down
2 changes: 1 addition & 1 deletion connector_importer/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
{
"name": "Connector Importer",
"summary": """This module takes care of import sessions.""",
"version": "16.0.1.1.2",
"version": "16.0.1.1.3",
"depends": ["connector", "queue_job"],
"author": "Camptocamp, Odoo Community Association (OCA)",
"license": "AGPL-3",
Expand Down
10 changes: 6 additions & 4 deletions connector_importer/models/record.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,18 +107,20 @@ def _run_import(self, use_job=True):
# that needs to be imported
new_self = self.with_context(queue_job__no_delay=not use_job)
for config in self.recordset_id.available_importers():
result = new_self.with_delay(
**self._run_import_job_params(config)
).import_record(config)
res[config.model] = result
if self.debug_mode() or not use_job:
result = new_self.import_record(config)
# debug mode, no job here: reset it!
self.write({"job_id": False})
else:
result = new_self.with_delay(
**self._run_import_job_params(config)
).import_record(config)
# FIXME: we should have a o2m here otherwise
# w/ multiple importers for the same record
# we keep the reference on w/ the last job.
self.write({"job_id": result.db_record().id})
res[config.model] = result

return res

def _run_import_job_params(self, config):
Expand Down
2 changes: 1 addition & 1 deletion connector_importer/static/description/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ <h1 class="title">Connector Importer</h1>
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:4b15d9b33afdd2a1f269995f9b6c81701e595a81da9441e8bc2c931eb17bafe7
!! source digest: sha256:51d43a9f901493d0f9e63e37e0479e57145ec7cab2ae469bf05d1a709882b1a8
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/connector-interfaces/tree/16.0/connector_importer"><img alt="OCA/connector-interfaces" src="https://img.shields.io/badge/github-OCA%2Fconnector--interfaces-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/connector-interfaces-16-0/connector-interfaces-16-0-connector_importer"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/connector-interfaces&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows to import / update records from files using the connector
Expand Down
40 changes: 30 additions & 10 deletions connector_importer/tests/test_record_importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,32 @@ def test_importer_create(self):
expected = {
model: {"created": 10, "errored": 0, "updated": 0, "skipped": 0},
}
delayable = res[model]
self.assertEqual(delayable.result, expected[model])
result = res[model]
self.assertEqual(result, expected[model])
for k, v in expected[model].items():
self.assertEqual(len(report[model][k]), v)
self.assertEqual(self.env[model].search_count([("ref", "like", "id_%")]), 10)

@mute_logger("[importer]")
def test_importer_create_debug_mode_off(self):
# set them on record
self.record.set_data(self.fake_lines)
self.record.backend_id.debug_mode = False
res = self.record._run_import(use_job=True)
self.recordset.get_report()
# in any case we'll get this per each model if the import is not broken
model = "res.partner"
expected = {
model: {"created": 10, "errored": 0, "updated": 0, "skipped": 0},
}
delayable = res[model]
result = delayable.perform()
self.assertEqual(result, expected[model])
result = {model: result}
for k, v in expected[model].items():
self.assertEqual(result[model][k], v)
self.assertEqual(self.env[model].search_count([("ref", "like", "id_%")]), 10)

@mute_logger(*LOGGERS_TO_MUTE)
def test_importer_skip(self):
# generate 10 records
Expand All @@ -65,8 +85,8 @@ def test_importer_skip(self):
report = self.recordset.get_report()
model = "res.partner"
expected = {model: {"created": 8, "errored": 0, "updated": 0, "skipped": 2}}
delayable = res[model]
self.assertEqual(delayable.result, expected[model])
result = res[model]
self.assertEqual(result, expected[model])
for k, v in expected[model].items():
self.assertEqual(len(report[model][k]), v)
skipped_msg1 = report[model]["skipped"][0]["message"]
Expand All @@ -86,8 +106,8 @@ def test_importer_update(self):
report = self.recordset.get_report()
model = "res.partner"
expected = {model: {"created": 10, "errored": 0, "updated": 0, "skipped": 0}}
delayable = res[model]
self.assertEqual(delayable.result, expected[model])
result = res[model]
self.assertEqual(result, expected[model])
for k, v in expected[model].items():
self.assertEqual(len(report[model][k]), v)
# now run it a second time
Expand All @@ -97,8 +117,8 @@ def test_importer_update(self):
res = self.record.run_import()
report = self.recordset.get_report()
expected = {model: {"created": 0, "errored": 0, "updated": 10, "skipped": 0}}
delayable = res[model]
self.assertEqual(delayable.result, expected[model])
result = res[model]
self.assertEqual(result, expected[model])
for k, v in expected[model].items():
self.assertEqual(len(report[model][k]), v)
# now run it a second time
Expand All @@ -108,8 +128,8 @@ def test_importer_update(self):
res = self.record.run_import()
report = self.recordset.get_report()
expected = {model: {"created": 0, "errored": 0, "updated": 0, "skipped": 10}}
delayable = res[model]
self.assertEqual(delayable.result, expected[model])
result = res[model]
self.assertEqual(result, expected[model])
for k, v in expected[model].items():
self.assertEqual(len(report[model][k]), v)
skipped_msg1 = report[model]["skipped"][0]["message"]
Expand Down
4 changes: 2 additions & 2 deletions connector_importer/tests/test_record_importer_xmlid.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ def test_importer_create(self):
report = self.recordset.get_report()
model = "res.partner"
expected = {model: {"created": 10, "errored": 0, "updated": 0, "skipped": 0}}
delayable = res[model]
self.assertEqual(delayable.result, expected[model])
result = res[model]
self.assertEqual(result, expected[model])
for k, v in expected[model].items():
self.assertEqual(len(report[model][k]), v)
self.assertEqual(self.env[model].search_count([("ref", "like", "id_%")]), 10)
Expand Down

0 comments on commit c8e48ce

Please sign in to comment.