def cadastrar(self): while True: self.tela.menu_cadastrar(self.dict_dados()) botao, valores = self.tela.abreTela() try: if botao == 'Confirmar': if valores['jogador']: nome_jogador = self.tela.strip_str( valores['jogador_nome']) str_posicao = valores['posicao'] posicao = self.pegar_posicao(str_posicao) if nome_jogador in self.listar_nomes_jogadores(): raise DadoIndisponivelError() if nome_jogador == '' or not posicao: raise EntradaVaziaError() jogador = Jogador(nome_jogador, posicao) botao = self.tela.popup_confirmar_cadastro() if botao == 'Confirmar': self.__jogadores_DAO.add(jogador) self.tela.popup_cadastro_criado() elif valores['tecnico']: nome_tecnico = self.tela.strip_str( valores['tecnico_nome']) str_mentalidade = valores['mentalidade'] mentalidade = self.pegar_mentalidade(str_mentalidade) if nome_tecnico in self.listar_nomes_tecnicos(): raise DadoIndisponivelError() elif nome_tecnico == '' or not mentalidade: raise EntradaVaziaError() tecnico = Tecnico(nome_tecnico, mentalidade) botao = self.tela.popup_confirmar_cadastro() if botao == 'Confirmar': self.__tecnicos_DAO.add(tecnico) self.tela.popup_cadastro_criado() elif valores['arbitro']: nome_arbitro = self.tela.strip_str( valores['arbitro_nome']) str_rigidez = valores['rigidez'] rigidez = self.pegar_rigidez(str_rigidez) if nome_arbitro in self.listar_nomes_arbitros(): raise DadoIndisponivelError() elif nome_arbitro == '' or not rigidez: raise EntradaVaziaError() arbitro = Arbitro(nome_arbitro, rigidez) botao = self.tela.popup_confirmar_cadastro() if botao == 'Confirmar': self.__arbitros_DAO.add(arbitro) self.tela.popup_cadastro_criado() else: raise EntradaVaziaError() else: return except ValueError: self.tela.popup_msg_erro_cadastro() except DadoIndisponivelError: self.tela.popup_msg_erro_dado_indisponivel() except EntradaVaziaError: self.tela.popup_msg_erro_cadastro() finally: self.tela.fechaTela()
def buscar(self): while True: self.tela.menu_buscar(self.listar_nomes_jogadores(), self.listar_nomes_tecnicos(), self.listar_nomes_arbitros()) botao, valores = self.tela.abreTela() try: if botao == 'Confirmar': if valores['jogador']: nome_jogador = self.tela.selecionar_entradas( (valores['in_jnome'], valores['lst_jnome'])) jogador = self.buscar_nome(self.jogadores_registrados, nome_jogador) if not jogador: raise EntradaVaziaError() else: self.tela.fechaTela() return self.alterar(jogador) elif valores['tecnico']: nome_tecnico = self.tela.selecionar_entradas( (valores['in_tnome'], valores['lst_tnome'])) tecnico = self.buscar_nome(self.tecnicos_registrados, nome_tecnico) if not tecnico: raise EntradaVaziaError() else: self.tela.fechaTela() return self.alterar(tecnico) elif valores['arbitro']: nome_arbitro = self.tela.selecionar_entradas( (valores['in_anome'], valores['lst_anome'])) arbitro = self.buscar_nome(self.arbitros_registrados, nome_arbitro) if not arbitro: raise EntradaVaziaError() else: self.tela.fechaTela() return self.alterar(arbitro) else: raise EntradaVaziaError() else: return except ValueError: self.tela.popup_msg_erro_cadastro() except EntradaVaziaError: self.tela.popup_msg_erro_cadastro() finally: self.tela.fechaTela()
def remover_competidores(self, campeonato): lista_times = [time.nome for time in self.buscar_nome(campeonato.nome).times if time] while True: self.tela.tela_remover_times(lista_times) botao, valores = self.tela.abreTela() try: if botao == 'Confirmar': nomes_competidores = valores['lstbox'] if len(nomes_competidores) == 0: raise EntradaVaziaError() else: remover = [self.cm.ct.buscar_nome(nome_time).id_ for nome_time in nomes_competidores] competidores = [time for time in campeonato.times if time.id_ in remover] botao = self.tela.popup_confirmar_remocao(len(competidores)) if botao == 'Confirmar': campeonato.remover_times(competidores) self.campeonato_dao.atualizar_objeto(campeonato) return else: return except ValueError: self.tela.popup_msg_erro_cadastro() except TypeError: self.tela.popup_msg_erro_cadastro() except EntradaVaziaError: self.tela.popup_msg_erro_cadastro() except DadoIndisponivelError: self.tela.popup_msg_erro_dado_indisponivel() finally: self.tela.fechaTela()
def ver_partidas_jogadas(self): while True: lista_campeonatos = self.cm.cc.listar_nomes_campeonatos() self.tela.menu_buscar(lista_campeonatos) botao, valores = self.tela.abreTela() self.tela.fechaTela() try: if botao != 'Confirmar': break else: sem_campeonato = valores['check'] if sem_campeonato: partidas = [] for partida in self.partidas: if partida.jogada: partidas.append(partida) campeonato = None else: nome_campeonato = self.tela.selecionar_entradas( (valores['in_camp'], valores['lst_camp'])) campeonato = self.cm.cc.buscar_nome(nome_campeonato) if not campeonato: raise EntradaVaziaError() else: partidas = [] for partida in campeonato.partidas: if partida.jogada: partidas.append(partida) return self.ver_partidas_campeonato(partidas) except EntradaVaziaError: self.tela.popup_msg_erro_partidas() finally: self.tela.fechaTela()
def cadastrar(self): while True: self.tela.menu_cadastrar() botao, valores = self.tela.abreTela() try: if botao == 'Confirmar': nome_campeonato = self.tela.strip_str(valores['campeonato_nome']) n_times = int(valores['n_times']) if '' == nome_campeonato: raise EntradaVaziaError() elif self.buscar_nome(nome_campeonato): raise DadoIndisponivelError() else: botao = self.tela.popup_confirmar_cadastro() if botao == 'Confirmar': campeonato = Campeonato(nome_campeonato, n_times) self.campeonato_dao.add(campeonato) self.tela.popup_cadastro_criado() return else: return except ValueError: self.tela.popup_msg_erro_cadastro() except TypeError: self.tela.popup_msg_erro_cadastro() except DadoIndisponivelError: self.tela.popup_msg_erro_dado_indisponivel() except EntradaVaziaError: self.tela.popup_msg_erro_cadastro() finally: self.tela.fechaTela()
def contratar_tecnico(self, time): tecnicos = [tecnico.nome for tecnico in self.cm.cp.tecnicos_registrados if tecnico.time == ''] while True: self.tela.tela_contratar_tecnico(tecnicos) botao, valores = self.tela.abreTela() try: if botao == 'Confirmar': nome_tecnico = valores['box_tecnicos'] if len(nome_tecnico) == 0: raise EntradaVaziaError() else: nome_tecnico = valores['box_tecnicos'][0] tecnico = self.cm.cp.buscar_nome(self.cm.cp.tecnicos_registrados, nome_tecnico) botao = self.tela.popup_confirmar_compra(1) if botao == 'Confirmar': time.tecnico = tecnico time.tecnico.time = time self.cm.cp.tecnico_dao.atualizar_objeto(tecnico) return else: return except ValueError: self.tela.popup_msg_erro_cadastro() except EntradaVaziaError: self.tela.popup_msg_erro_cadastro() finally: self.tela.fechaTela()
def adicionar_competidores(self, campeonato): lista_times = [time.nome for time in self.cm.ct.times_registrados if time.nome not in campeonato.dict_dados()['times']] while True: self.tela.tela_adicionar_times(lista_times) botao, valores = self.tela.abreTela() try: if botao == 'Confirmar': nomes_competidores = valores['competidores'] if len(nomes_competidores) == 0: raise EntradaVaziaError() else: adicionar = [self.cm.ct.buscar_nome(nome_time).id_ for nome_time in nomes_competidores] competidores = [self.cm.ct.buscar_nome(time) for time in nomes_competidores] botao = self.tela.popup_confirmar_adicao(len(competidores)) if botao == 'Confirmar': campeonato.adicionar_times(competidores) self.campeonato_dao.atualizar_objeto(campeonato) return else: return except ValueError: self.tela.popup_msg_erro_cadastro() except TypeError: self.tela.popup_msg_erro_cadastro() except EntradaVaziaError: self.tela.popup_msg_erro_cadastro() except CapacidadeMaximaError: self.tela.popup_erro_cadastro_cheio() except DadoIndisponivelError: self.tela.popup_msg_erro_dado_indisponivel() finally: self.tela.fechaTela()
def jogar_amistoso(self): while True: self.atualizar_informacoes() lista_times = self.cm.ct.listar_nomes_times() lista_arbitros = self.cm.cp.listar_nomes_arbitros() self.tela.menu_cadastrar(lista_times, lista_arbitros) botao, valores = self.tela.abreTela() if botao == 'Confirmar': time_anfitriao = self.tela.selecionar_entradas( (valores['in_anf'], valores['lst_anf'])) if time_anfitriao != None: time_anfitriao = self.cm.ct.buscar_nome(time_anfitriao) time_visitante = self.tela.selecionar_entradas( (valores['in_vis'], valores['lst_vis'])) if time_visitante != None: time_visitante = self.cm.ct.buscar_nome(time_visitante) arbitro_designado = self.tela.selecionar_entradas( (valores['in_arb'], valores['lst_arb'])) if arbitro_designado != None: arbitro_designado = self.cm.cp.buscar_nome( nome=arbitro_designado, lista=self.cm.cp.arbitros_registrados) else: self.tela.fechaTela() break try: if isinstance(time_anfitriao, Time) and isinstance( time_visitante, Time) and isinstance( arbitro_designado, Arbitro) and (time_anfitriao != time_visitante): if (len(time_anfitriao.jogadores) < time_anfitriao.min_jogadores) or ( len(time_visitante.jogadores) < time_visitante.min_jogadores): raise TimeIncompletoError() else: time_anfitriao = self.cm.ct.time_dao.get( time_anfitriao) time_visitante = self.cm.ct.time_dao.get( time_visitante) arbitro_designado = self.cm.cp.arbitro_dao.get( arbitro_designado) partida = Partida(time_anfitriao, time_visitante, arbitro_designado) botao = self.tela.popup_confirmar_cadastro( f'{partida}') if botao == 'Confirmar': self.partidas_dao.add(partida) self.tela.fechaTela() return self.jogar(partida) else: raise EntradaVaziaError() except EntradaVaziaError: self.tela.popup_msg_erro_cadastro() except TimeIncompletoError: self.tela.popup_erro_time_incompleto() finally: self.tela.fechaTela()
def pegar_posicao(self, nome_posicao): encontrou = False for i in range(len(self.__posicoes)): if self.__posicoes[i + 1].posicao == nome_posicao: encontrou = self.__posicoes[i + 1] if encontrou: return encontrou else: raise EntradaVaziaError()
def pegar_rigidez(self, nome_rigidez): encontrou = False for i in range(len(self.__rigidez)): if self.__rigidez[i + 1].rigidez == nome_rigidez: encontrou = self.__rigidez[i + 1] if encontrou: return encontrou else: raise EntradaVaziaError()
def pegar_mentalidade(self, nome_mentalidade): encontrou = False for i in range(len(self.__mentalidades)): if self.__mentalidades[i + 1].mentalidade == nome_mentalidade: encontrou = self.__mentalidades[i + 1] if encontrou: return encontrou else: raise EntradaVaziaError()
def nome(self, nome): if isinstance(nome, str): if len(nome) > 0: self.__nome = nome for i in range(len(self.jogadores)): self.jogadores[i].time = self else: raise EntradaVaziaError() else: raise TypeError()
def demitir_tecnico(self, time): tecnico = time.tecnico if tecnico == '' or tecnico == None: raise EntradaVaziaError() else: botao = self.tela.popup_confirmar_demissao(time.tecnico.nome) if botao == 'Confirmar': time.tecnico.time = None time.tecnico = None self.cm.cp.tecnico_dao.atualizar_objeto(tecnico)
def adicionar_jogadores(self, jogadores: list): if isinstance(jogadores, list): if (len(jogadores) + len(self.jogadores)) > self.max_jogadores: raise CapacidadeMaximaError() elif len(jogadores) == 0: raise EntradaVaziaError() else: for jogador in jogadores: if not isinstance(jogador, Jogador): raise TypeError else: self.__jogadores.append(jogador) jogador.time = self return True else: raise ListaError()
def jogar_camp(self): while True: self.atualizar_informacoes() lista_campeonatos = self.cm.cc.listar_nomes_campeonatos() self.tela.menu_jogar_camp(lista_campeonatos) botao, valores = self.tela.abreTela() try: if botao != 'Confirmar': self.tela.fechaTela() break else: sem_campeonato = valores['check'] if sem_campeonato: partidas = [] for partida in self.partidas: if not partida.jogada: partidas.append(partida) campeonato = None nome_campeonato = '' else: nome_campeonato = self.tela.selecionar_entradas( (valores['in_camp'], valores['lst_camp'])) campeonato = self.cm.cc.buscar_nome(nome_campeonato) if not campeonato: raise EntradaVaziaError() else: partidas = [ partida for partida in campeonato.partidas if not partida.jogada ] botao = self.tela.popup_jogar_camp(len(partidas), nome_campeonato) if botao != 'Confirmar': self.tela.fechaTela() else: self.tela.fechaTela() for partida in partidas: self.jogar(partida, True, campeonato) return self.ver_partidas_campeonato(partidas) except EntradaVaziaError: self.tela.popup_msg_erro_partidas() self.tela.fechaTela() else: self.cm.cc.campeonato_dao.atualizar_objeto(campeonato) finally: self.tela.fechaTela()
def buscar(self): lista_campeonatos = self.listar_nomes_campeonatos() while True: self.tela.menu_buscar(lista_campeonatos) botao, valores = self.tela.abreTela() try: if botao == 'Confirmar': if valores['check']: self.tela.fechaTela() return self.listar() else: nome_campeonato = self.tela.selecionar_entradas((valores['in_campeonato'], valores['lst_campeonato'])) campeonato = self.buscar_nome(nome_campeonato) if not campeonato: raise EntradaVaziaError() else: self.tela.fechaTela() return self.alterar(campeonato) else: return except EntradaVaziaError: self.tela.popup_msg_erro_cadastro() finally: self.tela.fechaTela()
def alterar(self, cadastro): while True: try: if isinstance(cadastro, Jogador): jogador = self.buscar_nome(self.jogadores_registrados, cadastro.nome) dados = { 'nome': jogador.nome, 'funcao': jogador.funcao, 'time': jogador.time.nome if jogador.time else '', 'posicao': jogador.posicao.posicao, 'gols_m': jogador.gols_marcados, 'gols_c': jogador.gols_concedidos } lista_posicoes = self.dict_dados()['posicoes'] self.tela.janela_jogador(dados, lista_posicoes) botao, valores = self.tela.abreTela() if botao == 'Confirmar': if valores['nome_jogador'] != jogador.nome or valores[ 'posicao'] != jogador.posicao.posicao: botao = self.tela.popup_confirmar_alteracao() if botao == 'Confirmar': indisponivel = self.buscar_nome( self.jogadores_registrados, valores['nome_jogador']) if indisponivel and jogador.id_ != indisponivel.id_: raise DadoIndisponivelError() else: jogador.nome = self.tela.strip_str( valores['nome_jogador']) jogador.posicao = self.pegar_posicao( valores['posicao']) jogador.time = self.cm.ct.buscar_nome( dados['time']) self.jogador_dao.atualizar_objeto(jogador) cadastro = jogador elif botao == 'excluir': return self.excluir(jogador) else: return elif isinstance(cadastro, Tecnico): tecnico = self.buscar_nome(self.tecnicos_registrados, cadastro.nome) dados = { 'nome': tecnico.nome, 'funcao': tecnico.funcao, 'mentalidade': tecnico.mentalidade.mentalidade, 'time': tecnico.time.nome if tecnico.time else '' } lista_mentalidades = self.dict_dados()['mentalidades'] self.tela.janela_tecnico(dados, lista_mentalidades) botao, valores = self.tela.abreTela() if botao == 'Confirmar': if valores['nome_tecnico'] != tecnico.nome or valores[ 'mentalidade'] != tecnico.mentalidade.mentalidade: botao = self.tela.popup_confirmar_alteracao() if botao == 'Confirmar': indisponivel = self.buscar_nome( self.tecnicos_registrados, valores['nome_tecnico']) if indisponivel and tecnico.id_ != indisponivel.id_: raise DadoIndisponivelError() else: tecnico.nome = self.tela.strip_str( valores['nome_tecnico']) tecnico.mentalidade = self.pegar_mentalidade( valores['mentalidade']) tecnico.time = self.cm.ct.buscar_nome( dados['time']) self.tecnico_dao.atualizar_objeto(tecnico) cadastro = tecnico elif botao == 'excluir': return self.excluir(tecnico) else: return elif isinstance(cadastro, Arbitro): arbitro = self.buscar_nome(self.arbitros_registrados, cadastro.nome) dados = { 'nome': arbitro.nome, 'funcao': arbitro.funcao, 'rigidez': arbitro.rigidez } lista_rigidez = self.dict_dados()['rigidez'] self.tela.janela_arbitro(dados, lista_rigidez) botao, valores = self.tela.abreTela() if botao == 'Confirmar': if valores['nome_arbitro'] != arbitro.nome or valores[ 'rigidez'] != arbitro.rigidez.rigidez: botao = self.tela.popup_confirmar_alteracao() if botao == 'Confirmar': indisponivel = self.buscar_nome( self.arbitros_registrados, valores['nome_arbitro']) if indisponivel and arbitro.id_ != indisponivel.id_: raise DadoIndisponivelError() else: arbitro.nome = self.tela.strip_str( valores['nome_arbitro']) arbitro.rigidez = valores['rigidez'] self.arbitro_dao.atualizar_objeto(arbitro) cadastro = arbitro elif botao == 'excluir': return self.excluir(arbitro) else: return else: raise EntradaVaziaError() except EntradaVaziaError: self.tela.popup_msg_erro_cadastro() except DadoIndisponivelError: self.tela.popup_msg_erro_dado_indisponivel() except TypeError: self.tela.popup_msg_erro_cadastro() finally: self.tela.fechaTela()
def criar_partidas(self): self.atualizar_informacoes() while True: lista_campeonatos = self.cm.cc.listar_nomes_campeonatos() self.tela.menu_cadastrar_partidas(lista_campeonatos) botao, valores = self.tela.abreTela() try: if botao != 'Confirmar': self.tela.fechaTela() break else: sem_campeonato = valores['check'] if sem_campeonato: lista = self.cm.ct.times_registrados nome_campeonato = '' else: nome_campeonato = self.tela.selecionar_entradas( (valores['in_camp'], valores['lst_camp'])) camp = self.cm.cc.buscar_nome(nome_campeonato) campeonato = self.cm.cc.campeonato_dao.get(camp) if not campeonato: raise EntradaVaziaError() else: lista = campeonato.times botao = self.tela.popup_confirmar_partidas( len(lista), nome_campeonato) if botao != 'Confirmar': self.tela.fechaTela() return self.criar_partidas() else: partidas = [] arbitros = self.cm.cp.arbitros_registrados for time1 in lista: for time2 in lista: if isinstance(time1, Time) and isinstance( time2, Time): if (len(time1.jogadores) >= time1.min_jogadores) and ( len(time2.jogadores) >= time2.min_jogadores ) and len(arbitros) > 0: if (time1 != time2): i = random.randrange(len(arbitros)) arbitro = arbitros[i] partida = Partida( time1, time2, arbitro) partidas.append(partida) else: raise TimeIncompletoError() else: raise EntradaVaziaError() if not sem_campeonato: campeonato.partidas.extend(partidas) self.cm.cc.campeonato_dao.atualizar_objeto( campeonato) self.partidas_dao.extend(partidas) return partidas except EntradaVaziaError: self.tela.popup_msg_erro_partidas() except TimeIncompletoError: self.tela.popup_erro_time_incompleto() finally: self.tela.fechaTela()