@route('/exit')
@route('/exit/')
def exit_view():
del_cookie()
redirect("/")
И кстати заодно файлик для работы с куками:Листинг cookie.py:
@route('/login')
#!/usr/bin/env python
# encoding: utf-8
from bottle import route, run, view, request, redirect, response, post, abort, debug, error
import logging
import hmac
import uuid
import base64
from google.appengine.ext import db
from datetime import datetime
from datetime import timedelta
from models import Users
from oauth import TwitterClient
def generate_rnd_hash(uid):
h = hmac.new(str(uid))
h.update(uuid.uuid4().bytes)
return base64.b64encode(h.digest() + uuid.uuid4().bytes, ['+', '-']).replace('=', '').replace('+', '')
def set_cookie(uid, user_info = {}):
last_error = "ok"
hash = generate_rnd_hash(uid)
dt = datetime.utcnow() + timedelta(seconds = 60*60*24*7)
exp_gmt = dt.strftime("%a, %d-%b-%Y %H:%M:%S GMT")
user = Users.get_by_key_name(str(uid))
if not user:
user = Users(key_name=str(uid))
if user_info:
user.uid = user_info["uid"]
user.username = user_info["username"]
user.name = user_info["name"]
user.image = user_info["image"]
user.token = user_info["token"]
user.secret = user_info["secret"]
user.hash = hash
user.hashex = dt
user.put()
try:
response.set_cookie('sid', hash, secret = None, \
**{'expires' : exp_gmt, 'path' : '/'})
except Exception, msg:
logging.error(msg)
def del_cookie():
uid = get_cookie()
user = Users.get_by_key_name(str(uid)) if uid else None
if user:
user.delete()
try:
response.set_cookie('sid', "", secret = None, \
**{'path' : '/'})
except Exception, msg:
logging.error(msg)
def get_cookie():
hash = request.get_cookie("sid")
logging.debug(hash)
key = Users.all(keys_only=True).filter("hash = ", hash).fetch(1)
key = long(key[0].name()) if key else 0
return key