From e84b4a29186c7a6113ba67d6bbe30a26302292d6 Mon Sep 17 00:00:00 2001 From: Augusto Weiss Date: Thu, 5 May 2022 09:47:21 -0300 Subject: [PATCH] [MIG] base_import_match: Migration to 15.0 --- base_import_match/__manifest__.py | 2 +- base_import_match/models/base.py | 8 +++++++ .../tests/import_data/res_partner_dbid.csv | 4 ++-- .../tests/import_data/res_partner_email.csv | 1 - .../import_data/res_partner_external_id.csv | 1 - .../res_partner_invalid_combination_vat.csv | 1 - .../tests/import_data/res_partner_name.csv | 1 - .../res_partner_parent_name_is_company.csv | 1 - .../tests/import_data/res_partner_vat.csv | 1 - .../tests/import_data/res_users_login.csv | 1 - base_import_match/tests/test_import.py | 24 ++++++++++++------- .../views/base_import_match_view.xml | 2 +- 12 files changed, 27 insertions(+), 20 deletions(-) diff --git a/base_import_match/__manifest__.py b/base_import_match/__manifest__.py index fb233d13..2aeaee3c 100644 --- a/base_import_match/__manifest__.py +++ b/base_import_match/__manifest__.py @@ -4,7 +4,7 @@ { "name": "Base Import Match", "summary": "Try to avoid duplicates before importing", - "version": "14.0.1.0.0", + "version": "15.0.1.0.0", "category": "Tools", "website": "https://github.com/OCA/server-backend", "author": "Tecnativa, " "Odoo Community Association (OCA)", diff --git a/base_import_match/models/base.py b/base_import_match/models/base.py index e6ab2086..23823cb6 100644 --- a/base_import_match/models/base.py +++ b/base_import_match/models/base.py @@ -18,6 +18,14 @@ class Base(models.AbstractModel): # We only need to patch this call if there are usable rules for it if self.env["base_import.match"]._usable_rules(self._name, fields): newdata = list() + # Change .id (dbid) by id (xmlid) + if ".id" in fields: + column = fields.index(".id") + fields[column] = "id" + # data[0][column] = "id" + for values in data: + dbid = int(values[column]) + values[column] = self.browse(dbid).get_external_id().get(dbid) # Data conversion to ORM format import_fields = list(map(models.fix_import_export_id_paths, fields)) converted_data = self._convert_records( diff --git a/base_import_match/tests/import_data/res_partner_dbid.csv b/base_import_match/tests/import_data/res_partner_dbid.csv index b150ad4e..be9c5a82 100644 --- a/base_import_match/tests/import_data/res_partner_dbid.csv +++ b/base_import_match/tests/import_data/res_partner_dbid.csv @@ -1,2 +1,2 @@ -.id,vat,name -10,BE099999999,Deco Addict External DBID Changed +10,BE0999999999,Deco Addict External DBID Changed +11,BE0888888888,Gemini Furniture External DBID Changed diff --git a/base_import_match/tests/import_data/res_partner_email.csv b/base_import_match/tests/import_data/res_partner_email.csv index c4564a51..e44dc570 100644 --- a/base_import_match/tests/import_data/res_partner_email.csv +++ b/base_import_match/tests/import_data/res_partner_email.csv @@ -1,2 +1 @@ -email,name floyd.steward34@example.com,Floyd Steward Changed diff --git a/base_import_match/tests/import_data/res_partner_external_id.csv b/base_import_match/tests/import_data/res_partner_external_id.csv index 4ef0a4b6..2ea6a905 100644 --- a/base_import_match/tests/import_data/res_partner_external_id.csv +++ b/base_import_match/tests/import_data/res_partner_external_id.csv @@ -1,2 +1 @@ -id,vat,name base.res_partner_2,BE077777777,Deco Addict External ID Changed diff --git a/base_import_match/tests/import_data/res_partner_invalid_combination_vat.csv b/base_import_match/tests/import_data/res_partner_invalid_combination_vat.csv index 90fabf2c..fe2d1122 100644 --- a/base_import_match/tests/import_data/res_partner_invalid_combination_vat.csv +++ b/base_import_match/tests/import_data/res_partner_invalid_combination_vat.csv @@ -1,2 +1 @@ -name,vat,is_company Deco Addict Changed,BE0477472701,False diff --git a/base_import_match/tests/import_data/res_partner_name.csv b/base_import_match/tests/import_data/res_partner_name.csv index 82327b9c..ff541206 100644 --- a/base_import_match/tests/import_data/res_partner_name.csv +++ b/base_import_match/tests/import_data/res_partner_name.csv @@ -1,2 +1 @@ -function,name Function Changed,Floyd Steward diff --git a/base_import_match/tests/import_data/res_partner_parent_name_is_company.csv b/base_import_match/tests/import_data/res_partner_parent_name_is_company.csv index 8487e0b9..e71a9b38 100644 --- a/base_import_match/tests/import_data/res_partner_parent_name_is_company.csv +++ b/base_import_match/tests/import_data/res_partner_parent_name_is_company.csv @@ -1,2 +1 @@ -name,is_company,parent_id/id,email Floyd Steward,False,base.res_partner_2,floyd.steward34.changed@example.com diff --git a/base_import_match/tests/import_data/res_partner_vat.csv b/base_import_match/tests/import_data/res_partner_vat.csv index a4b25ad2..58df477e 100644 --- a/base_import_match/tests/import_data/res_partner_vat.csv +++ b/base_import_match/tests/import_data/res_partner_vat.csv @@ -1,2 +1 @@ -name,vat,is_company Deco Addict Changed,BE0477472701,True diff --git a/base_import_match/tests/import_data/res_users_login.csv b/base_import_match/tests/import_data/res_users_login.csv index e91cccad..67143930 100644 --- a/base_import_match/tests/import_data/res_users_login.csv +++ b/base_import_match/tests/import_data/res_users_login.csv @@ -1,2 +1 @@ -login,name demo,Demo User Changed diff --git a/base_import_match/tests/test_import.py b/base_import_match/tests/test_import.py index b234e8b6..4285167f 100644 --- a/base_import_match/tests/test_import.py +++ b/base_import_match/tests/test_import.py @@ -31,24 +31,28 @@ class ImportCase(TransactionCase): """Change name based on External ID.""" deco_addict = self.env.ref("base.res_partner_2") record = self._base_import_record("res.partner", "res_partner_external_id") - record.do(["id", "vat", "name"], [], OPTIONS) + record.execute_import(["id", "vat", "name"], [], OPTIONS) deco_addict.env.cache.invalidate() self.assertEqual(deco_addict.name, "Deco Addict External ID Changed") def test_res_partner_dbid(self): """Change name based on DB ID.""" deco_addict = self.env.ref("base.res_partner_2") + gemini_furniture = self.env.ref("base.res_partner_3") record = self._base_import_record("res.partner", "res_partner_dbid") - record.do([".id", "vat", "name"], [], OPTIONS) + record.execute_import([".id", "vat", "name"], [], OPTIONS) deco_addict.env.cache.invalidate() self.assertEqual(deco_addict.name, "Deco Addict External DBID Changed") + self.assertEqual( + gemini_furniture.name, "Gemini Furniture External DBID Changed" + ) def test_res_partner_vat(self): """Change name based on VAT.""" deco_addict = self.env.ref("base.res_partner_2") deco_addict.vat = "BE0477472701" record = self._base_import_record("res.partner", "res_partner_vat") - record.do(["name", "vat", "is_company"], [], OPTIONS) + record.execute_import(["name", "vat", "is_company"], [], OPTIONS) deco_addict.env.cache.invalidate() self.assertEqual(deco_addict.name, "Deco Addict Changed") @@ -59,7 +63,7 @@ class ImportCase(TransactionCase): record = self._base_import_record( "res.partner", "res_partner_invalid_combination_vat" ) - record.do(["name", "vat", "is_company"], [], OPTIONS) + record.execute_import(["name", "vat", "is_company"], [], OPTIONS) deco_addict.env.cache.invalidate() self.assertEqual(deco_addict.name, deco_addict.name) @@ -68,7 +72,9 @@ class ImportCase(TransactionCase): record = self._base_import_record( "res.partner", "res_partner_parent_name_is_company" ) - record.do(["name", "is_company", "parent_id/id", "email"], [], OPTIONS) + record.execute_import( + ["name", "is_company", "parent_id/id", "email"], [], OPTIONS + ) self.assertEqual( self.env.ref("base.res_partner_address_4").email, "floyd.steward34.changed@example.com", @@ -77,7 +83,7 @@ class ImportCase(TransactionCase): def test_res_partner_email(self): """Change name based on email.""" record = self._base_import_record("res.partner", "res_partner_email") - record.do(["email", "name"], [], OPTIONS) + record.execute_import(["email", "name"], [], OPTIONS) self.assertEqual( self.env.ref("base.res_partner_address_4").name, "Floyd Steward Changed" ) @@ -85,7 +91,7 @@ class ImportCase(TransactionCase): def test_res_partner_name(self): """Change function based on name.""" record = self._base_import_record("res.partner", "res_partner_name") - record.do(["function", "name"], [], OPTIONS) + record.execute_import(["function", "name"], [], OPTIONS) self.assertEqual( self.env.ref("base.res_partner_address_4").function, "Function Changed" ) @@ -97,11 +103,11 @@ class ImportCase(TransactionCase): partner_2 = self.env.ref("base.res_partner_2") function = partner_1.function partner_2.name = partner_1.name - record.do(["function", "name"], [], OPTIONS) + record.execute_import(["function", "name"], [], OPTIONS) self.assertEqual(self.env.ref("base.res_partner_address_4").function, function) def test_res_users_login(self): """Change name based on login.""" record = self._base_import_record("res.users", "res_users_login") - record.do(["login", "name"], [], OPTIONS) + record.execute_import(["login", "name"], [], OPTIONS) self.assertEqual(self.env.ref("base.user_demo").name, "Demo User Changed") diff --git a/base_import_match/views/base_import_match_view.xml b/base_import_match/views/base_import_match_view.xml index e32abcf3..87ce73e0 100644 --- a/base_import_match/views/base_import_match_view.xml +++ b/base_import_match/views/base_import_match_view.xml @@ -44,7 +44,7 @@ Import match tree view base_import.match - +