From a8cf06b781ab8c06b2b647968bcbdf9195d3751f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20BEAU?= Date: Sun, 20 Dec 2020 12:06:02 +0100 Subject: [PATCH] [IMP] Fix edition of role --- base_user_role/models/role.py | 8 ++++++++ base_user_role/tests/test_user_role.py | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/base_user_role/models/role.py b/base_user_role/models/role.py index 495a5b66..089ac25f 100644 --- a/base_user_role/models/role.py +++ b/base_user_role/models/role.py @@ -47,6 +47,14 @@ class ResUsersRole(models.Model): return new_record def write(self, vals): + # Workaround to solve issue with broken code in odoo that clear the cache + # during the write: see odoo/addons/base/models/res_users.py#L226 + groups_vals = {} + for field in self.group_id._fields: + if field in vals: + groups_vals[field] = vals.pop(field) + if groups_vals: + self.group_id.write(groups_vals) res = super(ResUsersRole, self).write(vals) self.update_users() return res diff --git a/base_user_role/tests/test_user_role.py b/base_user_role/tests/test_user_role.py index 70337235..55a005be 100644 --- a/base_user_role/tests/test_user_role.py +++ b/base_user_role/tests/test_user_role.py @@ -224,3 +224,8 @@ class TestUserRole(TransactionCase): role_group_ids = sorted(set(role_group_ids)) # Check that user have groups implied by role 2 self.assertEqual(user_group_ids, role_group_ids) + + def test_update_role(self): + self.role1_id.write({"name": "foo", "comment": "FOO"}) + self.assertEqual(self.role1_id.group_id.name, "foo") + self.assertEqual(self.role1_id.group_id.comment, "FOO")