!12005 议题和流程

Merge pull request !12005 from 李鹏宇/dev
This commit is contained in:
李鹏宇
2026-06-10 12:22:37 +00:00
committed by Gitee
2 changed files with 20 additions and 3 deletions
@@ -825,6 +825,9 @@ class SoongWorkflowMixin(models.AbstractModel):
allowed_link_ids = [lid for lid in trans_link_ids if lid not in invalid_links.ids]
default_trans_link_id = allowed_link_ids[0] if allowed_link_ids else trans_link_id
avoid_issue_ids = self._get_avoid_issue_ids()
avoid_domain = repr([('id', 'in', avoid_issue_ids)]) if avoid_issue_ids else repr([('id', '=', False)])
return {
"name": _("评论"),
"type": "ir.actions.act_window",
@@ -846,7 +849,8 @@ class SoongWorkflowMixin(models.AbstractModel):
"default_trans_link_id": default_trans_link_id,
"all_workflow_links": allowed_link_ids,
"default_invalid_link_ids": invalid_links.ids,
"default_allowed_issue_ids": [(6, 0, self._get_avoid_issue_ids())],
"default_allowed_issue_ids": [(6, 0, avoid_issue_ids)],
"avoid_issue_domain": avoid_domain,
},
}
@@ -5,6 +5,7 @@ from email.policy import default
from odoo import fields, models, api
from odoo.exceptions import UserError, ValidationError
from datetime import datetime, date, time, timedelta
from lxml import etree
import logging
_logger = logging.getLogger(__name__)
@@ -40,8 +41,7 @@ class SoongWorkflowCommentWizard(models.TransientModel):
allowed_issue_ids = fields.Many2many('issue.library', 'soong_comment_wizard_allowed_issue_rel',
'wizard_id', 'issue_id', string='可选议题')
avoid_issue_ids = fields.Many2many('issue.library', 'soong_comment_wizard_avoid_issue_rel',
'wizard_id', 'issue_id', string='回避议题',
domain="[('id', 'in', allowed_issue_ids)]")
'wizard_id', 'issue_id', string='回避议题')
avoid_comment = fields.Char(string='回避意见')
@api.onchange('is_avoid')
@@ -63,6 +63,19 @@ class SoongWorkflowCommentWizard(models.TransientModel):
for issue in self.avoid_issue_ids:
issue.log_avoidance(self.env.user, self.avoid_comment or '')
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
res = super(SoongWorkflowCommentWizard, self).fields_view_get(
view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
if view_type == 'form':
domain_str = self._context.get('avoid_issue_domain')
if domain_str:
doc = etree.fromstring(res['arch'])
for node in doc.xpath("//field[@name='avoid_issue_ids']"):
node.set('domain', domain_str)
res['arch'] = etree.tostring(doc, encoding='unicode')
return res
document_ids = fields.Many2many('ir.attachment', string="附件")
return_link_id = fields.Many2one('trans.link', string='退回节点', ondelete='set null')
invalid_link_ids = fields.Many2many(