diff options
| author | Xavier Morel <xmo@odoo.com> | 2020-09-18 06:41:51 +0000 |
|---|---|---|
| committer | Xavier Morel <xmo@odoo.com> | 2020-09-18 08:26:28 +0000 |
| commit | f8658f229180a595d69cd6daefeded082c7f64ea (patch) | |
| tree | b563257615f46b80f73a372ea59fd279ea9e39a6 /odoo/addons/base/tests | |
| parent | aebe9a76c9b35e84eda1f46bec3ef6da152b1539 (diff) | |
[FIX] base: virtual group fields on users with new default/onchange
* override `onchange` in res.users in order to properly generate and
send the reified group fields alongside the rest: while default_get
sets them up, those fields then get stripped by the onchange
machinery as they don't actually exist on the model
* add a test to check for it
* fix SSF in relation with the new default/onchange system
- because fields may not actually exist on the record,
`record_to_values` needs to `read` the record data rather than
directly access the recordset: the recordset likely will not
know about fake fields
- after the initial onchange has run the form must be filled with
falsy values in case the onchange has not sent defaults for
everything
- on creation, all fields in the form should be considered modified
Task 2341153
closes odoo/odoo#57987
Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
Diffstat (limited to 'odoo/addons/base/tests')
| -rw-r--r-- | odoo/addons/base/tests/test_res_users.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/odoo/addons/base/tests/test_res_users.py b/odoo/addons/base/tests/test_res_users.py index 2e73c751481..34f21356abe 100644 --- a/odoo/addons/base/tests/test_res_users.py +++ b/odoo/addons/base/tests/test_res_users.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from odoo.tests.common import TransactionCase +from odoo.tests.common import TransactionCase, Form, tagged class TestUsers(TransactionCase): @@ -114,3 +114,18 @@ class TestUsers(TransactionCase): "On user company change, if its partner_id has already a company_id," "the company_id of the partner_id shall be updated" ) + +@tagged('post_install', '-at_install') +class TestUsers2(TransactionCase): + def test_reified_groups(self): + """ The groups handler doesn't use the "real" view with pseudo-fields + during installation, so it always works (because it uses the normal + groups_id field). + """ + # use the specific views which has the pseudo-fields + f = Form(self.env['res.users'], view='base.view_users_form') + f.name = "bob" + f.login = "bob" + user = f.save() + + self.assertIn(self.env.ref('base.group_user'), user.groups_id) |
