是否可以通過插件將Ticket Report添加到可用報告中,以便在安裝插件後它會自動可用?還是必須手動保存一個自定義查詢與預期的列和過濾器?將項目添加到Trac中的可用報告(通過插件)
如果可以通過python代碼來實現,那麼Trac接口的實現是什麼?
是否可以通過插件將Ticket Report添加到可用報告中,以便在安裝插件後它會自動可用?還是必須手動保存一個自定義查詢與預期的列和過濾器?將項目添加到Trac中的可用報告(通過插件)
如果可以通過python代碼來實現,那麼Trac接口的實現是什麼?
您可以通過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_version
和get_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
模塊並修改插件代碼中的導入,但不必更改任何主插件邏輯。