カテゴリー: Pylons

Home / カテゴリー: Pylons

あらためてPyramid

2013-09-09 | Pylons, Pyramid, Python | コメントはまだありません

なんかPyConも間近なんですが今年は行かない予定。モチベーションが。

そんなアレなのも何なので、重い腰を上げて久々にPyramidやらをさわろうと一念発起。
もうなんにもおぼえてないくぽー

さしあたり昔に書き散らしたいろんなアプリ(たいていはPylons)の残骸をかき集めて、それっぽい骨組みの構築開始。
scaffoldでjinja2+alchemyとかのなんかいいのがあればいいんだが無いっぽいので、両scaffoldで生成したプロジェクトの中身を見ながら合成。手でちくちく。scaffold自分で書けるようにならないとこの馬鹿馬鹿しい作業が一生ついてまわるのな。
で、そろそろ目鼻ついてきたかなというところで困ったのがルーティング。
なんか様子が変だ。

map.connectからconfig.add_routeへ

なんかルーティングの登録も仕組みが変わってるのね。
route とビューのサンプル — The Pyramid Cookbook v0.1 (翻訳)

「3.可変のコントローラとアクション。」のあたり。

Pyramid ではルーティング変数によってビュークラスを選択することは できません。

まてw
なにさらっと重要なこと書いてんだ。どうすんのそれ。

# Pylons
map.connect(“/{controller}/{action}”)
map.connect(“/{controller/{action}/{id}”)

こういうのできないって。
えー?

一個ずつ

config.add_route(“help”, “/help/{action}”)

こう書けってことかなあ。正気とは思えんなあ。なんの不都合があってそうしたんだろう。

と思いきや

“pyramid_routehelper” は、 Pylons の map.resource のように動作する config.add_resource メソッドを提供します。

もう。
なんなの。

websetup.pyで困る

2011-12-24 | Pylons, Python | コメントはまだありません

アプリの初期設定を投入するときに使う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

2011-12-22 | NDI, Pylons, Python | コメントはまだありません

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']))

うん。

Pylons + MongoKit + i18n

2011-12-01 | MongoDB, Pylons, Python | コメントはまだありません

多国語対応とかやってみたい。
ということで、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

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

PylonsのHelpersでconfigをつかうには?

2011-11-30 | kvs, MongoDB, Pylons, Python | コメントはまだありません

いやわかんないんですけど。
ちょっと詰まったものの時間切れなので備忘としてメモ。

どうなんだろと思ってhelpers.pyの先頭あたりで読んでみてprint
{‘pylons.app_globals’: None, ‘pylons.request_options’: {‘e以下略

厳しいなー
SQLAlchemy経由でなんかやってたときは困らなかったけど、Mongokitだとpylons.app_globalsにおいてあるconnection呼べないと動かせない。
こういうときのお作法はどうなってるんだろう。
Noneじゃなあ。実際動かしたときにもNoneのままかどうか確かめてみよう。

結果:
呼べてた。

def conftest():

    from pylons import config
    print(config)
    connection = config['pylons.app_globals'].connection
    print(connection)

なんだー