权限管理
This commit is contained in:
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user