Skip to content

Instantly share code, notes, and snippets.

@michilu
Created May 23, 2011 22:24
Show Gist options
  • Save michilu/987763 to your computer and use it in GitHub Desktop.
Save michilu/987763 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
import pickle
from google.appengine.ext import db
from kay.ext.gaema.models import GAEMAUser
class User(GAEMAUser):
name = db.StringProperty()
@classmethod
def get_or_insert(cls, key_name, user):
ds_user = cls.get_by_key_name(user['email'])
if not ds_user:
user['_service'] = 'goog_hybrid'
ds_user = cls.store_user_data(key_name, user)
elif ds_user.raw_user_data != user:
ds_user.user_data = pickle.dumps(user, pickle.HIGHEST_PROTOCOL)
ds_user.put()
return ds_user
@classmethod
def store_user_data(cls, key_name, user):
ret = cls(key_name=user['email'],
name=user['name'],
user_data=pickle.dumps(user, pickle.HIGHEST_PROTOCOL),
service=user['_service'])
ret.put()
return ret
# -*- coding: utf-8 -*-
from kay.ext.gaema.utils import (
create_gaema_login_url, create_gaema_logout_url, get_gaema_user
)
from kay.ext.gaema.services import GOOG_HYBRID
from kay.utils import (
render_to_response, url_for
)
from main.models import User
def index(request):
user = get_gaema_user(GOOG_HYBRID)
if user is None:
gaema_login_url = create_gaema_login_url(GOOG_HYBRID, url_for("main/index"))
return render_to_response('main/index.html', vars())
gaema_logout_url = create_gaema_logout_url(GOOG_HYBRID, url_for("main/index"))
email = user['email']
user = User.get_or_insert(email, user)
return render_to_response('main/login.html', vars())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment