Skip to content

Commit

Permalink
Merge pull request #122 from OCA/14.0
Browse files Browse the repository at this point in the history
Syncing from upstream OCA/connector-interfaces (14.0)
  • Loading branch information
bt-admin authored Oct 10, 2024
2 parents b17280b + d78293c commit bcebf9b
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/) | 14.0.2.7.1 | [![simahawk](https://github.com/simahawk.png?size=30px)](https://github.com/simahawk) | This module takes care of import sessions.
[connector_importer](connector_importer/) | 14.0.2.7.2 | [![simahawk](https://github.com/simahawk.png?size=30px)](https://github.com/simahawk) | This module takes care of import sessions.
[connector_importer_demo](connector_importer_demo/) | 14.0.1.0.0 | [![simahawk](https://github.com/simahawk.png?size=30px)](https://github.com/simahawk) | Demo module for Connector Importer.
[connector_importer_product](connector_importer_product/) | 14.0.2.3.0 | [![simahawk](https://github.com/simahawk.png?size=30px)](https://github.com/simahawk) [![sebalix](https://github.com/sebalix.png?size=30px)](https://github.com/sebalix) [![mmequignon](https://github.com/mmequignon.png?size=30px)](https://github.com/mmequignon) | Ease definition of product imports using `connector_importer`.
[connector_importer_source_sftp](connector_importer_source_sftp/) | 14.0.1.1.0 | [![simahawk](https://github.com/simahawk.png?size=30px)](https://github.com/simahawk) [![sebalix](https://github.com/sebalix.png?size=30px)](https://github.com/sebalix) | Add import source capable of loading files from SFTP.
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:29313205d732a33e3d05e9a8b7b3f04a6e1284b0ce9f378841824f47e8ae2206
!! source digest: sha256:80d4e7ebf5d0d0ab56df1c91260f8660e78c2492671caa87203494382540c4e9
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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": "14.0.2.7.1",
"version": "14.0.2.7.2",
"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:29313205d732a33e3d05e9a8b7b3f04a6e1284b0ce9f378841824f47e8ae2206
!! source digest: sha256:80d4e7ebf5d0d0ab56df1c91260f8660e78c2492671caa87203494382540c4e9
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/14.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-14-0/connector-interfaces-14-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=14.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 @@ -42,12 +42,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("[importer]")
def test_importer_skip(self):
# generate 10 records
Expand All @@ -61,8 +81,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 @@ -82,8 +102,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 @@ -93,8 +113,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 @@ -104,8 +124,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 @@ -46,8 +46,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 bcebf9b

Please sign in to comment.