Beispiel #1
0
 def player_deletion(self):
     """
     Controls the replacement of a player attributes by 'EMPTY' in the database in order to keep the good sequences
     of the doc_ids.
     """
     players_index_list = []
     i = 0
     while i < len(db.db_players.all()):
         players_index_list.append(i)
         i += 1
     p_obj_list = reconstructor.create_player_obj_list(players_index_list)
     player_id_list = []
     for player in p_obj_list:
         if player.lastname == 'EMPTY':
             pass
         else:
             player_id_list.append(player.id)
     while True:
         player_to_delete = self.view_player.chose_player_to_delete()
         self.back_or_exit(player_to_delete, self.player_menu)
         try:
             player_to_delete = int(player_to_delete)
             if player_to_delete in player_id_list:
                 player_obj = reconstructor.create_player_obj_list([(player_to_delete - 1)])
                 self.view_player.confirm_player_to_delete(player_obj)
                 self.confirm(self.view_player.player_menu)
                 db.remove_player(player_to_delete)
                 self.view_player.confirmation_player_deleted(player_to_delete)
                 self.player_menu()
             else:
                 self.view_player.id_not_found()
         except ValueError:
             self.view_player.invalid_input()
Beispiel #2
0
 def rank_update(self):
     """
     Controls the update of a player rank in the database. If the new rank is already attributed to another player,
     proposes to swap the two player's ranks.
     """
     players_index_list = []
     i = 0
     while i < len(db.db_players.all()):
         players_index_list.append(i)
         i += 1
     p_obj_list = reconstructor.create_player_obj_list(players_index_list)
     player_id_list = []
     player_rank_list = []
     for player in p_obj_list:
         if player.lastname == 'EMPTY':
             pass
         else:
             player_id_list.append(player.id)
             player_rank_list.append(player.rank)
     while True:
         player_to_update = self.view_player.chose_player_to_update()
         self.back_or_exit(player_to_update, self.player_menu)
         try:
             player_to_update = int(player_to_update)
             if player_to_update in player_id_list:
                 player_obj_1 = reconstructor.create_player_obj_list([(player_to_update - 1)])[0]
                 while True:
                     new_rank = self.view_player.enter_new_rank(player_to_update)
                     try:
                         if int(new_rank) > 0:
                             break
                         else:
                             self.view_player.invalid_input()
                     except ValueError:
                         self.view_player.invalid_input()
                 player_to_swap = None
                 if new_rank in player_rank_list:
                     for player in p_obj_list:
                         if player.rank == new_rank:
                             player_to_swap = player
                     self.view_player.confirm_rank_to_update(player_obj_1, player_to_swap, new_rank, True)
                     self.confirm(self.view_player.player_menu)
                     db.update_player_rank(player_to_swap.id, player_obj_1.rank)
                     db.update_player_rank(player_obj_1.id, new_rank)
                     self.view_player.confirmation_rank_updated(True, player_obj_1.id, new_rank, player_to_swap.id,
                                                                player_obj_1.rank)
                 else:
                     self.view_player.confirm_rank_to_update(player_obj_1, None, new_rank, False)
                     self.confirm(self.view_player.player_menu)
                     db.update_player_rank(player_obj_1.id, new_rank)
                     self.view_player.confirmation_rank_updated(False, player_obj_1.id, new_rank, None, None)
             else:
                 self.view_player.id_not_found()
         except ValueError:
             self.view_player.invalid_input()
         self.player_menu()
Beispiel #3
0
 def players_report(self):
     """
     Controls the user input regarding the type of sorting he wants to apply to the players list display.
     Depending of the type of sorting calls the appropriate method from the SortingAndPairing object and then asks
     for the players list display to its ViewPlayer Object.
     """
     while True:
         players_report = self.view_report.players_sort_type(True, None)
         self.back_or_exit(players_report, self.report_menu)
         players_index_list = []
         i = 0
         while i < len(db.db_players.all()):
             players_index_list.append(i)
             i += 1
         players_obj_list = reconstructor.create_player_obj_list(players_index_list)
         if players_report == '1':
             players_obj_list = snp.player_names_sort(players_obj_list)
             back_or_exit = self.view_report.players_list_report(None, players_obj_list, True)
             self.back_or_exit(back_or_exit, self.players_report)
         if players_report == '2':
             players_obj_list = snp.double_sort_points_rank(players_obj_list)
             back_or_exit = self.view_report.players_list_report(None, players_obj_list, True)
             self.back_or_exit(back_or_exit, self.players_report)
         else:
             self.view_report.invalid_input()
Beispiel #4
0
 def unregister_player(self):
     """
     Asks user via the unregister_player method from the ViewTournament object to chose a player ID to remove from
     the selected tournament as a player index (from the database) in its player index list attribute.
     Controls if the ID input is part of the player index list attribute.
     Calls a DBChess method to update the player index list attribute in the database.
     """
     unregister_player = self.view_tournament.unregister_player(
         [self.t_obj])
     self.back_or_exit(unregister_player, self.planned_tour_management)
     try:
         unregister_player = int(unregister_player)
         if unregister_player - 1 in self.t_obj.players_index_list:
             player = reconstructor.create_player_obj_list(
                 [unregister_player - 1])
             self.view_tournament.players_list_display(player)
             self.confirm(self.planned_tour_management)
             del self.t_obj.players_index_list[unregister_player - 1]
             db.db_planned.update(
                 {'Liste des index joueurs': self.t_obj.players_index_list},
                 doc_ids=[self.t_obj.id])
             self.planned_tournament_list()
         else:
             self.view_tournament.id_not_found()
     except ValueError:
         self.view_tournament.invalid_input()
Beispiel #5
0
 def planned_tour_management(self):
     """
     Calls the reconstructor object to build all Players objects from the players index list attribute of the
     selected tournament object.
     Grants access to planned_no_player_list / planned_in_between / planned_player_list_full methods depending on
     the length of the Player objects lists.
     """
     players_index_list = self.t_obj.players_index_list
     if players_index_list:
         players_obj_list = reconstructor.create_player_obj_list(
             players_index_list)
         if self.t_obj.players_number > len(players_index_list) > 0:
             self.planned_in_between(players_obj_list)
         elif len(players_index_list) == self.t_obj.players_number:
             self.planned_player_list_full(players_obj_list)
     else:
         self.planned_no_player_list(players_index_list)
Beispiel #6
0
 def register_player(self):
     """
     Asks user via the select_player_id method from the ViewTournament object to chose a player ID to register in
     the selected tournament as a player index (from the database) in its player index list attribute.
     Controls if the ID input exists or is already part of the player index list attribute.
     Calls a DBChess method to update the player index list attribute in the database.
     """
     doc_id_list = []
     for player in db.db_players.all():
         if player['Nom'] == 'EMPTY':
             pass
         else:
             doc_id_list.append(player.doc_id)
     player_id = self.view_tournament.select_player_id([self.t_obj])
     self.back_or_exit(player_id, self.planned_tour_management)
     try:
         player_id = int(player_id)
         if player_id in doc_id_list:
             if player_id - 1 in self.t_obj.players_index_list:
                 self.view_tournament.player_already_attributed()
             else:
                 player = reconstructor.create_player_obj_list(
                     [player_id - 1])
                 self.view_tournament.players_list_display(player)
                 self.confirm(self.planned_tour_management)
                 self.t_obj.players_index_list.append(player_id - 1)
                 db.db_planned.update(
                     {
                         'Liste des index joueurs':
                         self.t_obj.players_index_list
                     },
                     doc_ids=[self.t_obj.id])
                 self.planned_tour_management()
         else:
             self.view_tournament.id_not_found()
     except ValueError:
         self.view_tournament.invalid_input()