def get(self): template_params = handle_user() # Create Example Data ''' tourn1 = TournamentModel() tourn1.name = "MoaL 85 Melee Singles" tourn1.url = "http://moal.challonge.com/MoaL85MeleeSingles" tourn1.timestamp = datetime.datetime.now() tourn2 = TournamentModel() tourn2.name = "MoaL 84 Melee Singles" tourn2.url = "http://moal.challonge.com/MoaL84MeleeSingles" tourn2.timestamp = datetime.datetime.now() - datetime.timedelta(days=1) tournaments = [tourn1, tourn2] template_params['tournaments'] = tournaments tourn1.put() tourn2.put() # Fetch from data store ''' tournament_list = [] tournaments = TournamentModel.query() for tournament in tournaments: tournament_list.append(tournament) tournament_list.sort(key=lambda x: x.timestamp, reverse=True) template_params['tournaments'] = tournament_list render_template(self, 'listTournaments.html', template_params)
def get(self): template_params = handle_user() # Create Example Data ''' tourn1 = TournamentModel() tourn1.name = "MoaL 85 Melee Singles" tourn1.url = "http://moal.challonge.com/MoaL85MeleeSingles" tourn1.timestamp = datetime.datetime.now() tourn2 = TournamentModel() tourn2.name = "MoaL 84 Melee Singles" tourn2.url = "http://moal.challonge.com/MoaL84MeleeSingles" tourn2.timestamp = datetime.datetime.now() - datetime.timedelta(days=1) tournaments = [tourn1, tourn2] template_params['tournaments'] = tournaments tourn1.put() tourn2.put() # Fetch from data store ''' tournament_list = [] tournaments = TournamentModel.query() for tournament in tournaments: tournament_list.append(tournament) tournament_list.sort(key = lambda x: x.timestamp, reverse=True) template_params['tournaments'] = tournament_list render_template(self, 'listTournaments.html', template_params)
def post(self): template_params = handle_user() player1 = self.request.get("player1") player2 = self.request.get("player2") if player1 == "" and player2 == "": history = MatchModel.query() elif player2 == "": history = MatchModel.query(ndb.OR(MatchModel.player1 == player1, MatchModel.player2 == player1)) elif player1 == "": history = MatchModel.query(ndb.OR(MatchModel.player1 == player2, MatchModel.player2 == player1)) else: history = MatchModel.query(ndb.OR(ndb.AND(MatchModel.player1 == player1, MatchModel.player2 == player2), ndb.AND(MatchModel.player1 == player2, MatchModel.player2 == player1) ) ) matches = [] for i in history: match = Result() score = str(i.player1Score) + " - " + str(i.player2Score) match.player1 = i.player1 match.player2 = i.player2 match.winner = i.winner if i.winner == i.player1: self.p1winner = "True" match.score = score match.tournament = i.key.parent().get().name match.tournament_url = i.key.parent().get().url matches.append(match) template_params['rankings'] = matches render_template(self, 'history.html', template_params)
def get(self): template_params = handle_user() if not 'admin' in template_params: self.redirect('/') return players = [] player_query = PlayerModel.query() for p in player_query: players.append(p) template_params['players'] = players render_template(self, 'mergePlayers.html', template_params)
def get(self): template_params = handle_user() if not 'admin' in template_params: self.redirect('/') return OoR = OoRModel.query().get() if OoR == None: template_params['players'] = [] else: template_params['players'] = OoR.players render_template(self, 'oor.html', template_params)
def post(self): template_params = handle_user() if not 'admin' in template_params: self.redirect('/') return tournament_url = self.request.get("tournament_to_delete") tournament = TournamentModel.query(TournamentModel.url==tournament_url) match_list = MatchModel.query(ancestor=tournament.get().key) for match in match_list: match.key.delete() tournament.get().key.delete() self.redirect('/listTournaments')
def get(self): template_params = handle_user() if not 'admin' in template_params: self.redirect('/') return tournament_list = TournamentModel.query() tournament_array = [] for tournament in tournament_list: tournament_array.append(tournament) tournament_array.sort(key = lambda x: x.timestamp, reverse=True) template_params['tournaments'] = tournament_array render_template(self, 'deleteTournaments.html', template_params)
def post(self): template_params = handle_user() if not 'admin' in template_params: self.redirect('/') return tournament_url = self.request.get("url") # Check for input if tournament_url == "": self.redirect("/addTournaments") return dup_check = TournamentModel.query( TournamentModel.url == convert_url(tournament_url)) if dup_check.get() is not None: render_template(self, 'error_dup_league.html', template_params) return api.set_credentials(CHALLONGE_USERNAME, CHALLONGE_API) #Handle tournament not found error tournament = tournaments.show(tournament_url) tournament_object = TournamentModel() tournament_object.name = tournament['name'] tournament_object.url = convert_url(tournament_url) timestamp = parser.parse(tournament['created-at'][:-6]) tournament_object.timestamp = timestamp tournament_object.put() # Extract the matches # Move participant seach to preindex'd list rather than 3 challonge requests match_list = matches.index(tournament['id']) participant_list = participants.index(tournament['id']) self.response.out.write(participant_list) for match in match_list: match_object = MatchModel(parent=tournament_object.key) # Find names via challonge #match_object.player1 = participants.show(tournament['id'], match['player1-id'])['name'] #match_object.player2 = participants.show(tournament['id'], match['player2-id'])['name'] # Find names via list for p in participant_list: if p['id'] == match['player1-id']: match_object.player1 = p['name'] if p['id'] == match['player2-id']: match_object.player2 = p['name'] if match['scores-csv'] != "": parts = match['scores-csv'].split('-') match_object.player1Score = int(parts[0]) match_object.player2Score = int(parts[1]) winner = participants.show(tournament['id'], match['winner-id']) match_object.winner = winner['name'] match_object.label = match['identifier'] timestamp = parser.parse(match['started-at'][:-6]) match_object.timestamp = timestamp match_object.put() self.redirect("/listTournaments")
def get(self): template_params = handle_user() if not 'admin' in template_params: self.redirect('/') return tournament_list = TournamentModel.query() tournament_array = [] for tournament in tournament_list: tournament_array.append(tournament) tournament_array.sort(key=lambda x: x.timestamp, reverse=True) template_params['tournaments'] = tournament_array render_template(self, 'deleteTournaments.html', template_params)
def post(self): template_params = handle_user() if not 'admin' in template_params: self.redirect('/') return todelete = self.request.get("deletePlayer") OoR_object = OoRModel.query().get() OoR_list = OoR_object.players if OoR_list.count != 0: OoR_list.remove(todelete) OoR_object.players = OoR_list OoR_object.put() self.redirect('/')
def post(self): template_params = handle_user() if not 'admin' in template_params: self.redirect('/') return tournament_url = self.request.get("tournament_to_delete") tournament = TournamentModel.query( TournamentModel.url == tournament_url) match_list = MatchModel.query(ancestor=tournament.get().key) for match in match_list: match.key.delete() tournament.get().key.delete() self.redirect('/listTournaments')
def post(self): template_params = handle_user() if not 'admin' in template_params: self.redirect('/') return newPlayer = self.request.get("newPlayer") OoR_object = OoRModel.query().get() if OoR_object == None: OoR_object = OoRModel() OoR_list = OoR_object.players if OoR_list.count(newPlayer) == 0: OoR_list.append(newPlayer) OoR_object.players = OoR_list OoR_object.put() self.redirect('/')
def get(self): template_params = handle_user() # Create Example data ''' member1 = PlayerModel() member1.tag = 'SlientSwag' member1.score = 2134 member1.lastActive = datetime.datetime.now() member2 = PlayerModel() member2.tag = 'Abate' member2.score = 2054 member2.lastActive = datetime.datetime.now() member3 = PlayerModel() member3.tag = 'Vudujin' member3.score = 2001 member3.lastActive = datetime.datetime.now() member4 = PlayerModel() member4.tag = 'Taki' member4.score = 9001 member4.lastActive = datetime.datetime.now() - datetime.timedelta(days=60) member1.put() member2.put() member3.put() member4.put() ''' # The time period before a player goes inactive inactive_window = datetime.timedelta(days=40) cut_off = datetime.datetime.now() - inactive_window # Get all players that have been active since the cutoff players = PlayerModel.query(PlayerModel.lastActive > cut_off) rankings = [] # Copy the players into a list for player in players: rankings.append(player) # Sort the players rankings.sort(key = lambda x: x.ranking.mu, reverse=True) #rankings.sort() # Zip number list with rankings list rankings_zip = zip(range(1, len(rankings) + 1), rankings) template_params['rankings'] = rankings_zip render_template(self, 'index.html', template_params)
def post(self): template_params = handle_user() if not 'admin' in template_params: self.redirect('/') return newTag = self.request.get("newTag") oldTag = self.request.get("oldTag") if newTag == "" or oldTag == "": self.redirect('/') return # Replace p1 newtags with old tag matches = MatchModel.query(MatchModel.player1 == newTag) for match in matches: match.player1 = oldTag match.put() # Replace p2 noewtags with oldtags matches = MatchModel.query(MatchModel.player2 == newTag) for match in matches: match.player2 = oldTag match.put() self.redirect('/generateRankings')
def post(self): template_params = handle_user() player1 = self.request.get("player1") player2 = self.request.get("player2") if player1 == "" and player2 == "": history = MatchModel.query() elif player2 == "": history = MatchModel.query( ndb.OR(MatchModel.player1 == player1, MatchModel.player2 == player1)) elif player1 == "": history = MatchModel.query( ndb.OR(MatchModel.player1 == player2, MatchModel.player2 == player1)) else: history = MatchModel.query( ndb.OR( ndb.AND(MatchModel.player1 == player1, MatchModel.player2 == player2), ndb.AND(MatchModel.player1 == player2, MatchModel.player2 == player1))) matches = [] for i in history: match = Result() score = str(i.player1Score) + " - " + str(i.player2Score) match.player1 = i.player1 match.player2 = i.player2 match.winner = i.winner if i.winner == i.player1: self.p1winner = "True" match.score = score match.tournament = i.key.parent().get().name match.tournament_url = i.key.parent().get().url matches.append(match) template_params['rankings'] = matches render_template(self, 'history.html', template_params)
def get(self): template_params = handle_user() if not 'admin' in template_params: self.redirect('/') return render_template(self, 'addTournaments.html', template_params)
def get(self): template_params = handle_user() render_template(self, 'about.html', template_params)
def get(self): template_params = handle_user() render_template(self, 'history.html', template_params)
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 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('/')