summaryrefslogtreecommitdiff
path: root/odoo/addons
diff options
context:
space:
mode:
authorSébastien Theys <seb@odoo.com>2020-02-04 11:33:50 +0000
committerSébastien Theys <seb@odoo.com>2020-02-26 17:56:32 +0000
commit5d62e4954f902e08bda38179bf98919dbd3a57e1 (patch)
treedf054f47814d5407dbee5290edc42beaa372c640 /odoo/addons
parent382f17f4624b45798c9ec4cc4ca37e8cb00b08ec (diff)
[FIX] core: fix _flush_search() when _order depends on m2o
closes odoo/odoo#46365 X-original-commit: 604b6a22db8eddfb37f9be31d3826394e25bd86c Signed-off-by: Raphael Collet (rco) <rco@openerp.com> Co-authored-by: Raphael Collet <rco@odoo.com> Co-authored-by: Sébastien Theys <seb@odoo.com>
Diffstat (limited to 'odoo/addons')
-rw-r--r--odoo/addons/test_new_api/models/test_new_api.py17
-rw-r--r--odoo/addons/test_new_api/security/ir.model.access.csv2
-rw-r--r--odoo/addons/test_new_api/tests/test_new_fields.py18
3 files changed, 36 insertions, 1 deletions
diff --git a/odoo/addons/test_new_api/models/test_new_api.py b/odoo/addons/test_new_api/models/test_new_api.py
index 330eed18008..14a981b3b0c 100644
--- a/odoo/addons/test_new_api/models/test_new_api.py
+++ b/odoo/addons/test_new_api/models/test_new_api.py
@@ -816,3 +816,20 @@ class ModelParentM2o(models.Model):
name = fields.Char('Name')
child_ids = fields.One2many('test_new_api.model_child_m2o', 'parent_id', string="Children")
+
+
+class Country(models.Model):
+ _name = 'test_new_api.country'
+ _description = 'Country, ordered by name'
+ _order = 'name, id'
+
+ name = fields.Char()
+
+
+class City(models.Model):
+ _name = 'test_new_api.city'
+ _description = 'City, ordered by country then name'
+ _order = 'country_id, name, id'
+
+ name = fields.Char()
+ country_id = fields.Many2one('test_new_api.country')
diff --git a/odoo/addons/test_new_api/security/ir.model.access.csv b/odoo/addons/test_new_api/security/ir.model.access.csv
index 056be62d064..21a676a2d54 100644
--- a/odoo/addons/test_new_api/security/ir.model.access.csv
+++ b/odoo/addons/test_new_api/security/ir.model.access.csv
@@ -49,3 +49,5 @@ access_test_new_api_model_child_m2o,access_test_new_api_model_child_m2o,model_te
access_test_new_api_model_parent_m2o,access_test_new_api_model_parent_m2o,model_test_new_api_model_parent_m2o,,1,1,1,1
access_test_new_api_model_private_address_onchange,access_test_new_api_model_private_address_onchange,model_test_new_api_model_private_address_onchange,base.group_user,1,1,1,1
access_test_new_api_req_m2o_transient,access_test_new_api_req_m2o_transient,model_test_new_api_req_m2o_transient,,0,0,0,0
+access_test_new_api_country,access_test_new_api_country,model_test_new_api_country,base.group_user,1,1,1,1
+access_test_new_api_city,access_test_new_api_city,model_test_new_api_city,base.group_user,1,1,1,1
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 94b1dd9c04e..0712e088f78 100644
--- a/odoo/addons/test_new_api/tests/test_new_fields.py
+++ b/odoo/addons/test_new_api/tests/test_new_fields.py
@@ -1714,7 +1714,23 @@ class TestFields(TransactionCaseWithUserDemo):
self.assertEqual(record_no_bin_size.binary_computed, expected_value)
self.assertEqual(record_bin_size.binary_computed, expected_value)
- def test_96_ir_rule_m2m_field(self):
+ def test_96_order_m2o(self):
+ belgium, congo = self.env['test_new_api.country'].create([
+ {'name': "Duchy of Brabant"},
+ {'name': "Congo"},
+ ])
+ cities = self.env['test_new_api.city'].create([
+ {'name': "Brussels", 'country_id': belgium.id},
+ {'name': "Kinshasa", 'country_id': congo.id},
+ ])
+ # cities are sorted by country_id, name
+ self.assertEqual(cities.sorted().mapped('name'), ["Kinshasa", "Brussels"])
+
+ # change order of countries, and check sorted()
+ belgium.name = "Belgium"
+ self.assertEqual(cities.sorted().mapped('name'), ["Brussels", "Kinshasa"])
+
+ def test_97_ir_rule_m2m_field(self):
"""Ensures m2m fields can't be read if the left records can't be read.
Also makes sure reading m2m doesn't take more queries than necessary."""
tag = self.env['test_new_api.multi.tag'].create({})