websetup.pyで困る

アプリの初期設定を投入するときに使うwebsetup.py。
paster setup-app development.iniみたいにつかうやつ。
SQLAlchemyなら困らないんですが、mongokitなんかでデータ投入しようと思うと、どーもconfig読んでくれていない気がする。
どうやると読んでくれるのかなー

(development.ini)
[app:main]
...
mongodb.host = localhost
mongodb.port = 27017
mongodb.db   = hoge

conf[‘mongodb.host’]
よべたわー
よくみたらsetup_appが
setup_app(command, conf, vars)
こうじゃんね。なんだー

pylons make url & redirect

from pylons import url
url(controller="main",action="hoge")
>>>'/main/hoge'

なので、

from pylons.controllers.util import redirect
redirect(url(controller="main",action="hoge"))

なわけなのね。
書いてあるimportはcontrollerをpasterで生成するときにもともと書いてある。

pathinfo="/hoge/fuga"
ret = routing.make_map(pylons.config).match(pathinfo)
redirect(url(controller=ret['controller'], action=ret['action']))

うん。

iSSHを入れてみた


あたしはiPhoneつかってるんですが、iSSHというアプリを見つけました。
iPhone/iPadからターミナル使えますよというものなんですが、なかなか面白いです。


さくらのVPSにログインして、paster shellとかやってみた画面。syntax errorとかださいことになってるのは気にしてはいけない。
細かな操作はさすがにiPhoneからやるもんではないですが、出先でログ見ようかとか、なんか再起動しておこうとか、そういったことくらいには使えるんじゃないかしら。
BrueToothキーボードとおかお持ちのiPadユーザには便利そう。

キーボードで下のバーが隠れちゃうんで、emacsとかは向かないです。viでしょうねーこれは。

Pylons + MongoKit + i18n

多国語対応とかやってみたい。
ということで、helper.pyに

def locale(data_dict):

    """
    dbの値(mongo)において、
    ユーザが設定している言語の文字列を優先して返す
    ない場合は言語優先順に文字列を検索して返す
    """

    if type(data_dict) != dict:
        return None

    if is_login():
        lang = session.get('userinfo', None).get('lang', None)

    val = data_dict.get('lang', None)
    if val is None:
        for lang in langlist():
            val = data_dict.get(lang, None)
            if val:
                break
    return val

def langlist():
    ll = [
        'en',   # 英語
        'ja',   # 日本語
        'es',   # スペイン語
        'fr',   # フランス語
        'it',   # イタリア語
        'ru',   # ロシア語
        'nl',   # オランダ語
        'tw',   # 繁体字台湾
        'cn',   # 簡体字中国
        'kr',   # 韓国語
        ]
    return ll

こんなの書いてたんだけど、そんなのとっくにあった。ちゃんとロケール見て切り替えるんだー。そこまでやんなきゃだめだったかー。
というわけで徒労。まあいいもんみっけたしいいか。
あたしのかいたやつ危なっかしいとこ放置してたしね……。