Skip to content

Commit

Permalink
Merge PR #117 into 14.0
Browse files Browse the repository at this point in the history
Signed-off-by simahawk
  • Loading branch information
OCA-git-bot committed May 12, 2023
2 parents 150d310 + bd61b33 commit fb96b75
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 13 deletions.
9 changes: 6 additions & 3 deletions connector_importer/tests/test_mapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,18 +105,21 @@ def test_dynamic_mapper_values(self):
expected = rec.copy()
self.assertEqual(mapper.dynamic_fields(rec), expected)
mapper = self._get_dynamyc_mapper()
cat = self.env.ref("base.res_partner_category_0")
categs = self.env.ref("base.res_partner_category_0") + self.env.ref(
"base.res_partner_category_2"
)
rec = {
"name": "John Doe",
"ref": "12345",
"xid::parent_id": "base.res_partner_10",
"category_id": cat.name,
"xid::category_id": "base.res_partner_category_0,base.res_partner_category_2",
"title_id": "Doctor",
}
expected = {
"name": "John Doe",
"ref": "12345",
"parent_id": self.env.ref("base.res_partner_10").id,
"category_id": [(6, 0, cat.ids)],
"category_id": [(6, 0, categs.ids)],
}
self.assertEqual(mapper.dynamic_fields(rec), expected)

Expand Down
24 changes: 14 additions & 10 deletions connector_importer/utils/mapper_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,21 +167,25 @@ def modifier(self, record, to_attr):
value = record.get(field)
if value is None:
return None
if isinstance(value, str) and "," in value:
value = [x.strip() for x in value.split(",") if x.strip()]
if isinstance(value, str):
column = self.model._fields[to_attr]
if column.type.endswith("2many"):
_values = [x.strip() for x in value.split(",") if x.strip()]
values = []
rec_ids = []
for xid in _values:
rec = _xid_to_record(self.env, xid)
if rec:
rec_ids.append(rec.id)
values.append((6, 0, rec_ids))
return values
elif column.type.endswith("many2one"):
# m2o
rec = _xid_to_record(self.env, value)
if rec:
return rec.id
return None
# x2m
values = []
for xid in value:
rec = _xid_to_record(self.env, xid)
if rec:
values.append((6, 0, rec.ids))
return values
else:
raise ValueError("Destination is not a related field.")

modifier._from_key = field
return modifier
Expand Down

0 comments on commit fb96b75

Please sign in to comment.