diff --git a/soong_workflow/models/soong_workflow_record.py b/soong_workflow/models/soong_workflow_record.py index e3d923128..52085cdfe 100644 --- a/soong_workflow/models/soong_workflow_record.py +++ b/soong_workflow/models/soong_workflow_record.py @@ -34,24 +34,25 @@ class SoongWorkflowRecord(models.Model): done_by = fields.Many2one(comodel_name="res.users", string="经办人") is_department_record = fields.Boolean(string="是否是本部门的数据", store=False, search="_search_is_department_record") + def get_department_employees(self, department_id): + valid_user_ids = set() + employee_ids = self.sudo().env['hr.employee'].search([('department_id', '=', department_id.id)]) + valid_user_ids.update([user.user_id.id for user in employee_ids if user.user_id]) + child_ids = self.sudo().env['hr.department'].search([('parent_id', '=', department_id.id)]) + for child in child_ids: + valid_user_ids.update(self.get_department_employees(child)) + return valid_user_ids + def _search_is_department_record(self, operator, operand): - def get_department_employees(department_id): - valid_user_ids = set() - employee_ids = self.env['hr.employee'].search([('department_id', '=', department_id.id)]) - valid_user_ids.update([user.user_id.id for user in employee_ids if user.user_id]) - child_ids = self.env['hr.department'].search([('parent_id', '=', department_id.id)]) - for child in child_ids: - valid_user_ids.update(get_department_employees(child)) - return valid_user_ids - if self.env.user.has_group('soong_workflow.group_soong_workflow_manager'): - ids = self.sudo().with_context(active_test=False).search([]).ids - else: - ids = [] - for department_id in self.env.user.employee_id.department_id: - user_list = get_department_employees(department_id) - for user in user_list: - c_id = self.sudo().with_context(active_test=False).search([("users_ids", "in", user)]) - ids.append(c_id) + # if self.env.user.has_group('soong_workflow.group_soong_workflow_manager'): + # ids = self.sudo().with_context(active_test=False).search([]).ids + # else: + ids = [] + for department_id in self.env.user.employee_id.department_id: + user_list = self.get_department_employees(department_id) + for user in user_list: + c_id = self.sudo().with_context(active_test=False).search([("users_ids", "in", [user])]).ids + ids += c_id return [('id', 'in', ids)] def reclaim_record(self):