跳转到主要内容

根据自定义业务逻辑“克隆”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 (5.1 kB 查看哈希)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面