高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

Tracマクロ つづき

Tracマクロつづき

やっとわかりました。マクロ内で引数として渡されてきているenvオブジェクトの使い方。
――で、わかったことは、envのリファレンスのようなものは存在しないということ。つまり、ソースを読めと(^^ゞ
というわけで上記サイトからリンクされているenv.pyの内容を見て、何とかわかりました。

# -*- coding: utf-8 -*-
def execute(hdf, args, env):
  str = ""
  for n in env.get_known_users():
    str += n[0] # ユーザー名
    str += n[1] # ユーザー表示名
    str += n[2] # メールアドレス
    str += "<br />"
  return str

こんな感じ。とりあえずenv.pyの中に書かれているプロパティやメソッドにアクセスすることで、その他のデータも取得できそうです。なんだかそのうちリファレンスでも作った方が良さそうですね。多分そうそう時間とれないですが・・・。


env.get_known_users()の戻り値が

yield username, name, email

となっていて「えっ」という感じでしたが、 これについてはforで回せばいいだけなので、そんなに面倒な話ではありません。
# まあ、C#でyield文を使っていれば、これくらいで躓くことはなかったんでしょうが。
引数のhdfの中身はよくわかりませんが、とりあえず現状必要ではないみたいなので、気にしないことに。ほかのスクリプトのソースを見た感じだとHTTPリクエストに関する何かが入っていそうな気がしますが。


ところでこれでユーザー名はわかったのですが・・・、マクロで出力するフォームのメソッドがpostだと、送信したときに変なところに飛んでしまいますね。getだとちゃんと現在のページに戻れるようですが。やはりソースを読むなりして何とかしないといけないのかな。