From c56ef99586bb2db06667e9217d0d66ef6cf5675a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Wed, 10 Jun 2026 20:22:10 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=AE=E9=A2=98=E5=92=8C=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- soong_workflow/models/soong_workflow_mixin.py | 6 +++++- .../wizard/soong_workflow_comment_wizard.py | 17 +++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/soong_workflow/models/soong_workflow_mixin.py b/soong_workflow/models/soong_workflow_mixin.py index 3190ca1ed..7eb1787a4 100644 --- a/soong_workflow/models/soong_workflow_mixin.py +++ b/soong_workflow/models/soong_workflow_mixin.py @@ -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, }, } diff --git a/soong_workflow/wizard/soong_workflow_comment_wizard.py b/soong_workflow/wizard/soong_workflow_comment_wizard.py index ecd1425e3..7d4442b41 100644 --- a/soong_workflow/wizard/soong_workflow_comment_wizard.py +++ b/soong_workflow/wizard/soong_workflow_comment_wizard.py @@ -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(