summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--odoo/addons/base/tests/test_orm.py12
-rw-r--r--odoo/models.py2
2 files changed, 13 insertions, 1 deletions
diff --git a/odoo/addons/base/tests/test_orm.py b/odoo/addons/base/tests/test_orm.py
index 285e4b67290..4ccfa6a0dd3 100644
--- a/odoo/addons/base/tests/test_orm.py
+++ b/odoo/addons/base/tests/test_orm.py
@@ -3,6 +3,8 @@
from collections import defaultdict
+import psycopg2
+
from odoo.exceptions import AccessError, MissingError
from odoo.tests.common import TransactionCase
from odoo.tools import mute_logger
@@ -136,6 +138,7 @@ class TestORM(TransactionCase):
self.assertEqual(len(found), 1)
self.assertTrue(field in list(found[0]) for field in ['id', 'name', 'display_name', 'email'])
+ @mute_logger('odoo.sql_db')
def test_exists(self):
partner = self.env['res.partner']
@@ -144,10 +147,19 @@ class TestORM(TransactionCase):
self.assertTrue(recs)
self.assertEqual(recs.exists(), recs)
+ # check that new records exist by convention
+ recs = partner.new({})
+ self.assertTrue(recs.exists())
+
# check that there is no record with id 0
recs = partner.browse([0])
self.assertFalse(recs.exists())
+ # check that there is no record with string id
+ recs = partner.browse('xxx')
+ with self.assertRaises(psycopg2.DataError):
+ recs.exists()
+
def test_groupby_date(self):
partners_data = dict(
A='2012-11-19',
diff --git a/odoo/models.py b/odoo/models.py
index 44ab1498350..1f4c5ba0e2b 100644
--- a/odoo/models.py
+++ b/odoo/models.py
@@ -4673,7 +4673,7 @@ Fields:
"""
ids, new_ids = [], []
for i in self._ids:
- (ids if isinstance(i, int) else new_ids).append(i)
+ (new_ids if isinstance(i, NewId) else ids).append(i)
if not ids:
return self
query = """SELECT id FROM "%s" WHERE id IN %%s""" % self._table