43 lines
1.8 KiB
Python
43 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
import logging
|
|
from odoo import api, models
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class ResUsers(models.Model):
|
|
_inherit = 'res.users'
|
|
|
|
@api.model_create_multi
|
|
def create(self, vals_list):
|
|
_logger.info("====== [yuthon_base] res.users.create 被调用,准备创建 %d 个用户 ======", len(vals_list))
|
|
users = super().create(vals_list)
|
|
# 新建用户后确保移除财务和薪资管理员权限组
|
|
groups_to_remove = []
|
|
group_refs = [
|
|
# 财务相关群组
|
|
'account.group_account_manager',
|
|
'account.group_account_invoice',
|
|
'account.group_account_user',
|
|
'account.group_readonly',
|
|
# 薪资相关群组
|
|
'hr_payroll.group_hr_payroll_manager',
|
|
'hr_payroll.group_hr_payroll_user',
|
|
'yuthon_salary.group_jtbb_user', # 集团本部用户
|
|
'yuthon_salary.group_wg_user', # 物管公司用户
|
|
'yuthon_salary.group_lc_user', # 粮储公司用户
|
|
'yuthon_salary.salary_rule_confirm_group', # 工资批次确认
|
|
]
|
|
for ref in group_refs:
|
|
group = self.env.ref(ref, raise_if_not_found=False)
|
|
if group:
|
|
groups_to_remove.append((3, group.id))
|
|
_logger.info("====== [yuthon_base] 找到组 %s (id=%d),将移除 ======", ref, group.id)
|
|
else:
|
|
_logger.warning("====== [yuthon_base] 未找到组 %s ======", ref)
|
|
if groups_to_remove:
|
|
_logger.info("====== [yuthon_base] 对用户 %s 移除 %d 个组 ======", users.mapped('login'), len(groups_to_remove))
|
|
users.sudo().write({'groups_id': groups_to_remove})
|
|
_logger.info("====== [yuthon_base] res.users.create 完成 ======")
|
|
return users
|