根据自定义业务逻辑“克隆”trac票证的可插入框架
trac-NewTicketLikeThisPlugin的Python项目详细描述
说明
NexTigKeToApple插件将一个“克隆”按钮添加到现有的机票中, 它允许您创建一个新的票据,其字段派生自原始票据 如果你有适当的许可,就开罚单。
它基于tracopt.ticket.clone.ticketclonebutton扩展名 带有trac核心的船。与那个扩展不同的是,newticketlikethispislugin 定义并使用可插入接口来实现自定义策略 以确定从原始票据派生新票据的方式。 这允许基于以下内容提供灵活、定制的业务逻辑。 团队的需求和工作流程。而且,这种新的 允许您配置克隆票证所需的权限,而 核心ticketclonebutton硬编码票证管理权限。
默认情况下,在^{tt2}中提供了两个策略$ 模块:
- SimpleTicketCloner模拟 core tracopt.ticket.clone.ticketclonebutton扩展名:所有字段 从原始票据被克隆,并且“摘要”和“描述” 字段被修改以表示从中克隆它们的票据。
- DerivedFieldsTicketCloner可以完全忽略某些字段 基于配置设置;可以从 旧票采用genshi模板,也可通过配置; 并从原始票据中逐字克隆所有剩余字段。
更复杂的策略可能实现用于派生新票据的自定义逻辑 值基于现有票证字段的值,或使用 基于票证类型的备用克隆策略。
配置
要使用该插件,请将其安装在trac环境中并启用 trac.ini中的组件:
[components] newticketlikethis.* = enabled
默认情况下,这会将“克隆”按钮添加到票证视图中,并且 将使用SimpleTicketCloner组件克隆票证。 克隆票证需要TICKET_ADMIN权限。
选择策略
要使用不同的票证克隆策略,请确保启用 必要的组件,然后设置newticketlikethis.ticket_cloner 选项在trac.ini中引用组件的名称,如下所示:
[newticketlikethis] ticket_cloner = ExcludedFieldsTicketCloner
使用备用表单处理程序
默认情况下,“克隆”按钮将向当前 trac环境的/newticket处理程序。您可以指定替代表单 提交(例如其他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
这将允许您使用旧票证的报告者cced创建克隆票证; 旧票证的里程碑和组件已命名并设置为新票证的关键字 票证;新票证的描述、摘要和报告人留空;以及所有其他 旧票据的字段逐字传输到新票据。
定制
实现自己的自定义策略也很容易。看看 在newticketlikethis.policies中寻找灵感的代码。
如果实现了要共享的自定义策略, 请随意将其作为补丁提交,以便NewTicketLikeThisPlugin 可以附带一个强大的可重用克隆策略库。