From e208fb8e119323235d8e2956c0dfdc58cd716f2d Mon Sep 17 00:00:00 2001 From: ljmwkx <1340053001@qq.com> Date: Thu, 21 Nov 2024 18:17:29 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E9=9A=90=E8=97=8F?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soong_workflow/models/soong_workflow_mixin.py | 15 ++++++++++++--- soong_workflow/models/soong_workflow_node.py | 5 +++++ .../views/soong_workflow_node_views.xml | 6 ++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 2db6db979..2f21bf9c3 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -454,6 +454,7 @@ class SoongWorkflowMixin(models.AbstractModel): for node in wkf_rec.node_ids: for button in node.button_ids: # Check Condition Code + btn_invisible = "" if button.btn_hide: if button.review_type == "individual": if self.env.user != button.reviewer_id: @@ -467,6 +468,9 @@ class SoongWorkflowMixin(models.AbstractModel): # ('employee_id.department_id', '=', button.users_role_id.department_id.id)]) # if self.env.user not in user_role_id: # continue + # 如果是隐藏条件拼接隐藏条件 + elif button.review_type == "invisible": + btn_invisible = button.invisible_expression else: if not _check_condition_code(button): continue @@ -479,9 +483,14 @@ class SoongWorkflowMixin(models.AbstractModel): btn_exec_action_el.set("class", "oe_highlight") if button.has_icon: btn_exec_action_el.set("icon", button.icon) - btn_exec_action_el.set( - "invisible", "state != '%s'" % node.node_name - ) + if btn_invisible: + btn_exec_action_el.set( + "invisible", "state != '{0}' or {1}".format(node.node_name, btn_invisible) + ) + else: + btn_exec_action_el.set( + "invisible", "state != '%s'" % node.node_name + ) btn_exec_action_el.set( "context", "{'btn_key':'%s','active_model':'%s'}" diff --git a/soong_workflow/models/soong_workflow_node.py b/soong_workflow/models/soong_workflow_node.py index c80cb5f7a..646ae16a9 100644 --- a/soong_workflow/models/soong_workflow_node.py +++ b/soong_workflow/models/soong_workflow_node.py @@ -247,6 +247,7 @@ class SoongWorkflowNodeButton(models.Model): ("group", "Any user in a specific group"), ("expression", "Python Expression"), ('user_role', '角色'), + ('invisible', '隐藏条件'), ], ) reviewer_id = fields.Many2one(comodel_name="res.users", string="Reviewer") @@ -259,6 +260,10 @@ class SoongWorkflowNodeButton(models.Model): "The result of executing the expression must be a res.users " "recordset.", ) + invisible_expression = fields.Text( + string="隐藏条件", + default="", + ) # todo 找翻译文件改变状态 action_type = fields.Selection( [ diff --git a/soong_workflow/views/soong_workflow_node_views.xml b/soong_workflow/views/soong_workflow_node_views.xml index 588561380..974506c46 100644 --- a/soong_workflow/views/soong_workflow_node_views.xml +++ b/soong_workflow/views/soong_workflow_node_views.xml @@ -169,6 +169,12 @@ + + + 备注: 这里填写按钮的隐藏条件,参考invisible的写法,invisible="name != '1' or state != '0'",这里只写 name != '1' or state != '0' 即可,注意其中的字段必须填写页面中提前声明的。 + + +