Tracのプラグインの作成

とりあえずその場で動けばokなプラグインを書いてみる。
Tracの環境を一つ用意して、TRAC_ADMINの権限を設定しておく。
用意したTrac環境のpluginsディレクトリに以下のhello.pyを作成する。

from trac.core import *
from trac.web.api import IRequestHandler

class HelloPlugin(Component):
    implements(IRequestHandler)

    def match_request(self, req):
        return req.path_info.startswith('/hello')

    def process_request(self, req):
        req.send_response(200)
        req.send_header('Content-Type', 'text/plain')
        req.end_headers()
        req.write('hello')

作成したらtracの環境をリロードする。modwsgiならapacheの再起動など。
プラグイン管理の画面を見るとhelloが追加されている。

/hello にアクセスすると、"hello"と表示される。
再利用を想定するならsetup.pyを書いたりする。
今回はIRequestHandlerをimplementsしたけども、ほかにもいろいろなインターフェースがあります。チケットの作成、更新にフックするITicketChangeListenerなんかは結構使う。
会社ではTracのチケットの作成変更通知をskypebotが行うようにプラグインを書いてます。