Files
gzth/yuthon_base/models/res_users.py
T
2026-05-06 20:08:38 +08:00

48 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
from odoo import api, models
class ResUsers(models.Model):
_inherit = 'res.users'
@api.model
def default_get(self, fields_list):
res = super().default_get(fields_list)
# 新建用户时默认不勾选财务管理员权限组
if 'groups_id' in res:
group_manager = self.env.ref('account.group_account_manager', raise_if_not_found=False)
group_invoice = self.env.ref('account.group_account_invoice', raise_if_not_found=False)
groups_to_remove = set()
if group_manager:
groups_to_remove.add(group_manager.id)
if group_invoice:
groups_to_remove.add(group_invoice.id)
if groups_to_remove:
# groups_id 在 default_get 中可能是 [(6, 0, [ids])] 或 [ids] 格式
groups_value = res['groups_id']
if groups_value and isinstance(groups_value[0], (list, tuple)):
# [(6, 0, [ids])] 格式
for i, cmd in enumerate(groups_value):
if cmd[0] == 6:
filtered_ids = [gid for gid in cmd[2] if gid not in groups_to_remove]
groups_value[i] = (6, 0, filtered_ids)
else:
# [ids] 格式
res['groups_id'] = [gid for gid in groups_value if gid not in groups_to_remove]
return res
@api.model_create_multi
def create(self, vals_list):
users = super().create(vals_list)
# 新建用户后再次确保移除财务管理员权限组
groups_to_remove = []
group_manager = self.env.ref('account.group_account_manager', raise_if_not_found=False)
group_invoice = self.env.ref('account.group_account_invoice', raise_if_not_found=False)
if group_manager:
groups_to_remove.append((3, group_manager.id))
if group_invoice:
groups_to_remove.append((3, group_invoice.id))
if groups_to_remove:
users.sudo().write({'groups_id': groups_to_remove})
return users