« XML-RPC Pluginで関数を追加する | Main | 医療制度 »

2008.09.21

ログインユーザに関するTicket一覧

 「チケットを見る」をクリックした場合に表示されるリストにおいては$USERがログインユーザ名に自動的に置き換えられます。しかし、queryリンクの場合は反応してくれません・・・(TicketQueryマクロの場合は0.11以降は$USERは反応します)。

 URLパラメータなしでqueryを呼び出した場合&TicketQueryマクロの場合と、queryリンクの場合の違いを見るため、とりあえず、ticket/query.pyのソースを確認。
 URLパラメータなしでqueryを呼び出した時は、

if user:
    qstring = qstring.replace('$USER', user)
constraints = Query.from_string(self.env, qstring).constraints

という感じで、明示的に文字列置換を行ってからQueryの再構築を行っているようです。TicketQueryマクロの場合は・・・辿っていくと、get_sql(self, req=None, cached_ids=None):関数のところですかね。SQL文を構築するタイミングで置き換えているような感じです。

 TicketQueryマクロはそれはそれで便利なのですが、表示対象件数が多くなってきた時に改ページ機能がない(maxを指定しなければ全件が表示されますが、やはり、queryページのように指定した件数単位での表示にしたいところ)というのがネック。

 ってことで、何とかqueryリンクでも$USERが反応するようにならないか、と挑戦してみることに。試しに、ticket/query.pyのprocess_request関数のif not constraints and not 'order' in req.args:に対するelse文として、

else:
  if req.authname and req.authname != 'anonymous':
    user = req.authname
    if user:
      for field,vals in constraints.items():
        for val in vals:
          if val == '$USER':
            vals.remove(val)
            vals.append(user)
            constraints[field] = vals


のような感じで書くと、とりあえずそれっぽい動きはしてくれました・・・が、こんなのでいいんだろうか??(^^; どこか他に影響が及んでいそうな気がしないでもないです。

※constraintsの中身は、String/Listのペアで値が格納されているようなので、上記のような感じのループ構成になっています。

ただ、「~で終わる」の扱いになってしまう場合があるような(問題なく表示される場合もあるっぽいですが、その動きの違いがよくわからない・・・)。

|

« XML-RPC Pluginで関数を追加する | Main | 医療制度 »

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 ログインユーザに関するTicket一覧:

« XML-RPC Pluginで関数を追加する | Main | 医療制度 »