def update_player_details(): with transaction.manager: while True: players = DBSession.query(Player).filter_by(display_name=None, profile_update_error=False).limit(100).all() if not players: log.info('All player details up to date') break player_ids = [ str(convert_player_id_32_to_64(player.id)) for player in players if player.id != 4294967295 ] log.info('Updating player details for {} players'.format(len(player_ids))) result = get_player_list_details(celery.settings, player_ids) for player in result['players']: id_32 = convert_player_id_64_to_32(long(player['steamid'])) log.info('Updating player {}'.format(id_32)) db_player = DBSession.query(Player).get(id_32) db_player.display_name = player['personaname'] players.remove(db_player) if players: log.info('Player not updated: {}'.format(len(players))) for player in players: player.profile_update_error = True
def on_login_success(request): context = request.context steam_url = context.profile["accounts"][0]["username"] steam_id = convert_player_id_64_to_32(long(steam_url.rsplit("/", 1)[1])) player = DBSession.query(Player).get(steam_id) if player is not None: player.is_registerd = True else: player = Player(id=steam_id, is_registerd=True) DBSession.add(player) request.session["current_player_steamid"] = steam_id request.session["current_player"] = player return HTTPSeeOther(location="/")