def post(self): plist = request.get_json()['player_list'] hgame = HistoricalGame(winteam="winners") game = Game(date=datetime.datetime.now(), inprog=False, historical=True, historical_game=hgame) models = [game, hgame] players = [] for player in plist: pmod = PlayerList.find_or_make_player(player['name']) players.append(pmod[0]) models.append(pmod[0]) team = "winners" if player['winner'] else "losers" pgame = PlayerGame(player=pmod[0], game=game, team=team) models.append(pgame) # Update the ranking object & leaderboard table. tr = TotalRanking.instance() with tr.lock: tr.process_game_record(*game_to_winners_losers(game)) db.session.add_all(models) db.session.commit() return {'msg': "Saved game: {}".format(game.json), 'saved': True}
def get_rankings_obj(): tr = TotalRanking.instance() all_games = HistoricalGame.query.all() print("Initting rankings...") for hgame in all_games: winners, losers = game_to_winners_losers(hgame.game) tr.process_game_record(winners, losers) return tr
def update_lboard(): # We just truncate and rebuild. Easier. db.session.query(Ranking).delete() pos = 1 for pname, ranking in TotalRanking.instance().player_rankings(): player = Player.query.filter_by(name=pname).first() r = Ranking(player_id=player.id, ranking=pos, mu=ranking.mu, sigma=ranking.sigma) db.session.add(r) pos += 1 db.session.commit() return jsonify({'success': True})
def get(self): rankings = TotalRanking.instance().player_rankings() return jsonify({"rankings": [(p, str(r)) for p, r in rankings]})