def authlogin(): """ If the account is exist, return it. If the user is not registered before, add username for it. If not, create and return it. """ try: access_token = request.form.get('access_token') except Exception as e: raise InvalidParam('invalid access_token', status_code=400) try: if os.environ.get('DEBUG', None): token_info = { 'uid': '1313608362', 'appkey': '123' } else: token_info = get_token_info(access_token) uid = token_info['uid'] appkey = token_info['appkey'] account = db.session.query(Account)\ .filter(Account.uid==uid)\ .filter(Account.provider=='weibo').first() if os.environ.get('DEBUG', None): user_info = get_user_info(access_token, uid, appkey) else: user_info = {'screen_name': 'aisensiy'} username = user_info['screen_name'] if not account: # if this account not found in db create it and its user user = User(username=username, registered_at=sqlnow()) user.accounts = [Account(provider='weibo', access_token=access_token, uid=uid)] db.session.add(user) db.session.commit() account = user.accounts[0] else: user = account.user if not user.is_registered: # if this account is created not by the owner, then created it account.username = username user.is_registered = True user.registered_at = sqlnow() db.session.add(user) db.session.commit() session.permanent = True session['user_id'] = account.user_id return jsonify({ 'status': 'success', 'data': { 'user_id': account.user_id, 'uid': account.uid } }) except Exception as e: raise InvalidParam(e.message)
def post_greeting(request, db, src_user_id): provider = request.form.get('provider') uid = request.form.get('uid') if not provider or not uid: raise InvalidParam('provider or uid is not invalid') account = db.session.query(Account)\ .filter(Account.uid==uid)\ .filter(Account.provider==provider).first() # if the user you are greeting to is not registered in our app then we create # a mock user account for him if not account: user = User() user.accounts = [Account(provider=provider, uid=uid)] db.session.add(user) db.session.commit() account = user.accounts[0] greeting = db.session.query(Greeting)\ .filter(Greeting.src_user_id==src_user_id)\ .filter(Greeting.dst_user_id==account.user_id).first() if not greeting: greeting = Greeting(src_user_id=src_user_id, dst_user_id=account.user_id) db.session.add(greeting) db.session.commit() back_greeting = db.session.query(Greeting)\ .filter(Greeting.src_user_id==account.user_id)\ .filter(Greeting.dst_user_id==src_user_id).first() if back_greeting: back_greeting.is_friend = True back_greeting.is_friend_at = sqlnow() greeting.is_friend = True greeting.is_friend_at = sqlnow() db.session.add(greeting) db.session.add(back_greeting) db.session.commit() return jsonify({ 'status': 'success', 'data': { 'is_friend': True, 'user_id': account.user_id } }) else: return jsonify({ 'status': 'success', 'data': { 'is_friend': False, 'user_id': account.user_id } })