Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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')
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
    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")
Ejemplo n.º 10
0
 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)
Ejemplo n.º 11
0
 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('/')
Ejemplo n.º 12
0
 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')
Ejemplo n.º 13
0
 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('/')
Ejemplo n.º 14
0
  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)
Ejemplo n.º 15
0
 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')
Ejemplo n.º 16
0
 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')
Ejemplo n.º 17
0
 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)
Ejemplo n.º 18
0
 def get(self):
   template_params = handle_user()
   if not 'admin' in template_params:
     self.redirect('/')
     return
   render_template(self, 'addTournaments.html', template_params)
Ejemplo n.º 19
0
 def get(self):
     template_params = handle_user()
     if not 'admin' in template_params:
         self.redirect('/')
         return
     render_template(self, 'addTournaments.html', template_params)
Ejemplo n.º 20
0
 def get(self):
   template_params = handle_user()
   render_template(self, 'about.html', template_params)
Ejemplo n.º 21
0
 def get(self):
   template_params = handle_user()
   render_template(self, 'history.html', template_params)
Ejemplo n.º 22
0
    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('/')
Ejemplo n.º 23
0
 def get(self):
     template_params = handle_user()
     render_template(self, 'about.html', template_params)
Ejemplo n.º 24
0
 def get(self):
     template_params = handle_user()
     render_template(self, 'history.html', template_params)
Ejemplo n.º 25
0
  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('/')