Xen/KVM Virtualization Management Application
  • 日本語
  • English

Karesansui Wiki


Karesansuiフレームワークの提供する関数/変数リファレンス - コントローラー(gadget)

※MVC別に分類します。

このページではMVCのController部分のリファレンスを紹介します。


gadget(Controller)

gadgetは各ファイルが一つのリソース(URL:RESTful)になります。
作成手順は 新しいページを作ってみる を参照してください。


利用可能なメソッド, 変数

gadgetクラスにはHTTP Methodに合わせて _GET, _POST, _PUT, _DELETE がありますがその中で利用可能なメソッド, 変数に以下のようなものがあります。

  • param : gadgetファイル内に定義した、urls変数で指定したURLの正規表現部分が設定されています。
  • params : GET, POSTパラメタが設定されています。
  • self.DELETE : スーパクラスのDELETEメソッド(lib/rest.pyを参照してください)
  • self.GET : スーパクラスのDELETEメソッド(lib/rest.pyを参照してください)
  • self.POST : スーパクラスのDELETEメソッド(lib/rest.pyを参照してください)
  • self.PUT : スーパクラスのDELETEメソッド(lib/rest.pyを参照してください)
  • self._ : _("hoge")と利用するだけで、国際化(gettext)が利用できます。詳しくは 国際化してみるを参照ください。
  • self.__method__ : リクエストされたHTTP Methodが設定されています。example) "GET"
  • self.__module__ : gedgetクラスのモジュールパスが設定されています。example) "karesansui.gadget.hoge"
  • self.__template__ : メディアタイプ、テンプレートのファイル名(MVCのview名※拡張子は除く)、テンプレートのディレクトリ名がdict(辞書)で設定されています。
example) <Storage {'media': 'html', 'file': 'host', 'dir': 'host'}>
  • self.chk_guestby1 : URLに含まれるパスを利用してゲストOSが存在しているかチェックする。引数にはparamを利用します。
  • self.chk_hostby1 : URLに含まれるパスを利用してホストOSが存在しているかチェックする。引数にはparamを利用します。
  • self.download : クライアントへファイルをダウンロードする際に利用します。 ※1
  • self.input : クライアントからのGET、POSTパラメタが辞書(dict)で設定されています。
  • self.is_html : リクエストURLの拡張子が、.htmlか
    テンプレートファイルの拡張子(.html)が選ばれます。
  • self.is_json : リクエストURLの拡張子が、.jsonか
    テンプレートファイルの拡張子(.json)が選ばれます。
  • self.is_mode_input : リクエストパラメータに、mode=inputがある場合にTrueが設定されます。
    テンプレートファイルの拡張子(.input)が選ばれます。
  • self.is_part : リクエストURLの拡張子が、.partか
    テンプレートファイルの拡張子(.part)が選ばれます。
  • self.is_standalone : リクエストパラメータに、standalone=1がある場合にTrueが設定されます。
    .partのようなHTMLの一部を出力する場合のテストに使用します。.partファイルの前後にHTMLタグを自動で付加します。
  • self.is_xml : リクエストURLの拡張子が、.xmlか
    テンプレートファイルの拡張子(.xml)が選ばれます。
  • self.languages : ログインしているユーザの言語(現在はenとjaがサポートされています)のリストが設定されています。
  • self.logger : ログ出力オブジェクトです。
example)
self.logger.debug("hoge") # /var/log/karesansui/application.logに出力されます。
  • self.logger_trace : プログラムエラーログ出力オブジェクトです。
example)
self.logger.debug("hoge") # /var/log/karesansui/error.logに出力されます。
  • self.me : ログインしているユーザのUser情報が設定されています。
  • self.orm : Karesansuiデータベースへのセッションが設定されています。これを利用しデータベースアクセスを行います。
  • self.pysilhouette : pysilhouette(ジョブマネージャー)データベースへのセッションが設定されています。これを利用しデータベースアクセスを行います。
  • self.view : テンプレートへデータを渡したい際に利用します。
example)
self.view.hoge = "hogehoge" # テンプレートでは ${hoge} を記述するだけで hogehoge が取得できます。
 



※1

ダウンロードを行う方法は3種類あります。

  • 通常使用されるHTMLやXML、JSONをクライアントに返却します。一般的なWebアプリケーションで利用される形式です。
  • すでに存在するファイルを出力します。※一般的なファイルダウンロード時に利用します。
example) 
self.download.file = "ファイルパス" 
self.download.type = OUTPUT_TYPE_FILE (lib.restをインポートします)
* IOストリームを利用して出力します。※クライアントがタイムアウトするような巨大なファイルや、処理をしながら出力する際に利用します。
example)
self.download.stream = IOオブジェクト
self.download.type = OUTPUT_TYPE_STREAM

※以下をTrueにすることで出力したあとに元のファイルを削除します。

self.download.once = False


_GET, _POST, _PUT, _DELETEメソッドのreturnについて

return True : HTTP Responseコード200で処理されます。
return False : HTTP Responseコード500で処理されます。

その他のHTT Responseコードで処理するには

return web.xxxx()

example) return web.notfound()
h3. 対応しているHTTP Response コード
# 200, 201, 202
"ok", "created", "accepted",

# 301, 302, 303, 304, 407, 408
"redirect", "found", "seeother", "notmodified", "tempredirect", "requesttimeout" 

# 400, 401, 403, 404, 405, 406, 409, 410, 412
"badrequest", "unauthorized", "forbidden", "nomethod", "notfound", "notacceptable", "conflict", "gone", "preconditionfailed",

# 500
"internalerror",

Karesansui_MVC_Controller.png (29.9 KB) funagayama kei, 11/14/2010 01:15 AM

Also available in: HTML TXT