From f2115ba0f2294f02f2c3a891bf606a411173cf9f Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 28 Dec 2022 16:11:04 +0000 Subject: [PATCH] [FIX] core: don't fail when reading recordset with ids [None] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The revision 65a012c2bba0ed81d9b525a7779c726043b17707 changed the behavior of method _read() when invoked on a record with id None. Before the change, the method would consider that no records have been fetched because the id is falsy. After the change, it keeps the id None in the fetched records, and attempts to make subsequent SQL queries like "column IN ()", which is syntactically incorrect. OPW 3104957 closes odoo/odoo#108785 X-original-commit: 712d03cb2ee5f2fde0e80619be5db38aa09ed1ac Signed-off-by: Rémy Voet Signed-off-by: Raphael Collet --- odoo/addons/test_new_api/tests/test_new_fields.py | 3 +++ odoo/models.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/odoo/addons/test_new_api/tests/test_new_fields.py b/odoo/addons/test_new_api/tests/test_new_fields.py index 027209ed0b9..9af27961535 100644 --- a/odoo/addons/test_new_api/tests/test_new_fields.py +++ b/odoo/addons/test_new_api/tests/test_new_fields.py @@ -1672,6 +1672,9 @@ class TestFields(TransactionCaseWithUserDemo): with self.assertRaises(MissingError): deleted.categories + # special case: should not fail + Discussion.browse([None]).read(['categories']) + def test_40_real_vs_new(self): """ test field access on new records vs real records. """ Model = self.env['test_new_api.category'] diff --git a/odoo/models.py b/odoo/models.py index 691e3e86ad4..da85cd0a76e 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -3231,7 +3231,7 @@ class BaseModel(metaclass=MetaModel): self = self.exists() self.check_access_rule('read') - result = [(id_,) for id_ in self._ids] + result = [(id_,) for id_ in self.ids] fetched = self.browse() if result: