2010年7月31日土曜日

tipfy インストール/extensionの追加/アップグレード/使っているライブラリについて

チュートリアルが充実している訳ではないが、他のドキュメントは充実している気がするし、jinja2とかまぁ、他でも使っているもの結構あるし、開発が活発なので、これでいってみたくなった。

インストール---------------------------------
http://www.tipfy.org/wiki/guide/
のInstallationからbuildされたzipをダウンロードして解答すれば、基本的におわり。
dev_appserver.py /path/to/project/app
でサーバーを動かせる。これで、既にhello_worldのアプリが走っている。

extensionの追加----------------------------------
http://www.tipfy.org/wiki/extensions/
extensionは全て最初から入っている訳ではないので、
buildout.cfgのeggs=のところに必要なものを追加。
例えばtipfy.ext.aclなど。 使わないものは抜いていいらしい。

python2.5 bootstrap.py --distribute
は一回走らせればいいみたいだ。

その後
bin/buildout

を実行すると、extensionが追加/削除されている。

アップグレード-----------------------------------
http://www.tipfy.org/wiki/guide/upgrade/
project/versions.cfg
にバージョンが書かれているらしいのだが、[versions]以外は書かれていない。現状まだ問題はでてない。
基本はアップグレードするためには上記の
python2.5 bootstrap.py --distribute
bin/buildout
を繰り返せばいいみたい。

使われているライブラリについて-----------------------
babel:I18N, L10Nのためのライブラリ
jinja2:テンプレートエンジン
pytz:タイムゾーンライブラリ
werkzeug:WSGIのユーティリティモジュール

あった!

tipfy
http://code.google.com/p/tipfy/
http://www.tipfy.org/
はGAE用に作られたフレームワークなので、間違いなく動くはず。
http://www.tipfy.org/docs/api/tipfy.ext.acl.html
とaclが実装されているので、これを試してみる!

2010年7月30日金曜日

gae と ACLについて

ユーザ認証でも、ACLはみんな搭載してほしいのだけど、みつからない...

一応まとめてみる。

--------------
com.google.appengine.api.users
http://code.google.com/intl/ja/appengine/docs/java/javadoc/com/google/appengine/api/users/package-summary.html
UserService を使用すると、ユーザーが Google アカウントを使用した認証を行っているかどうかを確認し、ユーザーのメール アドレスを取得できます。また、ユーザーがアプリケーションの管理者かどうかを確認することもできます。

というわけで、ACLはできないっぽい。

--------------
Django-nonrel
django.contrib.auth
管理画面を出すことは成功したが、AUTHにGroupsが出てこない。allbuttonpressedでも同様だった。
ので、Groupsに対応してないのではないか。
is_superuser, is_active, is_staffは使えるようだ。

http://bitbucket.org/wkornewald/django-nonrel/src/d69349741502/django/contrib/auth/tests/basic.py
を見ると、a.groups.all(), a_user_permissions.all()がある。怪しいけど...

--------------
app-engine-patch
https://code.google.com/p/app-engine-patch/
開発終了なのだが...管理画面にいくと、あっさりGroupsが存在してるーーーーーーー

うーーーん。開発終了してるので、使わない方がいいかなぁ。
まだ、使い方もよくわかっていないが...

---------------
kay-framework
http://kay-docs-jp.shehas.net/tutorial.html#id7
is_admin, is_anonymous(), is_authenticated()を使える
デコレータはlogin_required, admin_requiredのみ
usersを拡張して、デコレータ増やせばできそうな気がするけど...

---------------
pylons
http://pylonshq.com/
ではできるみたい
http://wiki.pylonshq.com/display/pylonscookbook/Another+approach+for+authorization+in+pylons+(decorator+based,+repoze.what+like)
だけど、gaeで動くかわかんないし...

--------------
ここらでよく考えてみる。
ManyToManyが問題で、ACLのおいしいところは、
Usersが複数のGroupsにも属すことが出来るというところか。
kayのところで書いたusersを拡張して、というやり方でいけるのかなぁ...試してみるべきか。
うまくいくなら、どれでもいいような気もしてきた。
動的にGroupつくれなくても、is_eigyoとか拡張できればそれはそれでありな気もするしなぁ...


--------------
ちょっと気になる...
http://sourceforge.jp/projects/secioss-auth/
「LDAPを使ったユーザ認証のライブラリやWebシングルサインオンを行うためのプラットフォームを開発します。Webシングルサインオン機能には、オープンソースソフトウェアのsimpleSAMLphp、PHP OpenID library、mod_auth_tktを利用しています。」
gaeでも使えるらしい...

OAuth
Twitterなどのリソースを使うときに必要そう。

pirate-politics
http://code.google.com/p/pirate-politics/wiki/GettingStarted

django-nonrelをもう一度

authでgroupがでてこない...この機能が欲しいのに...と思い、もう一度一から順にやってみる。
allbuttonpressedから4つ落としてきて、testappにまず放り込む。
python manage.py runserver
で"It works"は現れるが、もちろん
http://localhost:8000/admin/
は機能しない。
まずは、authをいれたいので、settings.pyから'django.contrib.auth',のコメントアウトをはずす。
'django.contrib.addmin',を追加
urls.pyに
from django.contrib import admin
admin.autodiscover()
と
('^admin/', include(admin.site.urls)),
を追加。

管理画面はでるのだが、Usersしかでてこない。Groupsはどうしたー!!!!!

ちなみに、プロジェクトを新規につくっても、ユーザのデータベースは共通のようだ。
もう少し調べてみる。これがクリアしないと、どれで作ったらいいのか、わからーん。
allbuttonpressedを確認してみるのも手か?

microblogをやってみる。

Django X Python
にそって、microblogをやってみる。P.61の
$python manage.py startapp microblog
からだ。
it worksまではでるんだけど、cssがリンクされてない模様。ソースをみても、そうだから、まよしとする。

とりあえず、
http://yasakawa.blogspot.com/2010/06/django-nonreladmin-interface.html
を参考にしてみる。
うーーん。いろいろエラーが出てくるのだが、それはおいといても、
http://d.hatena.ne.jp/TaRO/20100726/1280156039
の人と同じようにcreatesuperuser
がない...と思ったら、settings.pyのコメントアウトされている
'django.contrib.auth'
を有効にしてmanage.py helpしたら使える!
ついでに 'django.contrib.sites','microblog'も付け加えた。
localhost:8081/admin/
で画面がでてきた。
ここで、manage.py createsuperuser
をして、ログインしてみた。
あれ?できない...

うーんと、こまったなぁ。ということで、もう一回整理。
GoogleAppEngineLauncherを使っているのに、manage.py createsuperuserとかって、トラブルのもと?
と思い、
GoogleAppEngineLauncherは停止にして、manage.py runserver
としてアクセス。ログインできた!
なんか、GoogleAppEngineLauncherとか使わずに素直にターミナルとTextMateとかで開発する方がいいのかな?
Eclipseだと、不要なエラー出し過ぎな気がする。コード補完とかは便利だけど、完璧ではないし...

Django-nonrel インストール

http://www.allbuttonspressed.com/projects/djangoappengine
にあるように、
django-nonrel
djangoappengine
djangotoolbox
django-testapp
をダウンロードして、django-testappを展開した中に
django-nonrel/django
djangotoolbox/djangotoolbox
djangoappengine
を放り込んだ。
それをEclipseに放り込んでみたのだが、エラーがでている。ほとんどi18n系のファイルだったが、あけてみると、エラーが消える。それでも、
django/core/urlresolvers.py
の中でfrom django.conf import settings
で「ないよー」といってくる。確かに調べてもない。が
http://djangoproject.jp/doc/ja/1.0/topics/settings.html
を見ると、「django.conf.settingsはモジュールではなくオブジェクトです。」と書いてあり、
django.conf.__init__.py
をみると、
settings = LazySettings()
となっている。ってことは問題なさそうだ。ほおっておこう。

ACLはどのようになるのか...

Kay Frameworkで認証はできるんだけど、ACLに関する記事がまるででてこない。
使えない?

djangoだとロールベースの権限管理/グループができるようだが、これはGAEで動くのだろうか...
試すために、django-nonrelを試してみることにする。