权限管理

This commit is contained in:
ljmwkx
2024-12-26 20:52:34 +08:00
parent 0dc64432e9
commit 152d59849e
@@ -122,15 +122,64 @@ class YuthonHrEmployee(models.Model):
pinyin_name = fields.Char(string="拼音名称", compute='_compute_pinyin', index=True, store=True)
pinyin_min = fields.Char(string='拼音缩写', compute='_compute_pinyin', index=True, store=True)
@api.onchange('department_id')
def onchange_department_id(self):
for record in self:
record.department_id.do_department_to_res_groups()
@api.onchange('user_role_id')
def onchange_user_role_id(self):
@api.model_create_multi
def create(self, vals_list):
recs = super().create(vals_list)
for record in recs:
try:
if record.department_id:
record.department_id.do_department_to_res_groups()
if record.user_role_id:
record.user_role_id.do_role_to_res_groups()
except Exception as e:
pass
return recs
def write(self, values):
for record in self:
record.user_role_id.do_role_to_res_groups()
try:
if "department_id" in values:
record.do_group_department_id(values.get("department_id"))
if "user_role_id" in values:
record.do_group_user_role_id(values.get("user_role_id"))
except Exception as e:
pass
return super().write(values)
def do_group_department_id(self, department_id):
user_ids = self.user_id.ids
# 移除原来的数据
old_res_groups_objs = self.sudo().env["res.groups"].search([("department_ids", "in", self.department_id.ids)])
if old_res_groups_objs:
for res_groups_obj in old_res_groups_objs:
res_groups_obj.sudo().write({
"users": [(3, id) for id in user_ids]
})
# 增加新的元素
department_obj = self.sudo().env["hr.department"].search([("id", "=", department_id)], limit=1)
res_groups_objs = self.sudo().env["res.groups"].search([("department_ids", "in", department_obj.ids)])
if res_groups_objs:
for res_groups_obj in res_groups_objs:
res_groups_obj.sudo().write({
"users": [(4, id) for id in user_ids]
})
def do_group_user_role_id(self, user_role_id):
# 移除原来的数据
user_ids = self.user_id.ids
old_res_groups_objs = self.sudo().env["res.groups"].search([("user_role_ids", "in", self.user_role_id.ids)])
if old_res_groups_objs:
for res_groups_obj in old_res_groups_objs:
res_groups_obj.sudo().write({"users": [(3, id) for id in user_ids]})
# 增加新的元素
role_obj = self.sudo().env["soong.user.role"].search([("id", "=", user_role_id)], limit=1)
res_groups_objs = self.sudo().env["res.groups"].search([("user_role_ids", "in", role_obj.ids)])
if res_groups_objs:
for res_groups_obj in res_groups_objs:
res_groups_obj.sudo().write({
"users": [(4, id) for id in user_ids]
})
@api.depends('department_id')
def compute_company(self):