Пример #1
0
def init_or_update_db_user(access_token):
    try:
        basic_info = connect_twitter(access_token)
        twitter_user_id = basic_info.id
    except AttributeError:
        logging.error("Can't get twitter user info!")
        return None
    now = datetime.utcnow()
    # search in the database for this user
    db_user = User.query.filter_by(id=twitter_user_id).first()
    # if the user doesn't exists:
    if db_user is None:
        eval_system = random.choice(['legacy', 'recommend'])
        # create the new user in the database and set last processed time as 0
        db_user = User(id=twitter_user_id,
                       screen_name=basic_info.screen_name,
                       name=basic_info.name,
                       profile_image_url=basic_info.profile_image_url,

                       statuses_count=basic_info.statuses_count,
                       friends_count=basic_info.friends_count,

                       last_login=now,
                       last_recommend=now,

                       token_key=access_token['oauth_token'],
                       token_secret=access_token['oauth_token_secret'],

                       first_login=now,
                       is_entry_questionnaire_complete=False,
                       is_exit_questionnaire_complete=False,
                       first_evaluation_system=eval_system,
                       current_evaluation_system=eval_system)
        db.session.add(db_user)
        db.session.commit()
    else:
        # otherwise update this user
        db_user.last_login = now
        db_user.token_key = access_token['oauth_token']
        db_user.token_secret = access_token['oauth_token_secret']
        db.session.add(db_user)
        db.session.commit()
    return db_user