示例#1
0
 def setUpTestData(cls):
     super(GerarJogadoresTorneioChallongeTestCase, cls).setUpTestData()
     
     criar_jogadores_teste(['teets'])
     cls.torneio = criar_torneio_teste()
     
     logar_challonge()
     cls.dados_jogadores = buscar_jogadores_challonge('atevalhalla2')
示例#2
0
 def setUpTestData(cls):
     super(GerarPartidasChallongeTestCase, cls).setUpTestData()
     
     criar_jogadores_teste(['teets'])
     cls.torneio = criar_torneio_teste()
     
     logar_challonge()
     jogadores, times = gerar_jogadores_challonge(buscar_jogadores_challonge('atevalhalla2'), cls.torneio)
     for time in times:
         time.save()
     for jogador in jogadores:
         jogador.save()
     cls.dados_partidas = buscar_partidas_challonge('atevalhalla2')
示例#3
0
 def setUpTestData(cls):
     super(BuscarJogadoresTorneioChallongeTestCase, cls).setUpTestData()
     
     logar_challonge()
示例#4
0
 def setUpTestData(cls):
     super(GerarTorneioChallongeTestCase, cls).setUpTestData()
     
     logar_challonge()
     cls.dados_torneio = buscar_torneio_challonge('atevalhalla2')
示例#5
0
 def setUpTestData(cls):
     super(BuscarPartidasChallongeTestCase, cls).setUpTestData()
     
     logar_challonge()
示例#6
0
def criar_torneio(request):
    """Cria um torneio vinculado ao Challonge"""
    # Precisa ser admin para gerar um torneio
    if not request.user.jogador.admin:
        raise PermissionDenied

    if request.POST:
        form_criar_torneio = CriarTorneioForm(request.POST)

        if form_criar_torneio.is_valid():
            identificador_torneio = form_criar_torneio.cleaned_data[
                'identificador_torneio']
            site = form_criar_torneio.cleaned_data['site']
            delimitador_time = form_criar_torneio.cleaned_data[
                'delimitador_time']

            if site == Torneio.SITE_CHALLONGE_ID:
                # Criar um torneio vinculado ao Challonge
                try:
                    with transaction.atomic():
                        # Verificar se identificador é uma URL
                        if Torneio.SITE_CHALLONGE_URL in identificador_torneio:
                            identificador_torneio = identificador_torneio.split(
                                '/')[-1]

                        # Logar
                        logar_challonge()

                        # Buscar torneio
                        dados_torneio = buscar_torneio_challonge(
                            identificador_torneio)
                        torneio = gerar_torneio_challonge(dados_torneio)
                        torneio.adicionado_por = request.user.jogador
                        torneio.save()

                        # Buscar jogadores
                        dados_jogadores = buscar_jogadores_challonge(
                            identificador_torneio)
                        jogadores, times = gerar_jogadores_challonge(
                            dados_jogadores, torneio, delimitador_time)
                        for time in times:
                            time.save()
                        for jogador in jogadores:
                            if jogador.time:
                                jogador.time_id = jogador.time.id
                            jogador.save()

                        # Buscar partidas
                        dados_partidas = buscar_partidas_challonge(
                            identificador_torneio)
                        partidas, rounds, vitorias_por_ausencia = gerar_partidas_challonge(
                            dados_partidas, torneio)
                        for round_torneio in rounds:
                            round_torneio.save()
                        alterar_nome_rounds(torneio)
                        for partida in partidas:
                            partida.round_id = partida.round.id
                            partida.save()
                        for vitoria_por_ausencia in vitorias_por_ausencia:
                            vitoria_por_ausencia.partida_id = vitoria_por_ausencia.partida.id
                            vitoria_por_ausencia.save()

                        vincular_automaticamente_jogadores_torneio_a_ladder(
                            torneio)

                        messages.success(
                            request, Torneio.MENSAGEM_SUCESSO_CRIACAO_TORNEIO)

                        return redirect(
                            reverse('torneios:editar_torneio',
                                    kwargs={'torneio_id': torneio.id}))

                except Exception as e:
                    messages.error(request, str(e))
            else:
                raise ValueError(Torneio.MENSAGEM_ERRO_SITE_INVALIDO)

        else:
            for erro in form_criar_torneio.non_field_errors():
                messages.error(request, erro)

    else:
        form_criar_torneio = CriarTorneioForm()

    return render(
        request, 'torneios/criar_torneio.html', {
            'opcoes_site': Torneio.OPCOES_SITE,
            'form_criar_torneio': form_criar_torneio
        })