def update_team(team_name, team_username, team_password, team_email, puzzle_name): # Team name must be specified because of validator in form resp = "Team {} ".format(team_name) if is_team_unique(Team(team_name, team_username, team_password, team_email)): return resp + "is not a valid team!" if (team_username == "X" and team_password == "X" and team_email == "X" and puzzle_name == "X"): db.delete_team(team_name) return resp + "deleted!" if team_username: db.update_username(team_name, team_username) resp += "username changed to {} ".format(team_username) if team_password: db.update_code(team_name, team_password) resp += " password changed to {} ".foramt(team_password) if team_email: db.update_email(team_name, team_email) resp += " email changed to {} ".format(team_email) if puzzle_name: db.update_team_solves(team_name, Puzzle(puzzle_name, "").get_url_path()) db.update_team_score(team_name) resp += " Puzzle {} updated to solved ".format(puzzle_name) return resp
def test_oneOnSevenSimpleTest(self): player1 = Player(1) player2 = Player(2) player3 = Player(3) player4 = Player(4) player5 = Player(5) player6 = Player(6) player7 = Player(7) player8 = Player(8) team1 = Team(player1, self.gameInfo.defaultRating) team2 = Team(player2, self.gameInfo.defaultRating) team2.addPlayer(player3, self.gameInfo.defaultRating) team2.addPlayer(player4, self.gameInfo.defaultRating) team2.addPlayer(player5, self.gameInfo.defaultRating) team2.addPlayer(player6, self.gameInfo.defaultRating) team2.addPlayer(player7, self.gameInfo.defaultRating) team2.addPlayer(player8, self.gameInfo.defaultRating) teams = [team1, team2] for newRating in self.calculator.calculateNewRatings(self.gameInfo, teams, [1, 2]): player = newRating[0] if player == player1: self.assertRating(40.582, 7.917, newRating[1]) else: self.assertRating(9.418, 7.917, newRating[1]) self.assertMatchQuality(0.000, self.calculator.calculateMatchQuality(self.gameInfo, teams))
def test_oneOnThreeDrawTest(self): player1 = Player(1) player2 = Player(2) player3 = Player(3) player4 = Player(4) team1 = Team(player1, self.gameInfo.defaultRating) team2 = Team(player2, self.gameInfo.defaultRating) team2.addPlayer(player3, self.gameInfo.defaultRating) team2.addPlayer(player4, self.gameInfo.defaultRating) teams = [team1, team2] newRatings = self.calculator.calculateNewRatings(self.gameInfo, teams, [1, 1]) for newRating in newRatings: player = newRating[0] if player == player1: self.assertRating(34.990, 7.455, newRating[1]) else: self.assertRating(15.010, 7.455, newRating[1]) self.assertMatchQuality(0.012, self.calculator.calculateMatchQuality(self.gameInfo, teams))
def test_oneOnTwoDrawTest(self): player1 = Player(1) player2 = Player(2) player3 = Player(3) team1 = Team(player1, self.gameInfo.defaultRating) team2 = Team(player2, self.gameInfo.defaultRating) team2.addPlayer(player3, self.gameInfo.defaultRating) teams = [team1, team2] newRatings = self.calculator.calculateNewRatings(self.gameInfo, teams, [1, 1]) for newRating in newRatings: player = newRating[0] if player == player1: self.assertRating(31.660, 7.138, newRating[1]) elif player == player2: self.assertRating(18.340, 7.138, newRating[1]) else: self.assertRating(18.340, 7.138, newRating[1]) self.assertMatchQuality(0.135, self.calculator.calculateMatchQuality(self.gameInfo, teams))
def test_oneOnTwoSomewhatBalanced(self): player1 = Player(1) player2 = Player(2) player3 = Player(3) team1 = Team(player1, Rating(40, 6)) team2 = Team(player2, Rating(20, 7)) team2.addPlayer(player3, Rating(25, 8)) teams = [team1, team2] newRatings = self.calculator.calculateNewRatings(self.gameInfo, teams, [1, 2]) for newRating in newRatings: player = newRating[0] if player == player1: self.assertRating(42.744, 5.602, newRating[1]) elif player == player2: self.assertRating(16.266, 6.359, newRating[1]) else: self.assertRating(20.123, 7.028, newRating[1]) self.assertMatchQuality(0.478, self.calculator.calculateMatchQuality(self.gameInfo, teams))
def test_oneOnTwoSimple(self): player1 = Player(1) player2 = Player(2) player3 = Player(3) team1 = Team(player1, self.gameInfo.defaultRating) team2 = Team() team2.addPlayer(player2, self.gameInfo.defaultRating) team2.addPlayer(player3, self.gameInfo.defaultRating) teams = [team1, team2] newRatings = self.calculator.calculateNewRatings(self.gameInfo, teams, [1, 2]) for newRating in newRatings: player = newRating[0] if player == player1: self.assertRating(33.730, 7.317, newRating[1]) elif player == player2: self.assertRating(16.270, 7.317, newRating[1]) else: self.assertRating(16.270, 7.317, newRating[1]) self.assertMatchQuality(0.135, self.calculator.calculateMatchQuality(self.gameInfo, teams))
def test_twoOnTwoDrawTest(self): player1 = Player(1) player2 = Player(2) player3 = Player(3) player4 = Player(4) team1 = Team(player1, self.gameInfo.defaultRating) team1.addPlayer(player2, self.gameInfo.defaultRating) team2 = Team(player3, self.gameInfo.defaultRating) team2.addPlayer(player4, self.gameInfo.defaultRating) teams = [team1, team2] for newRating in self.calculator.calculateNewRatings(self.gameInfo, teams, [1, 1]): self.assertRating(25, 7.455, newRating[1]) self.assertMatchQuality(0.447, self.calculator.calculateMatchQuality(self.gameInfo, teams))
def test_oneOnOneMassiveUpsetDrawTest(self): player1 = Player(1) player2 = Player(2) team1 = Team() team1.addPlayer(player1, self.gameInfo.defaultRating) team2 = Team() team2.addPlayer(player2, Rating(50, 12.5)) teams = [team1, team2] newRatingsWinLose = self.calculator.calculateNewRatings(self.gameInfo, teams, [1, 1]) for newRating in newRatingsWinLose: player = newRating[0] if player == player1: self.assertRating(31.662, 7.137, newRating[1]) else: self.assertRating(35.010, 7.910, newRating[1]) self.assertMatchQuality(.110, self.calculator.calculateMatchQuality(self.gameInfo, teams))
def test_twoOnTwoSimpleTest(self): player1 = Player(1) player2 = Player(2) player3 = Player(3) player4 = Player(4) team1 = Team(player1, self.gameInfo.defaultRating) team1.addPlayer(player2, self.gameInfo.defaultRating) team2 = Team(player3, self.gameInfo.defaultRating) team2.addPlayer(player4, self.gameInfo.defaultRating) teams = [team1, team2] for newRating in self.calculator.calculateNewRatings(self.gameInfo, teams, [1, 2]): player = newRating[0] if player == player1 or player == player2: self.assertRating(28.108, 7.774, newRating[1]) else: self.assertRating(21.892, 7.774, newRating[1]) self.assertMatchQuality(0.447, self.calculator.calculateMatchQuality(self.gameInfo, teams))
def test_twoOnTwoUnbalancedDrawTest(self): player1 = Player(1) player2 = Player(2) player3 = Player(3) player4 = Player(4) team1 = Team(player1, Rating(15, 8)) team1.addPlayer(player2, Rating(20, 6)) team2 = Team(player3, Rating(25, 4)) team2.addPlayer(player4, Rating(30, 3)) teams = [team1, team2] for newRating in self.calculator.calculateNewRatings(self.gameInfo, teams, [1, 1]): player = newRating[0] if player == player1: self.assertRating(21.570, 6.556, newRating[1]) elif player == player2: self.assertRating(23.696, 5.418, newRating[1]) elif player == player3: self.assertRating(23.357, 3.833, newRating[1]) else: self.assertRating(29.075, 2.931, newRating[1]) self.assertMatchQuality(0.214, self.calculator.calculateMatchQuality(self.gameInfo, teams))
def db_team_to_team(row): return Team(row[0], row[1], row[2], row[3])