diff --git a/odoo/addons/base/ir/ir_values.py b/odoo/addons/base/ir/ir_values.py index 8df8cde1d8a..a551884e4d0 100644 --- a/odoo/addons/base/ir/ir_values.py +++ b/odoo/addons/base/ir/ir_values.py @@ -7,6 +7,10 @@ from odoo import api, fields, models, tools, _ from odoo.exceptions import AccessError, MissingError, ValidationError from odoo.tools import pickle +import logging +_logger = logging.getLogger(__name__) + + EXCLUDED_FIELDS = set(('code', 'report_sxw_content', 'report_rml_content', 'report_sxw', 'report_rml', 'report_sxw_content_data', 'report_rml_content_data', 'search_view', )) @@ -224,7 +228,7 @@ class IrValues(models.Model): field = self.env[model]._fields[field_name] field.convert_to_cache(value, self.browse()) except KeyError: - raise ValidationError(_("Invalid field %s.%s") % (model, field_name)) + _logger.warning("Invalid field %s.%s", model, field_name) except Exception: raise ValidationError(_("Invalid value for %s.%s: %s") % (model, field_name, value)) diff --git a/odoo/addons/base/tests/test_ir_values.py b/odoo/addons/base/tests/test_ir_values.py index b8aa0cdb331..e7d04359e92 100644 --- a/odoo/addons/base/tests/test_ir_values.py +++ b/odoo/addons/base/tests/test_ir_values.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. +from odoo import tools from odoo.exceptions import ValidationError from odoo.tests.common import TransactionCase @@ -41,11 +42,12 @@ class TestIrValues(TransactionCase): self.assertTrue(d, "At least one value should be retrieved for this model.") self.assertEqual(d[2], '007', "Can't retrieve the created default value.") - # create invalid defaults - with self.assertRaises(ValidationError): + # create valid but unusable defaults, a ValidationError should not be thrown + with tools.mute_logger('odoo.addons.base.ir.ir_values'): ir_values.set_default('unknown_model', 'unknown_field', 42) - with self.assertRaises(ValidationError): ir_values.set_default('res.partner', 'unknown_field', 42) + + # create invalid defaults with self.assertRaises(ValidationError): ir_values.set_default('res.partner', 'lang', 'some_LANG') with self.assertRaises(ValidationError):