2008年5月13日

GAE

Google App Engineのアカウントもらったあたりから、忙しさにかまけてほったらかしになってた。
いまさらだけど、いろいろやろうと思う。

Pylons動かそうかとも思ったけど、とりあえず用意されているフレームワークを試してみる。
とはいえ、かったるい部分はまとめておこう。
メモ代わりに貼り付け。

from google.appengine.ext import webapp
from google.appengine.api import users
from google.appengine.ext.webapp import template
from google.appengine.ext import db

import model
import os

templates_dir = os.path.join(os.path.dirname(__file__), "templates")

def render(name, **vars):
path = os.path.join(templates_dir, name)

return template.render(path, vars)

def secure(method):
def wrap(self, *args, **kwargs):
user = users.get_current_user()
if user:
return method(self, *args, **kwargs)
else:
self.redirect(users.create_login_url(self.request.uri))
return wrap

def expose(template):
def decorator(method):
def wrap(self, *args, **kwargs):
self.response.headers['Content-Type'] = 'text/html;charset=utf-8'
data = method(self, *args, **kwargs)
body = render(template, **data)
self.response.out.write(body)
return wrap
return decorator


認証デコレータと、テンプレートレンダラ
あと、テンプレート呼び出しを簡単にするレンダラ。
exposeは、まあBuffetの劣化コピーだが、とりあえずwebapp.RequestHandlerにあわせてある。
テンプレートはとっととTempitaに変更することにしよう。
Blogged with the Flock Browser