diff options
| author | Christophe Simonis <chs@odoo.com> | 2019-01-11 18:56:24 +0100 |
|---|---|---|
| committer | Christophe Simonis <chs@odoo.com> | 2019-01-11 18:56:24 +0100 |
| commit | 6a0675d36dd888daa4183f3d609ce334ed3cb493 (patch) | |
| tree | 398886eba7df477300b1f433f295caa8c18d8ff1 /odoo | |
| parent | 57ccf70a32f677a9076ec2973100c1025f412d85 (diff) | |
| parent | e033114879cfe4a487549c0abbe37ec18bc151c9 (diff) | |
[MERGE] forward port branch saas-11.3 up to e033114879c
Diffstat (limited to 'odoo')
| -rw-r--r-- | odoo/addons/base/models/res_users.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index 083607f9807..fef68d537d0 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -868,8 +868,26 @@ class GroupsImplied(models.Model): if values.get('users') or values.get('implied_ids'): # add all implied groups (to all users of each group) for group in self: - vals = {'users': list(pycompat.izip(repeat(4), group.with_context(active_test=False).users.ids))} - super(GroupsImplied, group.trans_implied_ids).write(vals) + self._cr.execute(""" + WITH RECURSIVE group_imply(gid, hid) AS ( + SELECT gid, hid + FROM res_groups_implied_rel + UNION + SELECT i.gid, r.hid + FROM res_groups_implied_rel r + JOIN group_imply i ON (i.hid = r.gid) + ) + INSERT INTO res_groups_users_rel (gid, uid) + SELECT i.hid, r.uid + FROM group_imply i, res_groups_users_rel r + WHERE r.gid = i.gid + AND i.gid = %(gid)s + EXCEPT + SELECT r.gid, r.uid + FROM res_groups_users_rel r + JOIN group_imply i ON (r.gid = i.hid) + WHERE i.gid = %(gid)s + """, dict(gid=group.id)) return res class UsersImplied(models.Model): |
