def refresh_from_game_file(name): """ Fetch game file and re-calculate ratings. If the game file does not exist, the data will be deleted. """ try: content = get_game_file(name) if content == None: games_data.delete(name) return False else: parser = GamesParser(StringIO(content), name) games = parser.parse_file() rater = Rater(games) ratings = rater.rate_games(parser.score_type) game = { "game_name": parser.game_name, "players": { name: player.rating_history for (name, player) in rater.players.items() }, "ratings": ratings, "count": len(games), } games_data.save(name, game) return True except requests.HTTPError as e: logging.error(e)
def test_parse_comments(self): data = \ """ # # """ parser = GamesParser(StringIO(data), "test") parser.parse_file() self.assertEqual(len(parser.errors), 0)
def test_parse_name(self): data = \ """ game_name Settlers of Catan """ parser = GamesParser(StringIO(data)) parser.parse_file() self.assertEqual("Settlers of Catan", parser.game_name)
def test_parse_score_type(self): data = \ """ game_name Settlers of Catan score_type lowscore """ parser = GamesParser(StringIO(data)) parser.parse_file() self.assertEqual("lowscore", parser.score_type)
def test_parse_errors(self): data = \ """ game_name Invalid date - one syntax error, two spurious scores game 2012-01+19 15:12 Jonatan 1337 Molgan -666 """ parser = GamesParser(StringIO(data), "test") parser.parse_file() self.assertEqual(len(parser.errors), 3)
def test_parse_minus(self): data = \ """ game_name Cool game game 2012-01-19 15:12 Jonatan 1337 Molgan -666 """ parser = GamesParser(StringIO(data), "test") parser.parse_file() self.assertEqual(parser.games[0]["scores"]["Molgan"], -666) self.assertEqual(len(parser.errors), 0)
def test_parse_games(self): data = \ """ game_name Cool game game 2012-01-19 15:12:00 Jonatan 1337 Molgan 666 game 2012-01-19 15:12:20 Jonatan 123 Molgan 231 """ parser = GamesParser(StringIO(data)) parser.parse_file() self.assertEqual(2, len(parser.games))