[MIG] base_import_match: Migration to 15.0

This commit is contained in:
Augusto Weiss
2022-05-05 09:47:21 -03:00
committed by anjeel.haria
parent 883110ad91
commit 8efe66fe1a
12 changed files with 27 additions and 20 deletions

View File

@@ -4,7 +4,7 @@
{ {
"name": "Base Import Match", "name": "Base Import Match",
"summary": "Try to avoid duplicates before importing", "summary": "Try to avoid duplicates before importing",
"version": "14.0.1.0.0", "version": "15.0.1.0.0",
"category": "Tools", "category": "Tools",
"website": "https://github.com/OCA/server-backend", "website": "https://github.com/OCA/server-backend",
"author": "Tecnativa, " "Odoo Community Association (OCA)", "author": "Tecnativa, " "Odoo Community Association (OCA)",

View File

@@ -18,6 +18,14 @@ class Base(models.AbstractModel):
# We only need to patch this call if there are usable rules for it # 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): if self.env["base_import.match"]._usable_rules(self._name, fields):
newdata = list() 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 # Data conversion to ORM format
import_fields = list(map(models.fix_import_export_id_paths, fields)) import_fields = list(map(models.fix_import_export_id_paths, fields))
converted_data = self._convert_records( converted_data = self._convert_records(

View File

@@ -1,2 +1,2 @@
.id,vat,name 10,BE0999999999,Deco Addict External DBID Changed
10,BE099999999,Deco Addict External DBID Changed 11,BE0888888888,Gemini Furniture External DBID Changed
1 .id 10 vat BE0999999999 name Deco Addict External DBID Changed
2 10 11 BE099999999 BE0888888888 Deco Addict External DBID Changed Gemini Furniture External DBID Changed

View File

@@ -1,2 +1 @@
email,name
floyd.steward34@example.com,Floyd Steward Changed floyd.steward34@example.com,Floyd Steward Changed
1 email floyd.steward34@example.com name Floyd Steward Changed
email name
1 floyd.steward34@example.com floyd.steward34@example.com Floyd Steward Changed Floyd Steward Changed

View File

@@ -1,2 +1 @@
id,vat,name
base.res_partner_2,BE077777777,Deco Addict External ID Changed base.res_partner_2,BE077777777,Deco Addict External ID Changed
1 id base.res_partner_2 vat BE077777777 name Deco Addict External ID Changed
id vat name
1 base.res_partner_2 base.res_partner_2 BE077777777 BE077777777 Deco Addict External ID Changed Deco Addict External ID Changed

View File

@@ -1,2 +1 @@
name,vat,is_company
Deco Addict Changed,BE0477472701,False Deco Addict Changed,BE0477472701,False
1 name Deco Addict Changed vat BE0477472701 is_company False
name vat is_company
1 Deco Addict Changed Deco Addict Changed BE0477472701 BE0477472701 False False

View File

@@ -1,2 +1 @@
function,name
Function Changed,Floyd Steward Function Changed,Floyd Steward
1 function Function Changed name Floyd Steward
function name
1 Function Changed Function Changed Floyd Steward Floyd Steward

View File

@@ -1,2 +1 @@
name,is_company,parent_id/id,email
Floyd Steward,False,base.res_partner_2,floyd.steward34.changed@example.com Floyd Steward,False,base.res_partner_2,floyd.steward34.changed@example.com
1 name Floyd Steward is_company False parent_id/id base.res_partner_2 email floyd.steward34.changed@example.com
name is_company parent_id/id email
1 Floyd Steward Floyd Steward False False base.res_partner_2 base.res_partner_2 floyd.steward34.changed@example.com floyd.steward34.changed@example.com

View File

@@ -1,2 +1 @@
name,vat,is_company
Deco Addict Changed,BE0477472701,True Deco Addict Changed,BE0477472701,True
1 name Deco Addict Changed vat BE0477472701 is_company True
name vat is_company
1 Deco Addict Changed Deco Addict Changed BE0477472701 BE0477472701 True True

View File

@@ -1,2 +1 @@
login,name
demo,Demo User Changed demo,Demo User Changed
1 login demo name Demo User Changed
login name
1 demo demo Demo User Changed Demo User Changed

View File

@@ -31,24 +31,28 @@ class ImportCase(TransactionCase):
"""Change name based on External ID.""" """Change name based on External ID."""
deco_addict = self.env.ref("base.res_partner_2") deco_addict = self.env.ref("base.res_partner_2")
record = self._base_import_record("res.partner", "res_partner_external_id") 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() deco_addict.env.cache.invalidate()
self.assertEqual(deco_addict.name, "Deco Addict External ID Changed") self.assertEqual(deco_addict.name, "Deco Addict External ID Changed")
def test_res_partner_dbid(self): def test_res_partner_dbid(self):
"""Change name based on DB ID.""" """Change name based on DB ID."""
deco_addict = self.env.ref("base.res_partner_2") 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 = 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() deco_addict.env.cache.invalidate()
self.assertEqual(deco_addict.name, "Deco Addict External DBID Changed") 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): def test_res_partner_vat(self):
"""Change name based on VAT.""" """Change name based on VAT."""
deco_addict = self.env.ref("base.res_partner_2") deco_addict = self.env.ref("base.res_partner_2")
deco_addict.vat = "BE0477472701" deco_addict.vat = "BE0477472701"
record = self._base_import_record("res.partner", "res_partner_vat") 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() deco_addict.env.cache.invalidate()
self.assertEqual(deco_addict.name, "Deco Addict Changed") self.assertEqual(deco_addict.name, "Deco Addict Changed")
@@ -59,7 +63,7 @@ class ImportCase(TransactionCase):
record = self._base_import_record( record = self._base_import_record(
"res.partner", "res_partner_invalid_combination_vat" "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() deco_addict.env.cache.invalidate()
self.assertEqual(deco_addict.name, deco_addict.name) self.assertEqual(deco_addict.name, deco_addict.name)
@@ -68,7 +72,9 @@ class ImportCase(TransactionCase):
record = self._base_import_record( record = self._base_import_record(
"res.partner", "res_partner_parent_name_is_company" "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.assertEqual(
self.env.ref("base.res_partner_address_4").email, self.env.ref("base.res_partner_address_4").email,
"floyd.steward34.changed@example.com", "floyd.steward34.changed@example.com",
@@ -77,7 +83,7 @@ class ImportCase(TransactionCase):
def test_res_partner_email(self): def test_res_partner_email(self):
"""Change name based on email.""" """Change name based on email."""
record = self._base_import_record("res.partner", "res_partner_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.assertEqual(
self.env.ref("base.res_partner_address_4").name, "Floyd Steward Changed" 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): def test_res_partner_name(self):
"""Change function based on name.""" """Change function based on name."""
record = self._base_import_record("res.partner", "res_partner_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.assertEqual(
self.env.ref("base.res_partner_address_4").function, "Function Changed" 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") partner_2 = self.env.ref("base.res_partner_2")
function = partner_1.function function = partner_1.function
partner_2.name = partner_1.name 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) self.assertEqual(self.env.ref("base.res_partner_address_4").function, function)
def test_res_users_login(self): def test_res_users_login(self):
"""Change name based on login.""" """Change name based on login."""
record = self._base_import_record("res.users", "res_users_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") self.assertEqual(self.env.ref("base.user_demo").name, "Demo User Changed")

View File

@@ -44,7 +44,7 @@
<field name="name">Import match tree view</field> <field name="name">Import match tree view</field>
<field name="model">base_import.match</field> <field name="model">base_import.match</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<tree string="Import Match"> <tree>
<field name="name" /> <field name="name" />
<field name="sequence" invisible="True" /> <field name="sequence" invisible="True" />
</tree> </tree>