!10687 角色同步

Merge pull request !10687 from 李鹏宇/dev_wang
This commit is contained in:
李鹏宇
2026-04-10 03:47:31 +00:00
committed by Gitee
2 changed files with 38 additions and 1 deletions
@@ -338,6 +338,43 @@ class YuthonHrEmployee(models.Model):
else:
self.role_group_ids = [(5,)]
@api.constrains('user_role_id', 'user_role_ids', 'role_group_ids')
def _sync_roles_to_res_groups(self):
"""
当员工的主角色(user_role_id)、辅助角色(user_role_ids)或角色组(role_group_ids)发生变更时,
仅将该员工的关联用户写入对应权限组的用户列表,不修改 res.groups 的角色/角色组字段配置。
匹配规则:
- 员工的主角色/辅助角色 与 res.groups.user_role_ids 有交集 → 写入该组用户列表
- 员工的角色组 与 res.groups.users_role_group_ids 有交集 → 写入该组用户列表
"""
for employee in self:
if not employee.user_id:
continue
# 收集该员工所有角色ID(主角色 + 辅助角色)
role_ids = []
if employee.user_role_id:
role_ids.append(employee.user_role_id.id)
if employee.user_role_ids:
role_ids += employee.user_role_ids.ids
# 收集该员工所有角色组ID
role_group_ids = employee.role_group_ids.ids
# 1. 找到 res.groups.user_role_ids 与员工角色有交集的权限组,仅追加用户
if role_ids:
groups_by_role = self.env['res.groups'].search([
('user_role_ids', 'in', role_ids)
])
groups_by_role.write({'users': [(4, employee.user_id.id)]})
# 2. 找到 res.groups.users_role_group_ids 与员工角色组有交集的权限组,仅追加用户
if role_group_ids:
groups_by_role_group = self.env['res.groups'].search([
('users_role_group_ids', 'in', role_group_ids)
])
groups_by_role_group.write({'users': [(4, employee.user_id.id)]})
def update_trade_union(self):
records = self.env['hr.employee'].search([('is_membership', '=', True)])
for record in records:
@@ -91,7 +91,7 @@
</group>
<group col="2" string="拟稿信息">
<group>
<field name="users_id"/>
<field name="users_id" options="{'no_create': True}"/>
<field name="sub_id" invisible="not sub_id"/>
<!-- <field name="official_documents_ids" widget="preview_many2many"/>-->
</group>