def start_game_db(Session): session = Session() players = list() players.append( PlayerModel(nickname='nwhite', email='*****@*****.**', role=4)) players.append( PlayerModel(nickname='nwhite2', email='*****@*****.**', role=4)) players.append( PlayerModel(nickname='nwhite3', email='*****@*****.**', role=4)) players.append( PlayerModel(nickname='nwhite4', email='*****@*****.**', role=4)) numberOfTeams = 2 minRequiredPlayers = 2 maxPlayersPerTeam = 2 game = GameModel(name='game1', initiator=players[0], numberOfTeams=numberOfTeams, minRequiredPlayers=minRequiredPlayers, maxPlayersPerTeam=maxPlayersPerTeam) for index in range(50): print("Putting card.") forbidden = "{'word1', 'word2', 'word3', 'word4'}" card = CardModel("word_" + str(index + 1), forbidden, "Book", "345") session.add(card) session.add(game) session.commit() for i in range(numberOfTeams): teamName = 'team' + str(i) team = TeamModel(teamName) if (i == 0): team.addPlayer(players[0]) team.addPlayer(players[1]) else: team.addPlayer(players[2]) team.addPlayer(players[3]) game.addTeam(team) game.gameState = GAME_READY session.commit() session.close()
def test1CreatePlayers(self): delete_db(engine) AppModelBase.metadata.create_all(engine) for i in range(50): email = "member" + str(i + 1) + "@bsu.edu" if PlayerModel.emailExists(self.session, email): print("the entered email already exists") else: member1 = PlayerModel("Member " + str(i + 1), email, 3) self.session.add(member1) self.session.flush() self.session.commit() self.assertEqual(PlayerModel.numberOfRows(self.session), 50) print( "\n\n*************Test add exist Player**********************\n\n") member2_email = "*****@*****.**" if (PlayerModel.emailExists(self.session, member2_email)): print("the entered email already exists") else: member2 = PlayerModel("Member2", "*****@*****.**", 3) self.session.add(member2) self.session.flush() self.session.commit() self.assertEqual(PlayerModel.numberOfRows(self.session), 50) print( "\n\n*************Test add invalid email Player***************\n\n" ) member3_email = "" member3_name = "member3" data = {"email": member3_email, "username": member3_name} feedback = PlayerModel.isValidPlayer(data) self.assertFalse(feedback["valid"]) self.assertEqual(feedback["message"], 'invalid email') print( "\n\n*************Test add invalid username Player***************\n\n" ) member4_email = "*****@*****.**" member4_name = "" data = {"email": member4_email, "username": member4_name} feedback = PlayerModel.isValidPlayer(data) print(feedback) self.assertFalse(feedback["valid"]) self.assertEqual( feedback["message"], 'username must be between 2 and 255 characters inclusive')
def start_game2_db(Session): session = Session() players = list() players.append( PlayerModel(nickname='nwhite', email='*****@*****.**', role=4)) players.append( PlayerModel(nickname='nwhite2', email='*****@*****.**', role=4)) players.append( PlayerModel(nickname='nwhite3', email='*****@*****.**', role=4)) players.append( PlayerModel(nickname='nwhite4', email='*****@*****.**', role=4)) numberOfTeams = 2 minRequiredPlayers = 2 maxPlayersPerTeam = 2 game = GameModel(name='game1', initiator=players[0], numberOfTeams=numberOfTeams, minRequiredPlayers=minRequiredPlayers, maxPlayersPerTeam=maxPlayersPerTeam) session.add(game) session.commit() for i in range(numberOfTeams): teamName = 'team' + str(i) team = TeamModel(teamName) if (i == 0): team.addPlayer(players[0]) team.addPlayer(players[1]) else: team.addPlayer(players[2]) team.addPlayer(players[3]) game.addTeam(team) game.gameState = GAME_READY session.commit() session.close()
def get(self): OoR_object = OoRModel.query().get() if OoR_object == None: OoR = [] else: OoR = OoR_object.players template_params = handle_user() if not 'admin' in template_params: self.redirect('/') # Delete All player Models players = PlayerModel.query() for player in players: player.key.delete() tournament_query = TournamentModel.query() tournaments = [] for t in tournament_query: tournaments.append(t) #sort tournaments.sort(key=lambda x: x.timestamp) for tournament in tournaments: #self.response.out.write(tournament.name + "<br>") matches = [] match_query = MatchModel.query(ancestor=tournament.key) for m in match_query: matches.append(m) matches.sort(key=lambda x: x.timestamp) for match in matches: player1 = match.player1 player2 = match.player2 winner = match.winner if player1 in OoR or player2 in OoR: continue # Find player1 Model player1_query = PlayerModel.query(PlayerModel.tag == player1) if player1_query.get() is not None: player1_object = player1_query.get() else: player1_object = PlayerModel() player1_object.tag = player1 player1_object.ranking = trueskill.Rating() player1_object.put() player1_object.lastActive = match.timestamp # Find player2 Model player2_query = PlayerModel.query(PlayerModel.tag == player2) if player2_query.get() is not None: player2_object = player2_query.get() else: player2_object = PlayerModel() player2_object.tag = player2 player2_object.ranking = trueskill.Rating() player2_object.put() player2_object.lastActive = match.timestamp #Run Rankings Algo player1_rate = player1_object.ranking player2_rate = player2_object.ranking #self.response.out.write(player1_rate) #self.response.out.write('<br>') #self.response.out.write(player2_rate) #self.response.out.write('<br>') if winner == player1: new_player1, new_player2 = trueskill.rate_1vs1( player1_rate, player2_rate) else: new_player2, new_player1 = trueskill.rate_1vs1( player2_rate, player1_rate) #self.response.out.write(new_player1) #self.response.out.write('<br>') #self.response.out.write(new_player2) #self.response.out.write('<br>') #self.response.out.write('<br>') # Update player stats player1_object.ranking = new_player1 player2_object.ranking = new_player2 #Save player1_object.put() player2_object.put() #self.response.out.write(match.player1+" vs. "+player2) #self.response.out.write('<br>') #self.response.out.write('<hl><br><br>') self.redirect('/')
def mutate(self, into, name): player = PlayerModel(name=name) db_session.add(player) db_session.commit() return InsertPlayer(player=player)