根据自定义业务逻辑“克隆”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 可以附带一个强大的可重用克隆策略库。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java编辑并重新运行spring引导单元测试,无需重新加载上下文即可加快测试速度   为什么我不能做演员?   java为什么是线程。join通常用于停止安卓中的线程   java从weblogic服务器调用JSON POST REST服务时收到400:错误请求   java在DeviceAdmin模式禁用时设置身份验证?   java SortedMap的keySet()能否始终安全地强制转换到SortedSet?   安卓 java。lang.NoSuchMethodException可包裹类   java JOGL库安装   javatomcat内存管理   java使用getString()中的变量   java将最小星号设置为评级栏   Java中字符串相等的println()方法。。。它到底是如何工作的?   java如何从文本中输出的数组中放入随机图像