根据自定义业务逻辑“克隆”Trac票据的插件框架
项目描述
描述
NewTicketLikeThisPlugin为现有票据添加了“克隆”按钮,如果您有适当的权限,可以创建一个新票据,其字段来自原始票据。
它基于Trac核心中提供的tracopt.ticket.clone.ticketclonebutton扩展。与该扩展不同,NewTicketLikeThisPlugin定义并消费了一个可插拔接口,以实现自定义策略,以确定新票据是从原始票据派生的。这允许根据团队的需求和工作流程提供灵活、定制的业务逻辑。此外,NewTicketLikeThisPlugin允许您配置克隆票据所需的权限,而核心的ticketclonebutton将TICKET_ADMIN权限硬编码。
默认情况下,在newticketlikethis.policies模块中提供了两种策略
SimpleTicketCloner模仿了核心tracopt.ticket.clone.ticketclonebutton扩展的行为:克隆原始票据的所有字段,并将“摘要”和“描述”字段修改为表示它们是从哪个票据克隆的。
DerivedFieldsTicketCloner可以根据配置设置完全忽略某些字段;可以使用Genshi模板从旧票据中派生新字段的值,也可以通过配置进行;并且将原始票据的所有剩余字段逐字克隆。
更复杂的策略可能会根据现有票据字段的值实现自定义逻辑来派生新票据值,或者根据票据的类型使用基于票据的替代克隆策略。
配置
要使用此插件,请将其安装到您的 Trac 环境中,并在 trac.ini 中启用其组件。
[components] newticketlikethis.* = enabled
默认情况下,这将向工单视图添加“克隆”按钮,并使用 SimpleTicketCloner 组件来克隆您的工单。克隆工单需要 TICKET_ADMIN 权限。
选择策略
要使用不同的工单克隆策略,请确保启用任何必要的组件,然后在 trac.ini 中设置 newticketlikethis.ticket_cloner 选项以引用组件名称,如下所示
[newticketlikethis] ticket_cloner = ExcludedFieldsTicketCloner
使用备用表单处理器
默认情况下,“克隆”按钮将向当前 Trac 环境的 /newticket 处理程序提交 POST 请求。您可以使用以下方式指定备用表单提交(例如,不同 Trac 实例的 /newticket 处理程序)
[newticketlikethis] ticket_clone_form_action = http://trac.example.com/main/newticket ticket_clone_form_method = GET
这两个选项都可以省略。
配置权限
默认情况下,“克隆”按钮仅在用户具有 TICKET_ADMIN 权限时才会显示。您可以使用 newticketlikethis.ticket_clone_permission 选项更改所需的权限
[newticketlikethis] ticket_clone_permission = TICKET_CREATE
DerivedFieldsTicketCloner
如果启用,DerivedFieldsTicketCloner 将查找额外的配置选项 newticketlikethis.excluded_fields 以确定要排除哪些字段。这应该是一个逗号分隔的工单字段列表。默认情况下,不排除任何字段。
它还会查找 newticketlikethis.derived_fields 选项以确定如何从现有工单推导新的字段值。这应该是一个映射到新字段值的 Genshi 模板列表。
例如,您可以使用以下 trac.ini 配置
[newticketlikethis] ticket_cloner = DerivedFieldsTicketCloner excluded_fields = description, summary, reporter derived_fields = $ticket.reporter->cc, milestone:$ticket.milestone component:$ticket.component->keywords
这将允许您创建带有旧工单报告者的克隆工单;将旧工单的里程碑和组件名称作为关键字设置在新工单上;新工单的描述、摘要和报告者留空;并将旧工单的所有其他字段直接转移到新工单上。
自定义
同样容易实现自己的自定义策略。查看 newticketlikethis.policies 中的代码以获得灵感。
如果您实现了一个希望分享的自定义策略,请随时将其作为补丁提交,以便 NewTicketLikeThisPlugin 可以附带一个强大的可重用克隆策略库。
项目详情
trac-NewTicketLikeThisPlugin-0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e565ca9d995e2d784cd7b634c5f651c75a9c4ca47c54d04ceeb95cc43c18a5a7 |
|
MD5 | b20ab6d9d42d32e774982605d82bb291 |
|
BLAKE2b-256 | 5150e6d5bbe02a2920b439528f87be170fbe2c0258943dcee2a1300634672010 |