示例#1
0
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
示例#2
0
def load_user(id):
    if not id:
        return None
    user = cache.get(str(id))
    if user:
        user = db.session.merge(user)
    return user
示例#3
0
def load_user(id):
    if not id:
        return None
    user = cache.get(str(id))
    if user:
        user = db.session.merge(user)
    return user
示例#4
0
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