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