def get_or_create_weibo_user(client, code): res = client.request_access_token(code) # print "token:", str(res.access_token), "expires: ", res.expires_in token = res.access_token expires_in = res.expires_in client.set_access_token(token, expires_in) # first, try to get user from the mcache user = cache.get(str(token)) if user: print "get_or_create_weibo_user, from cache: %s %d" % (str(user), user.id) #try: # mcache_set(str(user.id), user) # return user #except DetachedInstanceError: # print "merge user ...." # user = db.session.merge(user) # mcache_set(str(user.id), user) # return user user = db.session.merge(user) print "get_or_create_weibo_user, cache db merge: %s %d" % (str(user), user.id) return user auth_id = "weibo_" + str(res.uid) user = User.query.get_by_authid(auth_id) if not user: weibo_user = client.get.users__show(uid=res.uid) print "get_or_create_weibo_user", weibo_user kw = dict() kw['auth_id'] = auth_id kw['nickname'] = kw['username'] = weibo_user.screen_name kw['avater'] = weibo_user.profile_image_url kw['gender'] = weibo_user.gender kw2 = dict() kw2['province'] = weibo_user.province kw2['city'] = weibo_user.city kw2['copper_coins'] = 5000 #print kw, kw2 user = User(**kw) profile = UserProfile(**kw2) user.profile = profile db.session.add_all([user, profile]) db.session.commit() # save user in mcache #mcache_set(str(token), user, expires_in=expires_in-int(time.time())) #mcache_set(str(user.id), user) cache.set(str(token), user, expires_in=expires_in - int(time.time())) cache.set(str(user.id), user) print "get_or_create_weibo_user, from db: %s %d. set token: %s" % ( str(user), user.id, str(token)) return user
def load_user(id): if not id: return None user = cache.get(str(id)) if user: user = db.session.merge(user) return user
def get_or_create_weibo_user(client, code): res = client.request_access_token(code) # print "token:", str(res.access_token), "expires: ", res.expires_in token = res.access_token expires_in = res.expires_in client.set_access_token(token, expires_in) # first, try to get user from the mcache user = cache.get(str(token)) if user: print "get_or_create_weibo_user, from cache: %s %d" % (str(user), user.id) # try: # mcache_set(str(user.id), user) # return user # except DetachedInstanceError: # print "merge user ...." # user = db.session.merge(user) # mcache_set(str(user.id), user) # return user user = db.session.merge(user) print "get_or_create_weibo_user, cache db merge: %s %d" % (str(user), user.id) return user auth_id = "weibo_" + str(res.uid) user = User.query.get_by_authid(auth_id) if not user: weibo_user = client.get.users__show(uid=res.uid) print "get_or_create_weibo_user", weibo_user kw = dict() kw["auth_id"] = auth_id kw["nickname"] = kw["username"] = weibo_user.screen_name kw["avater"] = weibo_user.profile_image_url kw["gender"] = weibo_user.gender kw2 = dict() kw2["province"] = weibo_user.province kw2["city"] = weibo_user.city kw2["copper_coins"] = 5000 # print kw, kw2 user = User(**kw) profile = UserProfile(**kw2) user.profile = profile db.session.add_all([user, profile]) db.session.commit() # save user in mcache # mcache_set(str(token), user, expires_in=expires_in-int(time.time())) # mcache_set(str(user.id), user) cache.set(str(token), user, expires_in=expires_in - int(time.time())) cache.set(str(user.id), user) print "get_or_create_weibo_user, from db: %s %d. set token: %s" % (str(user), user.id, str(token)) return user