diff --git a/spp_user_roles/models/role.py b/spp_user_roles/models/role.py
index 069a2b09..472eee14 100644
--- a/spp_user_roles/models/role.py
+++ b/spp_user_roles/models/role.py
@@ -2,7 +2,7 @@
import logging
-from odoo import fields, models
+from odoo import api, fields, models
_logger = logging.getLogger(__name__)
@@ -12,6 +12,29 @@ class ResUsersRoleCustomSPP(models.Model):
role_type = fields.Selection([("local", "Local"), ("global", "Global")], default="global")
+ @api.model_create_multi
+ def create(self, vals_list):
+ # Workaround: same Odoo cache-clearing bug as in base_user_role's write()
+ # override. When res.groups fields are set via _inherits on create(),
+ # implied_ids gets dropped. Extract group fields and write them to
+ # group_id directly after creation, mirroring the write() fix.
+ groups_vals_list = []
+ group_fields = set(self.env["res.groups"]._fields) - {"name"}
+ for vals in vals_list:
+ group_vals = {}
+ for field in group_fields:
+ if field in vals:
+ group_vals[field] = vals.pop(field)
+ groups_vals_list.append(group_vals)
+
+ new_records = super().create(vals_list)
+
+ for record, group_vals in zip(new_records, groups_vals_list, strict=True):
+ if group_vals:
+ record.group_id.write(group_vals)
+
+ return new_records
+
def action_update_users(self):
"""
Call the update_users function to force the update of associated users in the role.
diff --git a/spp_user_roles/views/role.xml b/spp_user_roles/views/role.xml
index 0637e402..1817878b 100644
--- a/spp_user_roles/views/role.xml
+++ b/spp_user_roles/views/role.xml
@@ -20,9 +20,19 @@
+
[('role_id', '=', False)]
- many2many
+
+
+
+
+