def reload_player(self):
        self.db = TinyDB("players_data.json", indent=4)
        players = Query()
        self.player_data = self.db.table('players_data')

        existing_player = get_existing_player()

        db_player = self.player_data.search(players.name == existing_player)

        while is_query_empty(db_player):
            error_message("Aucune donnée pour ce joueur.")
            existing_player = get_existing_player()
            db_player = self.players_data.search(
                players.name == existing_player)

        for db_play in db_player:
            print_existing_players(db_play)

        choice = existing_player_choice()

        reloaded_player = self.player_data.get(doc_id=choice)

        self.player = None
        self.player = player_list_deserializer(reloaded_player)
        return self.player
    def update_player_elo():
        db = TinyDB("players_data.json", indent=4)
        players = Query()
        player_data = db.table('players_data')

        existing_player = get_existing_player()

        db_players = player_data.search(players.name == existing_player)

        while is_query_empty(db_players):
            error_message("Aucun joueur trouvé")
            existing_player = get_existing_player()
            db_players = player_data.search(players.name == existing_player)

        print_players_title()
        for db_play in db_players:
            print_existing_players(db_play)

        choice = existing_player_choice()

        new_elo = get_new_elo()

        while not is_elo_valid(new_elo):
            error_message("Veuillez entrer un nombre")
            new_elo = get_new_elo()
        else:
            new_elo = int(new_elo)
            os.system("cls")
            print_text("Changement validé !")
            player_data.update({"elo": new_elo}, doc_ids=[choice])
            uploaded_player = player_data.get(doc_id=choice)
            print_existing_players(uploaded_player)

        return new_elo
 def get_and_check_place(self):
     place = get_tournament_place()
     place = place.strip().capitalize()
     while not is_place_valid(place):
         error_message("Le format du lieu est incorrect")
         place = get_tournament_place()
         place = place.strip().capitalize()
     return place
 def get_and_check_name(self):
     name = get_tournament_name()
     name = name.strip().capitalize()
     while not is_tournament_name_valid(name):
         error_message("Le format du nom est incorrect")
         name = get_tournament_name()
         name = name.strip().capitalize()
     return name
 def get_and_check_gender(self):
     gender = get_player_gender()
     gender = gender.lower()
     while not is_gender_valid(gender):
         error_message("Veuillez entrer uniquement 'f' ou 'm'")
         gender = get_player_gender()
         gender.lower()
     return gender.upper()
    def check_update_player_elo(self):
        update_elo = print_update_player_elo()
        update_elo = update_elo.lower()

        while not is_update_player_elo_valid(update_elo):
            error_message("Entrez uniquement " "O" " ou " "N" "")
            update_elo = print_update_player_elo()
            update_elo = update_elo.lower()
        return update_elo
    def get_and_check_continue_or_quit(self):
        quit = get_continue_or_quit()
        quit = quit.lower()

        while not is_continue_or_quit(quit):
            error_message("Aucune commande correspondante")
            quit = get_continue_or_quit()
            quit = quit.lower()
        return quit
 def get_and_check_time_control(self):
     time_control = get_tournament_time_control()
     time_control = time_control.lower()
     while is_time_control_valid(time_control):
         error_message("Le format du contrôle du temps est incorrect")
         time_control = get_tournament_time_control()
         time_control = time_control.lower()
     else:
         time_control = time_control_def(time_control)
     return time_control
 def handle_players_choice(self):
     choice = players_choice()
     while (choice != "1" and choice != "2"):
         error_message("Choisissez 1 ou 2 uniquement")
         choice = players_choice()
     else:
         if (choice == "1"):
             choice = self.new_player()
         elif (choice == "2"):
             choice = self.reload_player()
     return choice
 def get_and_check_name(self):
     name = get_player_name()
     name = name.strip().title()
     while not is_player_name_valid(name):
         error_message("Le format du prénom est incorrect")
         name = get_player_name()
         name = name.strip().title()
     else:
         surname = get_player_surname()
         surname = surname.strip().upper()
         while not is_player_name_valid(surname):
             error_message("Le format du nom est incorrect")
             surname = get_player_surname()
             surname = surname.strip().upper()
     return name, surname
    def new_player(self):
        players = Query()
        name, surname = self.get_and_check_name()
        elo = self.get_and_check_elo()
        self.player = Player(name, surname, elo, score=0)
        db_players = self.players_data.search((players.name == name)
                                              & (players.surname == surname)
                                              & (players.elo == elo))

        while not is_query_empty(db_players):
            error_message("Joueur déjà dans la base de données")
            name, surname = self.get_and_check_name()
            elo = self.get_and_check_elo()
            db_players = self.players_data.search((players.name == name) & (
                players.surname == surname) & (players.elo == elo))

        self.player = Player(name, surname, elo, score=0)
        self.player.birthday = self.get_and_check_date()
        self.player.gender = self.get_and_check_gender()
        self.players_data.insert(player_list_serializer(self.player))

        return self.player
    def reload_tournament(self):
        self.db = TinyDB("tournament_data.json", indent=4)
        tournaments = Query()
        self.tournament_data = self.db.table("tournament_data")

        db_tournament = self.tournament_data.search(
            tournaments.status == "En cours")

        while is_query_empty(db_tournament):
            error_message("Aucun tournoi en cours")
            return

        print_current_tournaments()

        for db_tour in db_tournament:
            number_round_to_run = 4 - len(db_tour["rounds"])
            print_existing_tournaments(db_tour)
            print_number_round_to_run(number_round_to_run)

        choice = tournament_choice()

        reloaded_tournament = self.tournament_data.get(doc_id=choice)

        self.tournament = None
        self.tournament = tournament_deserializer(reloaded_tournament)
        self.tournament.date = set_date()

        nb_of_players = len(self.tournament.players)

        if nb_of_players < 8:
            for i in range(1, (9 - nb_of_players)):
                playerController = PlayerController()
                print_text(f"Joueur {i + nb_of_players} : ")
                player = playerController.handle_players_choice()
                self.tournament.add_player(player)
                self.tournament_data.update(tournament_serializer(
                    self.tournament),
                                            doc_ids=[choice])

        number_round_to_run = 4 - len(self.tournament.rounds)

        if number_round_to_run == 4:
            self.run_first_round()
            self.tournament_data.update(tournament_serializer(self.tournament),
                                        doc_ids=[choice])
            quit = self.get_and_check_continue_or_quit()
            if quit == "q":
                return
            else:
                pass
            for i in range(2, 5):
                self.run_round(i)
                self.tournament_data.update(tournament_serializer(
                    self.tournament),
                                            doc_ids=[choice])
                quit = self.get_and_check_continue_or_quit()
                if quit == "q":
                    return
                else:
                    pass
        else:
            for i in range(len(self.tournament.rounds) + 1, 5):
                self.run_round(i)
                self.tournament_data.update(tournament_serializer(
                    self.tournament),
                                            doc_ids=[choice])
                quit = self.get_and_check_continue_or_quit()
                if quit == "q":
                    return
                else:
                    pass
        self.tournament.status = "Terminé"
        self.tournament_data.update(tournament_serializer(self.tournament),
                                    doc_ids=[choice])

        update_elo = self.check_update_player_elo()

        while True:
            if update_elo == "o":
                PlayerController.update_player_elo()
                update_elo = self.check_update_player_elo()
            else:
                return
 def get_and_check_elo(self):
     elo = get_player_elo()
     while not is_elo_valid(elo):
         error_message("Veuillez entrer un nombre")
         elo = get_player_elo()
     return int(elo)
 def get_and_check_date(self):
     birthday = get_player_birthday()
     while not is_date_valid(birthday):
         error_message("La date n'a pas le bon format dd/mm/YYYY")
         birthday = get_player_birthday()
     return birthday