diff --git a/soong_workflow/models/soong_workflow.py b/soong_workflow/models/soong_workflow.py index b5cf7f736..081f875a6 100644 --- a/soong_workflow/models/soong_workflow.py +++ b/soong_workflow/models/soong_workflow.py @@ -53,6 +53,21 @@ class SoongWorkflow(models.Model): approvals_group_id = fields.Many2one('soong.approval.group', string="审批分组") user_role_ids = fields.Many2many('soong.user.role', string="授权范围", store=True, default=lambda self: [(6, 0, [self.env.ref('soong_workflow.soong_user_role_workflow_admin').id])], domain=[('user_type', '!=', 'lv_role')]) + department_role_ids = fields.Many2many('hr.department', string="授权部门范围", store=True) + is_user_department_role = fields.Boolean(string="是否有权限查看", store=False, search="_search_is_user_department_role") + + def _search_is_user_department_role(self, operator, value): + id_list = [] + if self.env.user.has_group("soong_workflow.group_soong_workflow_user"): + for user_role_id in self.env.user.employee_id.user_role_ids.ids: + id_list += self.sudo().with_context(active_test=False).search([("user_role_ids", "in", [user_role_id])]).ids + + for department_id in self.env.user.employee_id.department_id.ids: + id_list += self.sudo().with_context(active_test=False).search([("department_role_ids", "in", [department_id])]).ids + + if self.env.user.has_group("soong_workflow.group_soong_workflow_manager"): + id_list += self.sudo().with_context(active_test=False).search([]).ids + return [('id', "in", id_list)] def copy(self, default=None): workflow_id = self.search([('model_id', '=', self.model_id.id)]) diff --git a/soong_workflow/models/soong_workflow_node.py b/soong_workflow/models/soong_workflow_node.py index 376d3a115..cefa71191 100644 --- a/soong_workflow/models/soong_workflow_node.py +++ b/soong_workflow/models/soong_workflow_node.py @@ -122,6 +122,8 @@ class SoongWorkflowNode(models.Model): def onchange_is_end(self): for record in self: if record.is_end: + record.use_custom_colors = True + record.bg_color = END_BG_COLOR_1 record.res_bg_color = END_BG_COLOR_1 sequence = max([r.sequence for r in record.button_ids] if record.button_ids else [1]) record.button_ids = [ @@ -136,6 +138,8 @@ class SoongWorkflowNode(models.Model): }) ] else: + record.use_custom_colors = True + record.bg_color = DEFAULT_BG_COLOR record.res_bg_color = DEFAULT_BG_COLOR remove_ids = record.button_ids.filtered(lambda r: r.name in ["结束"]) record.button_ids = [(3, remove_id.id) for remove_id in remove_ids] diff --git a/soong_workflow/views/kklw_workflow_approval_views.xml b/soong_workflow/views/kklw_workflow_approval_views.xml index 52f5eed25..21f66eeae 100644 --- a/soong_workflow/views/kklw_workflow_approval_views.xml +++ b/soong_workflow/views/kklw_workflow_approval_views.xml @@ -33,5 +33,6 @@ 审批 soong.workflow kanban,tree + [('is_user_department_role','=',True)] diff --git a/soong_workflow/views/soong_workflow_node_views.xml b/soong_workflow/views/soong_workflow_node_views.xml index f94478a9d..79ae4e364 100644 --- a/soong_workflow/views/soong_workflow_node_views.xml +++ b/soong_workflow/views/soong_workflow_node_views.xml @@ -238,7 +238,8 @@ - + + diff --git a/soong_workflow/views/soong_workflow_views.xml b/soong_workflow/views/soong_workflow_views.xml index 56a1911f8..3442d008a 100644 --- a/soong_workflow/views/soong_workflow_views.xml +++ b/soong_workflow/views/soong_workflow_views.xml @@ -36,6 +36,7 @@ +