You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Trac工单关闭时强制要求填写指定字段?

实现Trac工单关闭时强制填写指定字段

当然可以做到!你提到的TracTicketValidatorPlugin确实默认是全局验证,但其实有两种更精准的方式来实现仅在工单切换到closed状态时强制填写特定字段:

方法一:利用Trac内置Workflow添加状态转换验证

Trac的Workflow系统支持在状态转换时触发自定义检查,不需要额外插件就能实现需求:

  • 编辑trac.ini配置文件,找到[ticket-workflow]区块,定位到从其他状态转到closed的转换规则(比如默认的resolve动作,对应从new/assigned/reopened到closed的转换)
  • 给这个动作添加validate参数,指向自定义验证函数,示例配置如下:
[ticket-workflow]
resolve = new,assigned,reopened -> closed
resolve.name = Resolve ticket
resolve.operations = set_resolution
resolve.validate = validate_closed_fields
  • 编写自定义验证脚本:在Trac的插件目录(比如plugins/)创建custom_validator.py,内容如下(替换成你需要强制填写的字段名):
from trac.core import Component, implements
from trac.ticket.api import ITicketActionController

class CustomClosedFieldValidator(Component):
    implements(ITicketActionController)

    def get_ticket_actions(self, req, ticket):
        return []

    def get_all_status(self):
        return []

    def render_ticket_action_control(self, req, ticket, action):
        return None

    def get_action_templates(self):
        return []

    def validate_ticket_action(self, req, ticket, action):
        # 仅在执行resolve动作(转closed状态)时验证
        if action == 'resolve':
            required_field = 'closing_notes'  # 替换为你的目标字段
            if not ticket.get(required_field):
                req.session.flash(f"字段 '{required_field}' 必须填写才能关闭工单!", 'error')
                return False
        return True

    def apply_action_side_effects(self, req, ticket, action):
        pass
  • 启用自定义插件:在trac.ini的[components]区块添加:
[components]
custom_validator.* = enabled

方法二:配置TracTicketValidatorPlugin实现状态特定验证

如果你偏好使用TracTicketValidatorPlugin,它其实支持条件验证,可以让规则仅在closed状态生效:

在trac.ini的[ticketvalidator]区块添加规则(替换字段名和提示信息):

[ticketvalidator]
# 规则格式:字段名:条件:错误提示
closing_notes:status=closed:必须填写关闭说明才能完成工单关闭

这里的status=closed是条件判断,只有当工单状态切换为closed时,才会检查目标字段是否为空。

两种方法各有优势:方法一适合需要复杂验证逻辑的场景,灵活性更高;方法二更简洁,适合简单的必填检查,你可以根据自己的需求选择~

内容的提问来源于stack exchange,提问作者solstice333

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:17:00