From f520ee8f7b7b13e7a9ee8ed053adb64435b42238 Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Tue, 8 Oct 2019 14:35:00 +0000 Subject: [PATCH] [FIX] odoo: Import data with falsy many2one fields Steps to reproduce: - Export a partner with country set to False, using EXCELL - Try to import it with the xls file Bug: It raised: "No matching record found for name 'False' in field 'Country' at row 2" opw:2080376 closes odoo/odoo#38379 X-original-commit: 01caf1e44f653a8e9bf5edd583bc2421905d9464 Signed-off-by: Nicolas Martinelli (nim) --- odoo/addons/base/models/ir_fields.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/odoo/addons/base/models/ir_fields.py b/odoo/addons/base/models/ir_fields.py index a1c4c79b0d9..04c23ae1020 100644 --- a/odoo/addons/base/models/ir_fields.py +++ b/odoo/addons/base/models/ir_fields.py @@ -321,6 +321,8 @@ class IrFieldsConverter(models.AbstractModel): RelatedModel = self.env[field.comodel_name] if subfield == '.id': field_type = _(u"database id") + if isinstance(value, str) and not self._str_to_boolean(model, field, value)[0]: + return False, field_type, warnings try: tentative_id = int(value) except ValueError: tentative_id = value try: @@ -335,6 +337,8 @@ class IrFieldsConverter(models.AbstractModel): {'moreinfo': action}) elif subfield == 'id': field_type = _(u"external id") + if not self._str_to_boolean(model, field, value)[0]: + return False, field_type, warnings if '.' in value: xmlid = value else: @@ -343,6 +347,8 @@ class IrFieldsConverter(models.AbstractModel): id = self.env['ir.model.data'].xmlid_to_res_id(xmlid, raise_if_not_found=False) or None elif subfield is None: field_type = _(u"name") + if value == '': + return False, field_type, warnings flush() ids = RelatedModel.name_search(name=value, operator='=') if ids: