From aea0d178dafd6d610230bb2e3886362ff7cb4313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Wed, 5 Feb 2025 21:17:47 +0800 Subject: [PATCH] 1 --- soong_workflow/models/soong_workflow_log.py | 55 ++++++++++++------- soong_workflow/models/soong_workflow_mixin.py | 11 ++-- soong_workflow/security/ir.model.access.csv | 1 + .../templates/soong_workflow_templates.xml | 40 +++++++++----- soong_workflow/views/menuitem.xml | 9 --- 5 files changed, 67 insertions(+), 49 deletions(-) diff --git a/soong_workflow/models/soong_workflow_log.py b/soong_workflow/models/soong_workflow_log.py index 098850c5a..7d4af76d5 100644 --- a/soong_workflow/models/soong_workflow_log.py +++ b/soong_workflow/models/soong_workflow_log.py @@ -11,37 +11,19 @@ class SoongWorkflowLog(models.Model): _name = "soong.workflow.log" _description = "Soong Workflow Log" - # _sql_constraints = [( - # "uniq_node_btn_id", - # "unique(model, res_id, node_btn_id)", - # _("Workflow log must be unique."),), ] - name = fields.Char(string="节点名称", compute="_compute_name", store=True) model = fields.Char(string="Related Document Model", index=True, required=True) res_id = fields.Integer(string="Related Document ID", index=True, required=True) code = fields.Char(string="流水号", index=True) sequence = fields.Integer(string="序号", compute="_compute_sequence") - # w_res_id = fields.Many2oneReference(string='Workflow Ref.', index=True, model_field='w_res_model_id') - # w_res_model_id = fields.Many2one('ir.model', string='Model', index=True, ondelete='cascade') - # w_res_model = fields.Char('Workflow Ref Model', index=True, related='w_res_model_id.model', precompute=True, store=True, readonly=True) - workflow_id = fields.Many2one(comodel_name="soong.workflow") node_id = fields.Many2one(comodel_name="soong.workflow.node") node_btn_id = fields.Many2one(comodel_name="soong.workflow.node.button", string="动作名称") - node_btn_name = fields.Selection([ - ('0', ' '), - ('1', '退回'), - ('2', '加签'), - ], string='节点功能', default='0') - + node_btn_name = fields.Selection([('0', ' '), ('1', '退回'), ('2', '加签')], string='节点功能', default='0') done_by = fields.Many2one(comodel_name="res.users", string="审批人") lase_click_date = fields.Datetime(string="操作时间") - approval_state = fields.Selection([ - ('0', '待办'), - ('1', '办理中'), - ('2', '已办结'), - ], string='审批状态', default='0') + approval_state = fields.Selection([('0', '待办'), ('1', '办理中'), ('2', '已办结')], string='审批状态', default='0') comment = fields.Char(string="意见") date_create = fields.Datetime(string="时间", default=lambda self: fields.Datetime.now()) @@ -63,3 +45,36 @@ class SoongWorkflowLog(models.Model): else: logs_obj = self.sudo().search([("res_id", "=", record.res_id), ("model", "=", record.model), ("workflow_id", "=", record.workflow_id.id), ("date_create", "<", record.date_create)]) record.sequence = len(logs_obj) + 1 + +class SoongWorkflowLog2(models.Model): + _name = "soong.workflow.log2" + _description = "Soong Workflow Log2" + + workflow_id = fields.Many2one(comodel_name="soong.workflow") + model = fields.Char(string="Related Document Model", index=True, required=True) + res_id = fields.Integer(string="Related Document ID", index=True, required=True) + node_id = fields.Many2one(comodel_name="soong.workflow.node") + node_btn_id = fields.Many2one(comodel_name="soong.workflow.node.button", string="动作名称") + + sequence = fields.Integer(string="序号", compute="_compute_sequence") + done_by = fields.Many2one(comodel_name="res.users", string="审批人") + name = fields.Char(string="节点名称", compute="_compute_name", store=True) + approval_state = fields.Selection([('0', '未读'), ('1', '已读')], string='审批状态', default='0') + lase_click_date = fields.Datetime(string="操作时间") + + @api.depends("workflow_id", "node_id", "node_btn_id") + def _compute_name(self): + for rec in self: + rec.name = "%(node_id_name)s" % {"node_id_name": rec.node_id.name} + + @api.depends("workflow_id") + def _compute_sequence(self): + for record in self: + if type(record.id) == int: + logs_obj = self.sudo().search([("res_id", "=", record.res_id), ("model", "=", record.model), + ("workflow_id", "=", record.workflow_id.id), ("id", "<", record.id)]) + else: + logs_obj = self.sudo().search([("res_id", "=", record.res_id), ("model", "=", record.model), + ("workflow_id", "=", record.workflow_id.id), + ("date_create", "<", record.date_create)]) + record.sequence = len(logs_obj) + 1 diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 53439c51a..e4b40c310 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -152,13 +152,10 @@ class SoongWorkflowMixin(models.AbstractModel): else: rec.approve_state = "pending" - log_ids = fields.One2many( - comodel_name="soong.workflow.log", - inverse_name="res_id", - string=" ", - domain=lambda self: [("model", "=", self._name)], - auto_join=True, - ) + log_ids = fields.One2many(comodel_name="soong.workflow.log", inverse_name="res_id", string=" ", + domain=lambda self: [("model", "=", self._name)], auto_join=True) + log_ids2 = fields.One2many(comodel_name="soong.workflow.log2", inverse_name="res_id", string=" ", + domain=lambda self: [("model", "=", self._name)], auto_join=True) @api.model_create_multi def create(self, vals_list): diff --git a/soong_workflow/security/ir.model.access.csv b/soong_workflow/security/ir.model.access.csv index 414457848..861deaefa 100644 --- a/soong_workflow/security/ir.model.access.csv +++ b/soong_workflow/security/ir.model.access.csv @@ -27,6 +27,7 @@ access_trans_link,trans_link,model_trans_link,soong_workflow.group_soong_workflo access_soong_workflow_entrust,soong_workflow_entrust,model_soong_workflow_entrust,soong_workflow.group_soong_workflow_user,1,1,1,1 access_entrust_all,entrust_all,model_entrust_all,soong_workflow.group_soong_workflow_user,1,1,1,1 access_soong_workflow_log,soong_workflow_log,model_soong_workflow_log,soong_workflow.group_soong_workflow_user,1,1,1,1 +access_soong_workflow_log2,soong_workflow_log2,model_soong_workflow_log2,soong_workflow.group_soong_workflow_user,1,1,1,1 access_soong_workflow_inspector,soong_workflow_inspector,model_soong_workflow_inspector,soong_workflow.group_soong_workflow_user,1,1,1,1 access_soong_workflow_inspector_line,soong_workflow_inspector_line,model_soong_workflow_inspector_line,soong_workflow.group_soong_workflow_user,1,1,1,1 access_soong_workflow_inspector_line2,soong_workflow_inspector_line2,model_soong_workflow_inspector_line2,soong_workflow.group_soong_workflow_user,1,1,1,1 diff --git a/soong_workflow/templates/soong_workflow_templates.xml b/soong_workflow/templates/soong_workflow_templates.xml index 72c7cd16d..e5fe7fad8 100644 --- a/soong_workflow/templates/soong_workflow_templates.xml +++ b/soong_workflow/templates/soong_workflow_templates.xml @@ -1,18 +1,32 @@ diff --git a/soong_workflow/views/menuitem.xml b/soong_workflow/views/menuitem.xml index 443c77b0e..27b85493e 100644 --- a/soong_workflow/views/menuitem.xml +++ b/soong_workflow/views/menuitem.xml @@ -21,55 +21,46 @@ parent="menu_soong_workflow_root" action="soong_workflow_record_action" sequence="3"/> - - - - - - - - -