summaryrefslogtreecommitdiff
path: root/odoo/addons/test_new_api
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2016-09-16 11:03:50 +0200
committerChristophe Simonis <chs@odoo.com>2016-09-16 11:03:50 +0200
commitf4fc3985b6b8857e573b8aea35986cf1dfd552de (patch)
tree9d44d633b6d71472fdfb4d491d1e89a8a506dc31 /odoo/addons/test_new_api
parentd4b878af534d8770794664f560ba2268d4fa373d (diff)
parent10cde43fd4c0f85e86c21a15dcd3f39e10c87d96 (diff)
[MERGE] forward port branch saas-12 up to 10cde43
Diffstat (limited to 'odoo/addons/test_new_api')
-rw-r--r--odoo/addons/test_new_api/models.py9
-rw-r--r--odoo/addons/test_new_api/tests/test_onchange.py27
-rw-r--r--odoo/addons/test_new_api/views.xml1
3 files changed, 37 insertions, 0 deletions
diff --git a/odoo/addons/test_new_api/models.py b/odoo/addons/test_new_api/models.py
index 513fe06ca8c..5fc58ea976a 100644
--- a/odoo/addons/test_new_api/models.py
+++ b/odoo/addons/test_new_api/models.py
@@ -13,6 +13,7 @@ class Category(models.Model):
name = fields.Char(required=True)
color = fields.Integer('Color Index')
parent = fields.Many2one('test_new_api.category')
+ root_categ = fields.Many2one(_name, compute='_compute_root_categ')
display_name = fields.Char(compute='_compute_display_name', inverse='_inverse_display_name')
dummy = fields.Char(store=False)
discussions = fields.Many2many('test_new_api.discussion', 'test_new_api_discussion_category',
@@ -26,6 +27,14 @@ class Category(models.Model):
else:
self.display_name = self.name
+ @api.depends('parent')
+ def _compute_root_categ(self):
+ for cat in self:
+ current = cat
+ while current.parent:
+ current = current.parent
+ cat.root_categ = current
+
@api.one
def _inverse_display_name(self):
names = self.display_name.split('/')
diff --git a/odoo/addons/test_new_api/tests/test_onchange.py b/odoo/addons/test_new_api/tests/test_onchange.py
index 16d122c712c..87fc8229b7c 100644
--- a/odoo/addons/test_new_api/tests/test_onchange.py
+++ b/odoo/addons/test_new_api/tests/test_onchange.py
@@ -75,6 +75,33 @@ class TestOnChange(common.TransactionCase):
result = self.Message.onchange(values, 'body', field_onchange)
self.assertNotIn('name', result['value'])
+ def test_onchange_many2one(self):
+ Category = self.env['test_new_api.category']
+
+ field_onchange = Category._onchange_spec()
+ self.assertEqual(field_onchange.get('parent'), '1')
+
+ root = Category.create(dict(name='root'))
+
+ values = {
+ 'name': 'test',
+ 'parent': root.id,
+ 'root_categ': False,
+ }
+
+ self.env.invalidate_all()
+ result = Category.onchange(values, 'parent', field_onchange).get('value', {})
+ self.assertIn('root_categ', result)
+ self.assertEqual(result['root_categ'], root.name_get()[0])
+
+ values.update(result)
+ values['parent'] = False
+
+ self.env.invalidate_all()
+ result = Category.onchange(values, 'parent', field_onchange).get('value', {})
+ self.assertIn('root_categ', result)
+ self.assertIs(result['root_categ'], False)
+
def test_onchange_one2many(self):
""" test the effect of onchange() on one2many fields """
BODY = "What a beautiful day!"
diff --git a/odoo/addons/test_new_api/views.xml b/odoo/addons/test_new_api/views.xml
index b8c0f5bfa8b..0b053635319 100644
--- a/odoo/addons/test_new_api/views.xml
+++ b/odoo/addons/test_new_api/views.xml
@@ -205,6 +205,7 @@
<group>
<field name="name"/>
<field name="parent"/>
+ <field name="root_categ"/>
<field name="dummy"/>
</group>
</sheet>