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()
예제 #4
0
 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()
예제 #6
0
 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()
예제 #8
0
 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()
예제 #13
0
 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()
예제 #15
0
 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()
예제 #18
0
 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()