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だとちゃんと現在のページに戻れるようですが。やはりソースを読むなりして何とかしないといけないのかな。