« SUSE YaST2の設定ツール | Main | Velocityでpublicフィールド »

2008.05.06

Trac0.11 ワークフローへの権限追加

 TICKET_* という権限がいくつかありますが、ワークフローをカスタマイズするにあたり「この権限がある場合のみ」というルートを構築したくなる場合も。

 ってことで、試しに「チケットをクローズできる」権限ってのを追加してみました。なお、チケットをクローズできる権限がない人でも「invalid」「duplicate」の2つだけは選択可能というようにもしています。

 こんな感じのソースをプロジェクトフォルダのpluginsフォルダに保存。ファイル名は、TicketClose.pyとでもしてみます(Pythonは詳しくないので、CodeReview.pyを元に作っています)。

from genshi.builder import tag

from trac.core import implements,Component
from trac.ticket.api import ITicketActionController
from trac.ticket.default_workflow import ConfigurableTicketWorkflow
from trac.perm import IPermissionRequestor
from trac.config import Option, ListOption
from trac.util.compat import set

class CloseActionController(Component):

    implements(ITicketActionController, IPermissionRequestor)

    def get_permission_actions(self):
        return ['TICKET_CLOSE']

CodeReview.pyでは他にもいろいろな処理が記述されていますが、よく理解できていないのでとりあえずざっくりと削除し、権限部分のみを定義してみました(とりあえず、この状態でAdminページで権限追加ができるようになりました)。で、trac.iniに対して、以下のような内容を記述(その他の部分は省略)。

resolve_self = new,assigned,reopened -> closed
resolve_self.name = resolve
resolve_self.operations = set_resolution
resolve_self.permissions = TICKET_MODIFY
resolve_self.set_resolution = invalid,duplicate

resolve = new,assigned,reopened -> closed
resolve.operations = set_resolution
resolve.permissions = TICKET_CLOSE

 この状態の場合、TICKET_CLOSEの権限を有していない場合でもTICKET_MODIFYの権限を有していればresolveを行うことが可能ですが、invalidduplicateしか選択できません。TICKET_CLOSEの権限を有している場合は、加えてfixedなども選択できるようになります。

 ただ、TICKET_CLOSEとTICKET_MODIFYの両方の権限を持っている場合、resolveが2行表示されるという難点があります・・・(^^; resolve_selfを行うことができる権限をさらに追加すればある程度は回避できますが、それでもTICKET_ADMINやTRAC_ADMINの権限を有している場合はやはりどうしようもなく。

 プラグイン用のソースでそのあたりの制御を記述できるのかもしれませんが・・・(また、ログインしているユーザ=Ticketの記入者の場合のみ選択できるACTIONの追加ってのもできたりするのかもしれません)。

|

« SUSE YaST2の設定ツール | Main | Velocityでpublicフィールド »

Subversion・Trac・etc.」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Trac0.11 ワークフローへの権限追加:

» Tracで権限の種類を追加 [気の向くままに・・・]
Trac0.11 ワークフローへの権限追加 パーミッションを追加するためのソース [Read More]

Tracked on 2008.07.26 15:36

« SUSE YaST2の設定ツール | Main | Velocityでpublicフィールド »