2015-09-25 44 views

回答

1

您可以通過IEnvironmentSetupParticipant的實施插入報告。用於env.py的示例用法。在env.py中,報告插入environment_created。您需要在upgrade_environment中插入報告。插入報告的示例代碼可以在report.py中找到。 needs_upgrade決定是否在環境啓動時調用upgrade_environment,因此您需要提供確定報告是否已存在的邏輯,如果它們存在則返回False,否則返回。如果返回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方法。

也就是說,我不確定你需要在system表中使用set_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模塊並修改插件代碼中的導入,但不必更改任何主插件邏輯。

相關問題