【问题标题】:Adding item to Available Reports in Trac (via Plugin)将项目添加到 Trac 中的可用报告(通过插件)
【发布时间】:2015-12-23 05:28:53
【问题描述】:

是否可以通过插件将工单报告添加到可用报告中,以便在安装插件后自动可用?还是必须手动保存带有预期列和过滤器的自定义查询?

如果可以通过python代码实现,那么要实现的Trac接口是什么?

【问题讨论】:

    标签: plugins trac


    【解决方案1】:

    您可以通过IEnvironmentSetupParticipant 的实现插入报告。 env.py 中的示例用法。在env.py 中,报告插入environment_created。您需要在upgrade_environment 中插入报告。插入报告的示例代码可以在report.py 中找到。 needs_upgrade 确定在 Environment 启动时是否调用 upgrade_environment,因此您需要提供确定报告是否已存在的逻辑,如果存在则返回 False,如果不存在则返回 True。如果返回True,则将调用upgrade_environment(对于您的情况,environment_created 可以只是pass,也可以直接调用upgrade_environment,后者是#8172 中讨论的小优化)。有关report 表的信息,请参阅Database Schema

    在 Trac 1.2(尚未发布)中,我们尝试通过向 DatabaseManager class 添加方法来简化数据库的使用。 DatabaseManager for Trac 1.1.6 包括方法 set_database_versionget_database_version。当检查数据库表是否需要升级时,这对于减少IEnvironmentSetupParticipant.needs_upgrade 中所需的代码量很有用(更简单的是只调用DatabaseManager.needs_upgrade)。还有一个insert_into_tables 方法可以用来插入报告。

    也就是说,我不确定您是否需要使用set_database_versionsystem 表中为您的插件添加一个条目。您可能只查询report 表并检查您的报告是否存在,使用该检查从IEnvironmentSetupParticipant.needs_upgrade 返回一个布尔值,这将确定IEnvironmentSetupParticipant.upgrade_environment 是否被调用。如果您正在为 Trac 1.0.x 进行开发,您可以从 Trac 1.1.6 中的 DatabaseManager 类中复制代码。使用CodeReviewerPlugin 可以看到另一种方法,为此我制作了一个compat.py 模块,添加了我需要的方法。 compat.py 方法的优点是可以从 DatabaseManager 类复制方法,而不会污染代码库的主要模块。将来,当您的插件不再支持 Trac compat.py 模块并修改插件代码中的导入,而不必更改任何主要插件逻辑。

    【讨论】:

      猜你喜欢
      • 2015-12-21
      • 2014-09-02
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多