Ejemplo n.º 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
Ejemplo n.º 2
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
Ejemplo n.º 3
0
def register():
    form = UserRegForm(request.form)
    if request.method == 'POST' and form.validate():
        user = create_user("local_%s" % form.data['name'],
                           form.data["name"],
                           form.data['email'],
                           copper_coins=5000,
                           password=form.data['password'])
        cache.set(str(user.id), user)
        if login_user(user, remember=True):
            return redirect(request.args.get("next") or "/")
    #print form.data["name"], type(form.data["name"])
    return render_template("reg.html", form=form)
Ejemplo n.º 4
0
def register():
    form = UserRegForm(request.form)
    if request.method == "POST" and form.validate():
        user = create_user(
            "local_%s" % form.data["name"],
            form.data["name"],
            form.data["email"],
            copper_coins=5000,
            password=form.data["password"],
        )
        cache.set(str(user.id), user)
        if login_user(user, remember=True):
            return redirect(request.args.get("next") or "/")
    # print form.data["name"], type(form.data["name"])
    return render_template("reg.html", form=form)
Ejemplo n.º 5
0
def login():
    form = LoginForm(request.form)
    next = request.args.get("next")
    if request.method == 'POST' and form.validate():
        username = form.data["email"]
        password = form.data["password"]

        if '@' in username:
            user = User.query.filter(User.email == username).first()
        else:
            user = User.query.filter(User.username == username).first()
        if not user:
            form.email.errors.append(u'用户名或email未注册或密码不正确')
            return render_template("login.html", form=form, next=next)
        if not user.check_password(password):
            form.email.errors.append(u'用户名或email未注册或密码不正确')
            return render_template("login.html", form=form, next=next)
        cache.set(str(user.id), user)
        if not login_user(user, remember=True):
            form.email.errors.append(u'login failed!')
            return render_template("login.html", form=form, next=next)
        return redirect(request.args.get("next") or "/")
    return render_template("login.html", form=form, next=next)
Ejemplo n.º 6
0
def login():
    form = LoginForm(request.form)
    next = request.args.get("next")
    if request.method == "POST" and form.validate():
        username = form.data["email"]
        password = form.data["password"]

        if "@" in username:
            user = User.query.filter(User.email == username).first()
        else:
            user = User.query.filter(User.username == username).first()
        if not user:
            form.email.errors.append(u"用户名或email未注册或密码不正确")
            return render_template("login.html", form=form, next=next)
        if not user.check_password(password):
            form.email.errors.append(u"用户名或email未注册或密码不正确")
            return render_template("login.html", form=form, next=next)
        cache.set(str(user.id), user)
        if not login_user(user, remember=True):
            form.email.errors.append(u"login failed!")
            return render_template("login.html", form=form, next=next)
        return redirect(request.args.get("next") or "/")
    return render_template("login.html", form=form, next=next)