使用言語を切り換えるミドルウェアのアイデア

20 views
Skip to first unread message

Toshiharu Moriyama

unread,
Sep 23, 2011, 3:01:05 PM9/23/11
to kay-us...@googlegroups.com
いま、 Twitter アカウントで認証をしているのですが、そのアカウントで使用してる言語で
表示する為に、ミドルウェアを作ることにしました。

思い通りに出来たのですが、一点だけどうしてもアイデアが浮かばない所があります。

============================================================
from kay.conf import settings

class AuthLanguage(object):
  def __init__(self):
    pass
 
  def process_response(self, request, response):
    '''try:
      if response.mimetype != 'text/html':
        return response
    except AttributeError:
      return response'''

    try:
      if request.user.is_anonymous():
        response.delete_cookie(settings.LANG_COOKIE_NAME)
        return response
    except AttributeError:
      return response

    cookie = request.cookies.get(settings.LANG_COOKIE_NAME)
    lang = request.user.raw_user_data['lang'] # for Twitter
    if not cookie or cookie != lang:
      response.set_cookie(settings.LANG_COOKIE_NAME, lang,
                          max_age=settings.LANG_COOKIE_AGE)
    return response
============================================================

コメントしている部分です。
Ajax などで、非同期通信して結果とメッセージを取得しているアプリだと
ログインしている状態で、 Twitter の使用言語を変更すると、その言語で
メッセージを返してしまいます。

あと、この
process_response は一回だけ呼ばれるわけでは無いので、
それにも対応したいと思っています。

例外処理になっているのは、response オブジェクトと request オブジェクトに
必ず、参照したいオブジェクトがあるとは限らない為にやってます。

よいアイデアはありませんでしょうか?

p.s.
クラスの名前も気に入らなかったりします(^^;)


Reply all
Reply to author
Forward
0 new messages