diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 28a454ea7..cecd5e397 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -125,19 +125,19 @@ class SoongWorkflowMixin(models.AbstractModel): def create(self, vals_list): res = super().create(vals_list) for record in res: - button_ids = record.sudo().workflow_id.node_ids.button_ids.search([('workflow_id', '=', res.workflow_id.id), ('sequence', '=', 1)]) + button_ids = record.sudo().workflow_id.node_ids.button_ids.search([('workflow_id', '=', res.workflow_id.id)]) + current_user_role_id = record.env.user.employee_id.user_role_id.id + for button in button_ids: + print(f" - 按钮ID: {button.id}, 节点名称: {button.node_id.name}") for button_id in button_ids: + allowed_role_ids = [] if button_id.users_role_id: - employee_ids = record.sudo().env['hr.employee'].search( - ['|', ('user_role_id', '=', button_id.users_role_id.id), - ('user_role_ids', 'in', button_id.users_role_id.id), - ]) + allowed_role_ids.append(button_id.users_role_id.id) + elif button_id.users_role_group_ids: + allowed_role_ids.extend(button_id.users_role_group_ids.user_role_ids.ids) else: - employee_ids = record.sudo().env['hr.employee'].search([ - '|', ('user_role_id', 'in', button_id.users_role_group_ids.user_role_ids.ids), - ('user_role_ids', 'in', button_id.users_role_group_ids.user_role_ids.ids), - ]) - if record.env.user.employee_id.id in employee_ids.ids: + continue + if current_user_role_id in allowed_role_ids: record.state = button_id.node_id.node_name return res