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