在Trac中添加项目到可用报告(通过插件)

时间:2015-09-25 11:30:21

标签: plugins trac

是否可以通过插件向可用报告添加故障单报告,以便在安装插件后它会自动可用?或者是否必须使用预期的列和过滤器手动保存自定义查询?

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

1 个答案:

答案 0 :(得分:1)

您可以通过IEnvironmentSetupParticipant的实施插入报告。 env.py中的示例用法。在env.py中,报告将插入environment_created。您需要在upgrade_environment中插入报告。可以在report.py中找到插入报告的示例代码。 needs_upgrade确定是否在环境启动时调用upgrade_environment,因此您需要提供确定报告是否已存在的逻辑,如果存在则返回FalseTrue如果他们不是。如果返回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方法插入报告。

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