示例#1
0
    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}
示例#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
示例#3
0
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})
                    continue
                [self.players.add(x.strip().lower()) for x in row]
                self.records.append(row)


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("csv_file")
    parser.add_argument("-p", "--post-to-srv", action="store_true", dest="post")
    args = parser.parse_args()

    csvp = CSVProcessor(args.csv_file)

    print(csvp.players)

    ranker = TotalRanking()
    for player in csvp.players:
        ranker.add_player(player)

    for record in csvp.records:
        wl_tup = player_list_to_win_loss_tuple(record)
        load = [{'name': p, 'winner': True} for p in wl_tup[0]]
        load += [{'name': p, 'winner': False} for p in wl_tup[1]]
        ranker.process_game_record(*wl_tup)
        if args.post:
            load = {'player_list': load}
            headers = {'Content-type': 'application/json'}
            r = requests.post("http://localhost:5000/historical_games",
                              data=json.dumps(load), headers=headers)

    print("Total games: {}".format(ranker.total_games))
示例#5
0
 def get(self):
     rankings = TotalRanking.instance().player_rankings()
     return jsonify({"rankings": [(p, str(r)) for p, r in rankings]})