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}
Exemple #2
0
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]})