From f96b199abfe1a15ac1d0f0e6b7a48109c4b540f5 Mon Sep 17 00:00:00 2001 From: Edward Oliveira Date: Mon, 14 Aug 2023 09:26:43 -0700 Subject: [PATCH] Revert "Remove redirect de URLs (#3652)" This reverts commit 8262a192abe83a9729c06c673a13e6aec02bd048. --- sapl/redireciona_urls/__init__.py | 0 sapl/redireciona_urls/apps.py | 8 + sapl/redireciona_urls/exceptions.py | 13 + sapl/redireciona_urls/tests.py | 712 +++++++++++++++++++++++ sapl/redireciona_urls/urls.py | 85 +++ sapl/redireciona_urls/views.py | 858 ++++++++++++++++++++++++++++ sapl/settings.py | 1 + sapl/test_urls.py | 27 + sapl/urls.py | 3 + 9 files changed, 1707 insertions(+) create mode 100644 sapl/redireciona_urls/__init__.py create mode 100644 sapl/redireciona_urls/apps.py create mode 100644 sapl/redireciona_urls/exceptions.py create mode 100644 sapl/redireciona_urls/tests.py create mode 100644 sapl/redireciona_urls/urls.py create mode 100644 sapl/redireciona_urls/views.py diff --git a/sapl/redireciona_urls/__init__.py b/sapl/redireciona_urls/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/sapl/redireciona_urls/apps.py b/sapl/redireciona_urls/apps.py new file mode 100644 index 000000000..8ee8742bc --- /dev/null +++ b/sapl/redireciona_urls/apps.py @@ -0,0 +1,8 @@ +from django import apps +from django.utils.translation import ugettext_lazy as _ + + +class AppConfig(apps.AppConfig): + name = 'sapl.redireciona_urls' + label = 'redireciona_urls' + verbose_name = _('Redirecionador de URLs') diff --git a/sapl/redireciona_urls/exceptions.py b/sapl/redireciona_urls/exceptions.py new file mode 100644 index 000000000..e1a994bcb --- /dev/null +++ b/sapl/redireciona_urls/exceptions.py @@ -0,0 +1,13 @@ +from django.utils.translation import ugettext as _ + + +class UnknownUrlNameError(Exception): + + def __init__(self, url_name): + self.url_name = url_name + + def __str__(self): + return repr( + _("Funcionalidade") + + " '%s' " % (self.url_name) + + _("pode ter sido removida ou movida para outra url.")) diff --git a/sapl/redireciona_urls/tests.py b/sapl/redireciona_urls/tests.py new file mode 100644 index 000000000..5a0e8b98f --- /dev/null +++ b/sapl/redireciona_urls/tests.py @@ -0,0 +1,712 @@ +from django.test import TestCase +from django.urls import reverse + + +MovedPermanentlyHTTPStatusCode = 301 +EMPTY_STRING = '' + + +class RedirecionaURLsTests(TestCase): + + def test_redireciona_index_SAPL(self): + response = self.client.get(reverse( + 'sapl.redireciona_urls:redireciona_sapl_index') + ) + url_e = reverse('sapl.base:sapl_index') + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + +class RedirecionaParlamentarTests(TestCase): + url_pattern = 'sapl.redireciona_urls:redireciona_parlamentar' + + def test_redireciona_parlamentar_list(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.parlamentares:parlamentar_list') + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_parlamentar_list_por_legislatura(self): + numero_legislatura = 123 + + url = reverse(self.url_pattern) + url_e = reverse('sapl.parlamentares:parlamentar_list') + + url = "%s%s" % ( + url, + "?hdn_num_legislatura=%s" % (numero_legislatura) + ) + url_e = "%s%s" % (url_e, "?pk=%s" % numero_legislatura) + + response = self.client.get(url) + + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_parlamentar_detail(self): + url = reverse(self.url_pattern) + pk_parlamentar = 21 + url = "%s%s" % (url, "?cod_parlamentar=%s" % (pk_parlamentar)) + url_e = reverse( + 'sapl.parlamentares:parlamentar_detail', + kwargs={'pk': pk_parlamentar} + ) + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + +class RedirecionaComissaoTests(TestCase): + url_pattern = 'sapl.redireciona_urls:redireciona_comissao' + + def test_redireciona_comissao_detail(self): + url = reverse(self.url_pattern) + pk_comissao = 21 + url = "%s%s" % (url, "?cod_comissao=%s" % (pk_comissao)) + url_e = reverse( + 'sapl.comissoes:comissao_detail', + kwargs={'pk': pk_comissao} + ) + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_comissao_list(self): + url = reverse(self.url_pattern) + url_e = reverse( + 'sapl.comissoes:comissao_list') + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + +class RedirecionaPautaSessaoTests(TestCase): + url_pattern = 'sapl.redireciona_urls:redireciona_pauta_sessao_' + + def test_redireciona_pauta_sessao_detail(self): + url = reverse(self.url_pattern) + pk_pauta_sessao = 21 + url = "%s%s" % (url, "?cod_sessao_plen=%s" % (pk_pauta_sessao)) + url_e = reverse( + 'sapl.sessao:pauta_sessao_detail', + kwargs={'pk': pk_pauta_sessao} + ) + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_pauta_sessao_list(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.sessao:pesquisar_pauta') + + response = self.client.get(url) + + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_pauta_sessao_list_por_dat_sessao_sel(self): + + url = reverse(self.url_pattern) + + ano_s_p = "2016" + mes_s_p = "05" + dia_s_p = "14" + data_s_p = "%s/%s/%s" % (dia_s_p, mes_s_p, ano_s_p) + + url = "%s%s" % (url, "?dat_sessao_sel=%s" % data_s_p) + + url_e = reverse('sapl.sessao:pesquisar_pauta') + + args_e = EMPTY_STRING + args_e += "?data_inicio__year=%s" % (ano_s_p) + args_e += "&data_inicio__month=%s" % (mes_s_p.lstrip("0")) + args_e += "&data_inicio__day=%s" % (dia_s_p.lstrip("0")) + args_e += "&tipo=&salvar=Pesquisar" + + url_e = "%s%s" % (url_e, args_e) + + response = self.client.get(url) + + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + +class RedirecionaMesaDiretoraTests(TestCase): + url_pattern = 'sapl.redireciona_urls:redireciona_mesa_diretora' + + def test_redireciona_mesa_diretora(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.parlamentares:mesa_diretora') + + response = self.client.get(url) + + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + +class RedirecionaMesaDiretoraParlamentarTests(TestCase): + url_pattern = 'sapl.redireciona_urls:redireciona_mesa_diretora_parlamentar' + + def test_redireciona_mesa_diretora_parlamentar(self): + url = reverse(self.url_pattern) + pk_parlamentar = 21 + url = "%s%s" % (url, "?cod_parlamentar=%s" % (pk_parlamentar)) + url_e = reverse( + 'sapl.parlamentares:parlamentar_detail', + kwargs={'pk': pk_parlamentar} + ) + + response = self.client.get(url) + + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + +class RedirecionaNormasJuridicasListTests(TestCase): + url_pattern = 'sapl.redireciona_urls:redireciona_norma_juridica_pesquisa' + + def test_redireciona_norma_juridica_pesquisa_sem_parametros(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.norma:norma_pesquisa') + + tipo_norma = EMPTY_STRING + numero_norma = EMPTY_STRING + ano_norma = EMPTY_STRING + periodo_inicial_aprovacao = EMPTY_STRING + periodo_final_aprovacao = EMPTY_STRING + periodo_inicial_publicacao = EMPTY_STRING + periodo_final_publicacao = EMPTY_STRING + ementa_norma = EMPTY_STRING + assuntos_norma = EMPTY_STRING + + args = EMPTY_STRING + args += "?lst_tip_norma=%s" % (tipo_norma) + args += "&txt_numero=%s" % (numero_norma) + args += "&txt_ano=%s" % (ano_norma) + args += "&dt_norma=%s" % (periodo_inicial_aprovacao) + args += "&dt_norma2=%s" % (periodo_final_aprovacao) + args += "&dt_public=%s" % (periodo_inicial_publicacao) + args += "&dt_public2=%s" % (periodo_final_publicacao) + args += "&txt_assunto=%s" % (ementa_norma) + args += "&lst_assunto_norma=%s" % (assuntos_norma) + args += "&salvar=%s" % ('Pesquisar') + url = "%s%s" % (url, args) + + args_e = EMPTY_STRING + args_e += "?tipo=%s" % (tipo_norma) + args_e += "&numero=%s" % (numero_norma) + args_e += "&ano=%s" % (ano_norma) + args_e += "&data_0=%s" % (periodo_inicial_aprovacao) + args_e += "&data_1=%s" % (periodo_final_aprovacao) + args_e += "&data_publicacao_0=%s" % (periodo_inicial_publicacao) + args_e += "&data_publicacao_1=%s" % (periodo_final_publicacao) + args_e += "&ementa=%s" % (ementa_norma) + args_e += "&assuntos=%s" % (assuntos_norma) + args_e += "&salvar=%s" % ('Pesquisar') + url_e = "%s%s" % (url_e, args_e) + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_norma_juridica_pesquisa_por_tipo(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.norma:norma_pesquisa') + + tipo_norma = '4' + numero_norma = EMPTY_STRING + ano_norma = EMPTY_STRING + periodo_inicial_aprovacao = EMPTY_STRING + periodo_final_aprovacao = EMPTY_STRING + periodo_inicial_publicacao = EMPTY_STRING + periodo_final_publicacao = EMPTY_STRING + ementa_norma = EMPTY_STRING + assuntos_norma = EMPTY_STRING + + args = EMPTY_STRING + args += "?lst_tip_norma=%s" % (tipo_norma) + args += "&txt_numero=%s" % (numero_norma) + args += "&txt_ano=%s" % (ano_norma) + args += "&dt_norma=%s" % (periodo_inicial_aprovacao) + args += "&dt_norma2=%s" % (periodo_final_aprovacao) + args += "&dt_public=%s" % (periodo_inicial_publicacao) + args += "&dt_public2=%s" % (periodo_final_publicacao) + args += "&txt_assunto=%s" % (ementa_norma) + args += "&lst_assunto_norma=%s" % (assuntos_norma) + args += "&salvar=%s" % ('Pesquisar') + url = "%s%s" % (url, args) + + args_e = EMPTY_STRING + args_e += "?tipo=%s" % (tipo_norma) + args_e += "&numero=%s" % (numero_norma) + args_e += "&ano=%s" % (ano_norma) + args_e += "&data_0=%s" % (periodo_inicial_aprovacao) + args_e += "&data_1=%s" % (periodo_final_aprovacao) + args_e += "&data_publicacao_0=%s" % (periodo_inicial_publicacao) + args_e += "&data_publicacao_1=%s" % (periodo_final_publicacao) + args_e += "&ementa=%s" % (ementa_norma) + args_e += "&assuntos=%s" % (assuntos_norma) + args_e += "&salvar=%s" % ('Pesquisar') + url_e = "%s%s" % (url_e, args_e) + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_norma_juridica_pesquisa_por_ano(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.norma:norma_pesquisa') + + tipo_norma = EMPTY_STRING + numero_norma = EMPTY_STRING + ano_norma = '2010' + periodo_inicial_aprovacao = EMPTY_STRING + periodo_final_aprovacao = EMPTY_STRING + periodo_inicial_publicacao = EMPTY_STRING + periodo_final_publicacao = EMPTY_STRING + ementa_norma = EMPTY_STRING + assuntos_norma = EMPTY_STRING + + args = EMPTY_STRING + args += "?lst_tip_norma=%s" % (tipo_norma) + args += "&txt_numero=%s" % (numero_norma) + args += "&txt_ano=%s" % (ano_norma) + args += "&dt_norma=%s" % (periodo_inicial_aprovacao) + args += "&dt_norma2=%s" % (periodo_final_aprovacao) + args += "&dt_public=%s" % (periodo_inicial_publicacao) + args += "&dt_public2=%s" % (periodo_final_publicacao) + args += "&txt_assunto=%s" % (ementa_norma) + args += "&lst_assunto_norma=%s" % (assuntos_norma) + args += "&salvar=%s" % ('Pesquisar') + url = "%s%s" % (url, args) + + args_e = EMPTY_STRING + args_e += "?tipo=%s" % (tipo_norma) + args_e += "&numero=%s" % (numero_norma) + args_e += "&ano=%s" % (ano_norma) + args_e += "&data_0=%s" % (periodo_inicial_aprovacao) + args_e += "&data_1=%s" % (periodo_final_aprovacao) + args_e += "&data_publicacao_0=%s" % (periodo_inicial_publicacao) + args_e += "&data_publicacao_1=%s" % (periodo_final_publicacao) + args_e += "&ementa=%s" % (ementa_norma) + args_e += "&assuntos=%s" % (assuntos_norma) + args_e += "&salvar=%s" % ('Pesquisar') + url_e = "%s%s" % (url_e, args_e) + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + +class RedirecionaNormasJuridicasDetailTests(TestCase): + url_pattern = 'sapl.redireciona_urls:redireciona_norma_juridica_detail' + + def test_redireciona_norma_juridica_detail(self): + url = reverse(self.url_pattern) + + pk_norma = 120 + + args = EMPTY_STRING + args += "?cod_norma=%s" % (pk_norma) + url = "%s%s" % (url, args) + + url_e = reverse( + 'sapl.norma:normajuridica_detail', + kwargs={ + 'pk': pk_norma} + ) + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_norma_juridica_detail_sem_parametros(self): + url = reverse(self.url_pattern) + + pk_norma = EMPTY_STRING + + args = EMPTY_STRING + args += "?cod_norma=%s" % (pk_norma) + url = "%s%s" % (url, args) + + url_e = reverse('sapl.norma:norma_pesquisa') + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + +class RedirecionaSessaoPlenariaTests(TestCase): + url_pattern = 'sapl.redireciona_urls:redireciona_sessao_plenaria_' + + def test_redireciona_sessao_plenaria_detail(self): + url = reverse(self.url_pattern) + pk_sessao_plenaria = 258 + url = "%s%s" % (url, "?cod_sessao_plen=%s" % (pk_sessao_plenaria)) + url_e = reverse( + 'sapl.sessao:sessaoplenaria_detail', + kwargs={'pk': pk_sessao_plenaria} + ) + + response = self.client.get(url) + + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_sessao_plenaria_list_sem_parametro(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.sessao:pesquisar_sessao') + + year = EMPTY_STRING + month = EMPTY_STRING + day = EMPTY_STRING + tipo_sessao = EMPTY_STRING + + args = EMPTY_STRING + args += "?ano_sessao_sel=%s" % (year) + args += "&mes_sessao_sel=%s" % (month) + args += "&dia_sessao_sel=%s" % (day) + args += "&tip_sessao_sel=%s" % (tipo_sessao) + url = "%s%s" % (url, args) + + # Remove zeros à esquerda + day = day.lstrip("0") + month = month.lstrip("0") + args_e = EMPTY_STRING + args_e += "?data_inicio__year=%s" % (year) + args_e += "&data_inicio__month=%s" % (month) + args_e += "&data_inicio__day=%s" % (day) + args_e += "&tipo=%s&salvar=Pesquisar" % (tipo_sessao) + url_e = "%s%s" % (url_e, args_e) + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_sessao_plenaria_list_sem_tipo(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.sessao:pesquisar_sessao') + + year = '2015' + month = '04' + day = '06' + tipo_sessao = EMPTY_STRING + + args = EMPTY_STRING + args += "?ano_sessao_sel=%s" % (year) + args += "&mes_sessao_sel=%s" % (month) + args += "&dia_sessao_sel=%s" % (day) + args += "&tip_sessao_sel=%s" % (tipo_sessao) + url = "%s%s" % (url, args) + + # Remove zeros à esquerda + day = day.lstrip("0") + month = month.lstrip("0") + args_e = EMPTY_STRING + args_e += "?data_inicio__year=%s" % (year) + args_e += "&data_inicio__month=%s" % (month) + args_e += "&data_inicio__day=%s" % (day) + args_e += "&tipo=%s&salvar=Pesquisar" % (tipo_sessao) + url_e = "%s%s" % (url_e, args_e) + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_sessao_plenaria_list_sem_tipo_e_ano(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.sessao:pesquisar_sessao') + + year = EMPTY_STRING + month = '04' + day = '06' + tipo_sessao = EMPTY_STRING + + args = EMPTY_STRING + args += "?ano_sessao_sel=%s" % (year) + args += "&mes_sessao_sel=%s" % (month) + args += "&dia_sessao_sel=%s" % (day) + args += "&tip_sessao_sel=%s" % (tipo_sessao) + url = "%s%s" % (url, args) + + # Remove zeros à esquerda + day = day.lstrip("0") + month = month.lstrip("0") + args_e = EMPTY_STRING + args_e += "?data_inicio__year=%s" % (year) + args_e += "&data_inicio__month=%s" % (month) + args_e += "&data_inicio__day=%s" % (day) + args_e += "&tipo=%s&salvar=Pesquisar" % (tipo_sessao) + url_e = "%s%s" % (url_e, args_e) + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_sessao_plenaria_list_sem_ano(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.sessao:pesquisar_sessao') + + year = EMPTY_STRING + month = '04' + day = '06' + tipo_sessao = '4' + + args = EMPTY_STRING + args += "?ano_sessao_sel=%s" % (year) + args += "&mes_sessao_sel=%s" % (month) + args += "&dia_sessao_sel=%s" % (day) + args += "&tip_sessao_sel=%s" % (tipo_sessao) + url = "%s%s" % (url, args) + + # Remove zeros à esquerda + day = day.lstrip("0") + month = month.lstrip("0") + args_e = EMPTY_STRING + args_e += "?data_inicio__year=%s" % (year) + args_e += "&data_inicio__month=%s" % (month) + args_e += "&data_inicio__day=%s" % (day) + args_e += "&tipo=%s&salvar=Pesquisar" % (tipo_sessao) + url_e = "%s%s" % (url_e, args_e) + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_sessao_plenaria_list_sem_mes_dia(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.sessao:pesquisar_sessao') + + year = '2015' + month = EMPTY_STRING + day = EMPTY_STRING + tipo_sessao = '4' + + args = EMPTY_STRING + args += "?ano_sessao_sel=%s" % (year) + args += "&mes_sessao_sel=%s" % (month) + args += "&dia_sessao_sel=%s" % (day) + args += "&tip_sessao_sel=%s" % (tipo_sessao) + url = "%s%s" % (url, args) + + # Remove zeros à esquerda + day = day.lstrip("0") + month = month.lstrip("0") + args_e = EMPTY_STRING + args_e += "?data_inicio__year=%s" % (year) + args_e += "&data_inicio__month=%s" % (month) + args_e += "&data_inicio__day=%s" % (day) + args_e += "&tipo=%s&salvar=Pesquisar" % (tipo_sessao) + url_e = "%s%s" % (url_e, args_e) + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + +class RedirecionaHistoricoTramitacoesListTests(TestCase): + url_pattern = 'sapl.redireciona_urls:redireciona_historico_tramitacoes' + + def test_redireciona_historico_tramitacoes_sem_parametros(self): + args_e = EMPTY_STRING + args = EMPTY_STRING + url = reverse(self.url_pattern) + url_e = reverse('sapl.base:historico_tramitacoes') + + inicio_dt_tramitacao = EMPTY_STRING + fim_dt_tramitacao = EMPTY_STRING + tipo_materia = EMPTY_STRING + unidade_local_tramitacao = EMPTY_STRING + status_tramitacao = EMPTY_STRING + + args += "?txt_dat_inicio_periodo=%s" % (inicio_dt_tramitacao) + args += "&txt_dat_fim_periodo=%s" % (fim_dt_tramitacao) + args += "&lst_tip_materia=%s" % (tipo_materia) + args += "&lst_cod_unid_tram_dest=%s" % (unidade_local_tramitacao) + args += "&lst_status=%s" % (status_tramitacao) + args += "&btn_materia_pesquisar=%s" % ('Pesquisar') + url = "%s%s" % (url, args) + + # Remove zeros à esquerda + inicio_dt_tramitacao = inicio_dt_tramitacao.lstrip("0") + fim_dt_tramitacao = fim_dt_tramitacao.lstrip("0") + tipo_materia = tipo_materia.lstrip("0") + unidade_local_tramitacao = unidade_local_tramitacao.lstrip("0") + status_tramitacao = status_tramitacao.lstrip("0") + + if ( + (inicio_dt_tramitacao != EMPTY_STRING) or + (fim_dt_tramitacao != EMPTY_STRING) or + (tipo_materia != EMPTY_STRING) or + (unidade_local_tramitacao != EMPTY_STRING) or + (status_tramitacao != EMPTY_STRING)): + args_e += "?tramitacao__data_tramitacao_0=%s" % ( + inicio_dt_tramitacao) + args_e += "&tramitacao__data_tramitacao_1=%s" % ( + fim_dt_tramitacao) + args_e += "&tipo=%s" % (tipo_materia) + args_e += "&tramitacao__unidade_tramitacao_local=%s" % ( + unidade_local_tramitacao) + args_e += "&tramitacao__status=%s" % (status_tramitacao) + args_e += "&salvar=%s" % ('Pesquisar') + + url_e = "%s%s" % (url_e, args_e) + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_historico_tramitacoes(self): + args = EMPTY_STRING + args_e = EMPTY_STRING + url = reverse(self.url_pattern) + url_e = reverse('sapl.base:historico_tramitacoes') + + inicio_dt_tramitacao = '12/07/2000' + fim_dt_tramitacao = '26/05/2017' + unidade_local_tramitacao = '0' + tipo_materia = '0' + status_tramitacao = '0' + + args += "?txt_dat_inicio_periodo=%s" % (inicio_dt_tramitacao) + args += "&txt_dat_fim_periodo=%s" % (fim_dt_tramitacao) + args += "&lst_tip_materia=%s" % (tipo_materia) + args += "&lst_cod_unid_tram_dest=%s" % (unidade_local_tramitacao) + args += "&lst_status=%s" % (status_tramitacao) + args += "&btn_materia_pesquisar=%s" % ('Pesquisar') + url = "%s%s" % (url, args) + + # Remove zeros à esquerda + inicio_dt_tramitacao = inicio_dt_tramitacao.lstrip("0") + fim_dt_tramitacao = fim_dt_tramitacao.lstrip("0") + tipo_materia = tipo_materia.lstrip("0") + unidade_local_tramitacao = unidade_local_tramitacao.lstrip("0") + status_tramitacao = status_tramitacao.lstrip("0") + + if ( + (inicio_dt_tramitacao != EMPTY_STRING) or + (fim_dt_tramitacao != EMPTY_STRING) or + (tipo_materia != EMPTY_STRING) or + (unidade_local_tramitacao != EMPTY_STRING) or + (status_tramitacao != EMPTY_STRING)): + args_e += "?tramitacao__data_tramitacao_0=%s" % ( + inicio_dt_tramitacao) + args_e += "&tramitacao__data_tramitacao_1=%s" % ( + fim_dt_tramitacao) + args_e += "&tipo=%s" % (tipo_materia) + args_e += "&tramitacao__unidade_tramitacao_local=%s" % ( + unidade_local_tramitacao) + args_e += "&tramitacao__status=%s" % (status_tramitacao) + args_e += "&salvar=%s" % ('Pesquisar') + + url_e = "%s%s" % (url_e, args_e) + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + +class RedirecionaPresencaParlamentaresTests(TestCase): + url_pattern = 'sapl.redireciona_urls:redireciona_presencaparlamentar_list' + + def test_redireciona_presenca_list_sem_parametros(self): + args_e = EMPTY_STRING + args = EMPTY_STRING + url = reverse(self.url_pattern) + url_e = reverse('sapl.base:presenca_sessao') + + inicio_intervalo_presenca = EMPTY_STRING + fim_intervalo_presenca = EMPTY_STRING + + args += "?txt_dat_inicio=%s" % ( + inicio_intervalo_presenca) + args += "&txt_dat_fim=%s" % ( + fim_intervalo_presenca) + url = "%s%s" % (url, args) + + # Remove zeros à esquerda + inicio_intervalo_presenca = inicio_intervalo_presenca.lstrip("0") + fim_intervalo_presenca = fim_intervalo_presenca.lstrip("0") + + args_e += "?data_inicio_0=%s" % ( + inicio_intervalo_presenca) + args_e += "&data_inicio_1=%s" % ( + fim_intervalo_presenca) + args_e += "&salvar=%s" % ('Pesquisar') + + url_e = "%s%s" % (url_e, args_e) + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_presenca_list(self): + args_e = EMPTY_STRING + args = EMPTY_STRING + url = reverse(self.url_pattern) + url_e = reverse('sapl.base:presenca_sessao') + + inicio_intervalo_presenca = '01/02/2015' + fim_intervalo_presenca = '01/02/2017' + + args += "?txt_dat_inicio=%s" % ( + inicio_intervalo_presenca) + args += "&txt_dat_fim=%s" % ( + fim_intervalo_presenca) + url = "%s%s" % (url, args) + + # Remove zeros à esquerda + inicio_intervalo_presenca = inicio_intervalo_presenca.lstrip("0") + fim_intervalo_presenca = fim_intervalo_presenca.lstrip("0") + + args_e += "?data_inicio_0=%s" % ( + inicio_intervalo_presenca) + args_e += "&data_inicio_1=%s" % ( + fim_intervalo_presenca) + args_e += "&salvar=%s" % ('Pesquisar') + + url_e = "%s%s" % (url_e, args_e) + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + +class RedirecionaMateriasPorAutorTests(TestCase): + url_pattern = 'sapl.redireciona_urls:redireciona_materias_por_autor_list' + + def test_redireciona_materias_por_autor_list_sem_parametros(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.base:materia_por_autor') + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + +class RedirecionaMateriasPorAnoAutorTipoTests(TestCase): + url_pattern = ( + 'sapl.redireciona_urls:redireciona_materia_por_ano_autor_tipo_list') + + def test_redireciona_materias_por_ano_autor_tipo_list_sem_parametros(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.base:materia_por_ano_autor_tipo') + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) + + def test_redireciona_materias_por_ano_autor_tipo_list(self): + url = reverse(self.url_pattern) + url_e = reverse('sapl.base:materia_por_ano_autor_tipo') + + ano = 2017 + + args = "?ano=%s" % (ano) + url = "%s%s" % (url, args) + + args_e = "?ano=%s&salvar=Pesquisar" % (ano) + url_e = "%s%s" % (url_e, args_e) + + response = self.client.get(url) + self.assertEqual(response.status_code, MovedPermanentlyHTTPStatusCode) + self.assertEqual(response.url, url_e) diff --git a/sapl/redireciona_urls/urls.py b/sapl/redireciona_urls/urls.py new file mode 100644 index 000000000..f8a9aa685 --- /dev/null +++ b/sapl/redireciona_urls/urls.py @@ -0,0 +1,85 @@ +from django.conf.urls import url + +from .apps import AppConfig +from .views import (RedirecionaAtasList, RedirecionaComissao, + RedirecionaComposicaoComissao, + RedirecionaHistoricoTramitacoesList, + RedirecionaMateriaLegislativaDetail, + RedirecionaMateriaLegislativaList, + RedirecionaMateriasPorAnoAutorTipo, + RedirecionaMateriasPorAutor, RedirecionaMesaDiretoraView, + RedirecionaNormasJuridicasDetail, + RedirecionaNormasJuridicasList, + RedirecionaNormasJuridicasTextoIntegral, + RedirecionaParlamentar, RedirecionaPautaSessao, + RedirecionaPresencaParlamentares, + RedirecionaRelatoriosList, + RedirecionaRelatoriosMateriasEmTramitacaoList, + RedirecionaSAPLIndex, RedirecionaSessaoPlenaria) + +app_name = AppConfig.name +urlpatterns = [ + url(r'^default_index_html$', + RedirecionaSAPLIndex.as_view(), + name='redireciona_sapl_index'), + url(r'^consultas/parlamentar/parlamentar_', + RedirecionaParlamentar.as_view(), + name='redireciona_parlamentar'), + url(r'^consultas/comissao/comissao_', + RedirecionaComissao.as_view(), + name='redireciona_comissao'), + url(r'^consultas/comissao/composicao/composicao_index_html', + RedirecionaComposicaoComissao.as_view(), + name='redireciona_composicaio_comissao'), + url(r'^consultas/pauta_sessao/pauta_sessao_', + RedirecionaPautaSessao.as_view(), + name='redireciona_pauta_sessao_'), + url(r'^consultas/mesa_diretora/mesa_diretora_index_html', + RedirecionaMesaDiretoraView.as_view(), + name='redireciona_mesa_diretora'), + url(r'^consultas/mesa_diretora/parlamentar/parlamentar_', + RedirecionaParlamentar.as_view(), + name='redireciona_mesa_diretora_parlamentar'), + url(r'^consultas/sessao_plenaria/', + RedirecionaSessaoPlenaria.as_view(), + name='redireciona_sessao_plenaria_'), + url(r'^generico/norma_juridica_pesquisar_', + RedirecionaNormasJuridicasList.as_view(), + name='redireciona_norma_juridica_pesquisa'), + url(r'^consultas/norma_juridica/norma_juridica_mostrar_proc', + RedirecionaNormasJuridicasDetail.as_view(), + name='redireciona_norma_juridica_detail'), + url(r'^sapl_documentos/norma_juridica/(?P[0-9]+)_texto_integral', + RedirecionaNormasJuridicasTextoIntegral.as_view(), + name='redireciona_norma_juridica_texto_integral'), + url(r'^relatorios_administrativos/relatorios_administrativos_index_html$', + RedirecionaRelatoriosList.as_view(), + name='redireciona_relatorios_list'), + url(r'tramitacaoMaterias/tramitacaoMaterias', + RedirecionaRelatoriosMateriasEmTramitacaoList.as_view(), + name='redireciona_relatorio_materia_por_tramitacao'), + url(r'tramitacaoMaterias/materia_mostrar_proc$', + RedirecionaMateriaLegislativaDetail.as_view(), + name='redireciona_materialegislativa_detail_tramitacao'), + url(r'consultas/materia/materia_mostrar_proc$', + RedirecionaMateriaLegislativaDetail.as_view(), + name='redireciona_materialegislativa_detail'), + url(r'^generico/materia_pesquisar_', + RedirecionaMateriaLegislativaList.as_view(), + name='redireciona_materialegislativa_list'), + url(r'historicoTramitacoes/historicoTramitacoes', + RedirecionaHistoricoTramitacoesList.as_view(), + name='redireciona_historico_tramitacoes'), + url(r'atasSessao', + RedirecionaAtasList.as_view(), + name='redireciona_atas_list'), + url(r'presencaSessao', + RedirecionaPresencaParlamentares.as_view(), + name='redireciona_presencaparlamentar_list'), + url(r'resumoPropositurasAutor', + RedirecionaMateriasPorAutor.as_view(), + name='redireciona_materias_por_autor_list'), + url(r'propositurasAnoAutorTipo', + RedirecionaMateriasPorAnoAutorTipo.as_view(), + name='redireciona_materia_por_ano_autor_tipo_list'), +] \ No newline at end of file diff --git a/sapl/redireciona_urls/views.py b/sapl/redireciona_urls/views.py new file mode 100644 index 000000000..435280b3b --- /dev/null +++ b/sapl/redireciona_urls/views.py @@ -0,0 +1,858 @@ +import logging + +from django.urls import NoReverseMatch, reverse +from django.views.generic import RedirectView + +from sapl.audiencia.apps import AppConfig as audienciaConfig +from sapl.base.apps import AppConfig as atasConfig +from sapl.comissoes.apps import AppConfig as comissoesConfig +from sapl.materia.apps import AppConfig as materiaConfig +from sapl.norma.apps import AppConfig as normaConfig +from sapl.norma.models import NormaJuridica +from sapl.parlamentares.apps import AppConfig as parlamentaresConfig +from sapl.sessao.apps import AppConfig as sessaoConfig +from .exceptions import UnknownUrlNameError + +EMPTY_STRING = '' + +presenca_sessaoConfig = relatoriosConfig = atasConfig + +app_parlamentares = parlamentaresConfig.name +app_atas = atasConfig.name +app_presenca_sessao = presenca_sessaoConfig.name +app_comissoes = comissoesConfig.name +app_materia = materiaConfig.name +app_sessao = sessaoConfig.name +app_norma = normaConfig.name +app_relatorios = relatoriosConfig.name +app_audiencia = audienciaConfig.name + +pesquisar_atas = (app_atas + ':atas') +presenca_sessao = (app_presenca_sessao + ':presenca_sessao') +parlamentar_list = (app_parlamentares + ':parlamentar_list') +parlamentar_detail = (app_parlamentares + ':parlamentar_detail') +parlamentar_mesa_diretora = (app_parlamentares + ':mesa_diretora') + +comissao_list = (app_comissoes + ':comissao_list') +comissao_detail = (app_comissoes + ':comissao_detail') + +audiencia = (app_audiencia + ':audiencia') +reuniao_detail = (app_comissoes + ':reuniao_detail') + +materialegislativa_detail = (app_materia + ':materialegislativa_detail') +materialegislativa_list = (app_materia + ':pesquisar_materia') + +pauta_sessao_list = (app_sessao + ':pesquisar_pauta') +pauta_sessao_detail = (app_sessao + ':pauta_sessao_detail') +sessao_plenaria_list = (app_sessao + ':pesquisar_sessao') +sessao_plenaria_detail = (app_sessao + ':sessaoplenaria_detail') + +norma_juridica_detail = (app_norma + ':normajuridica_detail') +norma_juridica_pesquisa = (app_norma + ':norma_pesquisa') + +relatorios_list = (app_relatorios + ':relatorios_list') +relatorio_materia_por_tramitacao = (app_relatorios + ':materia_por_tramitacao') +relatorio_materia_por_autor = (app_relatorios + ':materia_por_autor') +relatorio_materia_por_ano_autor_tipo = ( + app_relatorios + ':materia_por_ano_autor_tipo') +historico_tramitacoes = (app_relatorios + ':historico_tramitacoes') + + +def has_iframe(url, request): + + iframe = request.GET.get( + 'iframe', + EMPTY_STRING) + if iframe: + iframe_qs = ("iframe=" + iframe) + url += ("&" if "?" in url else "?") + url += iframe_qs + + return url + + +class RedirecionaSAPLIndex(RedirectView): + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + url_pattern = 'sapl.base:sapl_index' + username = self.request.user.username + try: + self.logger.info("user=" + username + ". Tentando obter url.") + url = reverse(url_pattern) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(url_pattern) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaParlamentar(RedirectView): + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + + url = EMPTY_STRING + pk_parlamentar = self.request.GET.get( + 'cod_parlamentar', + EMPTY_STRING) + username = self.request.user.username + + if pk_parlamentar: + try: + kwargs = {'pk': pk_parlamentar} + self.logger.debug("user=" + username + + ". Tentando obter url correspondente.") + url = reverse(parlamentar_detail, kwargs=kwargs) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(parlamentar_detail, kwargs=kwargs) + else: + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(parlamentar_list) + except NoReverseMatch: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(parlamentar_list) + + numero_legislatura = self.request.GET.get( + 'hdn_num_legislatura', + EMPTY_STRING) + if numero_legislatura: + args = '?pk=' + numero_legislatura + url = "%s%s" % (url, args) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaComissao(RedirectView): + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + url = EMPTY_STRING + pk_comissao = self.request.GET.get('cod_comissao', EMPTY_STRING) + username = self.request.user.username + + if pk_comissao: + kwargs = {'pk': pk_comissao} + + try: + self.logger.debug("user=" + username + + ". Tentando obter url correspondente.") + url = reverse(comissao_detail, kwargs=kwargs) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(comissao_detail) + else: + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(comissao_list) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(comissao_list) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaComposicaoComissao(RedirectView): + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + url = EMPTY_STRING + pk_composicao = self.request.GET.get( + 'cod_periodo_comp_sel', EMPTY_STRING) + pk_comissao = self.request.GET.get('cod_comissao', EMPTY_STRING) + username = self.request.user.username + + if pk_comissao: + kwargs = {'pk': pk_comissao} + + try: + self.logger.debug("user=" + username + + ". Tentando obter url correspondente.") + url = reverse(comissao_detail, kwargs=kwargs) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(comissao_detail) + else: + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(comissao_list) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(comissao_list) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaPautaSessao(RedirectView): + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + + pk_sessao_plenaria = self.request.GET.get( + 'cod_sessao_plen', + EMPTY_STRING) + username = self.request.user.username + + if pk_sessao_plenaria: + kwargs = {'pk': pk_sessao_plenaria} + try: + self.logger.debug("user=" + username + + ". Tentando obter url correspondente.") + url = reverse(pauta_sessao_detail, kwargs=kwargs) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(pauta_sessao_detail) + else: + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(pauta_sessao_list) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(pauta_sessao_list) + + data_sessao_plenaria = self.request.GET.get( + 'dat_sessao_sel', + EMPTY_STRING) + + if data_sessao_plenaria: + dia_s_p, mes_s_p, ano_s_p = data_sessao_plenaria.split('/') + # Remove zeros à esquerda de dia_s_p e mes_s_p + dia_s_p = dia_s_p.lstrip("0") + mes_s_p = mes_s_p.lstrip("0") + args = EMPTY_STRING + args += "?data_inicio__year=%s" % (ano_s_p) + args += "&data_inicio__month=%s" % (mes_s_p) + args += "&data_inicio__day=%s" % (dia_s_p) + args += "&tipo=&salvar=Pesquisar" + url = "%s%s" % (url, args) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaSessaoPlenaria(RedirectView): + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + pk_sessao_plenaria = self.request.GET.get( + 'cod_sessao_plen', + EMPTY_STRING) + url = EMPTY_STRING + username = self.request.user.username + if pk_sessao_plenaria: + kwargs = {'pk': pk_sessao_plenaria} + try: + self.logger.debug("user=" + username + + ". Tentando obter url correspondente.") + url = reverse(sessao_plenaria_detail, kwargs=kwargs) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(sessao_plenaria_detail) + + else: + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(sessao_plenaria_list) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(sessao_plenaria_list) + + year = self.request.GET.get( + 'ano_sessao_sel', + EMPTY_STRING) + month = self.request.GET.get( + 'mes_sessao_sel', + EMPTY_STRING) + day = self.request.GET.get( + 'dia_sessao_sel', + EMPTY_STRING) + tipo_sessao = self.request.GET.get( + 'tip_sessao_sel', + EMPTY_STRING) + + # Remove zeros à esquerda + day = day.lstrip("0") + month = month.lstrip("0") + args = EMPTY_STRING + args += "?data_inicio__year=%s" % (year) + args += "&data_inicio__month=%s" % (month) + args += "&data_inicio__day=%s" % (day) + args += "&tipo=%s&salvar=Pesquisar" % (tipo_sessao) + url = "%s%s" % (url, args) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaRelatoriosList(RedirectView): + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + + url = EMPTY_STRING + username = self.request.user.username + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(relatorios_list) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(relatorios_list) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaRelatoriosMateriasEmTramitacaoList(RedirectView): + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + url = EMPTY_STRING + username = self.request.user.username + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(relatorio_materia_por_tramitacao) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(relatorio_materia_por_tramitacao) + + year = self.request.GET.get( + 'selAno', + EMPTY_STRING) + if year: + tramitacao_tipo = self.request.GET.get( + 'lst_tip_materia', + EMPTY_STRING) + tramitacao_unidade_local = self.request.GET.get( + 'lst_cod_unid_tram_dest', + EMPTY_STRING) + tramitacao_status = self.request.GET.get( + 'lst_status', + EMPTY_STRING) + salvar = self.request.GET.get( + 'btn_materia_pesquisar', + 'Pesquisar') + + tramitacao_tipo = tramitacao_tipo.lstrip("0") + tramitacao_unidade_local = tramitacao_unidade_local.lstrip("0") + tramitacao_status = tramitacao_status.lstrip("0") + + args = EMPTY_STRING + args += "?ano=%s" % (year) + args += "&tipo=%s" % (tramitacao_tipo) + args += "&tramitacao__unidade_tramitacao_local=%s" % ( + tramitacao_unidade_local) + args += "&tramitacao__status=%s" % (tramitacao_status) + args += "&salvar=%s" % (salvar) + url = "%s%s" % (url, args) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaMateriaLegislativaDetail(RedirectView): + permanent = True + + def get_redirect_url(self): + url = EMPTY_STRING + pk = self.request.GET.get('cod_materia', EMPTY_STRING) + + if pk: + kwargs = {'pk': pk} + url = reverse(materialegislativa_detail, kwargs=kwargs) + else: + url = reverse(materialegislativa_list) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaMateriaLegislativaList(RedirectView): + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + url = EMPTY_STRING + args = EMPTY_STRING + username = self.request.user.username + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(materialegislativa_list) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(materialegislativa_list) + + tipo_materia = self.request.GET.get( + 'lst_tip_materia', + EMPTY_STRING) + numero_materia = self.request.GET.get( + 'txt_numero', + EMPTY_STRING) + ano_materia = self.request.GET.get( + 'txt_ano', + EMPTY_STRING) + num_protocolo_materia = self.request.GET.get( + 'txt_num_protocolo', + EMPTY_STRING) + periodo_inicial_apresentacao = self.request.GET.get( + 'dt_apres', + EMPTY_STRING) + periodo_final_apresentacao = self.request.GET.get( + 'dt_apres2', + EMPTY_STRING) + periodo_inicial_publicacao = self.request.GET.get( + 'dt_public', + EMPTY_STRING) + periodo_final_publicacao = self.request.GET.get( + 'dt_public2', + EMPTY_STRING) + tipo_autor = self.request.GET.get( + 'lst_tip_autor', + EMPTY_STRING) + ementa_materia = self.request.GET.get( + 'txt_assunto', + EMPTY_STRING) + tramitando = self.request.GET.get( + 'rad_tramitando', + EMPTY_STRING) + status_tramitacao = self.request.GET.get( + 'lst_status', + EMPTY_STRING) + + args += "?tipo=%s" % (tipo_materia) + args += "&numero=%s" % (numero_materia) + args += "&ano=%s" % (ano_materia) + args += "&numero_protocolo=%s" % (num_protocolo_materia) + args += "&data_apresentacao_0=%s" % (periodo_inicial_apresentacao) + args += "&data_apresentacao_1=%s" % (periodo_final_apresentacao) + args += "&data_publicacao_0=%s" % (periodo_inicial_publicacao) + args += "&data_publicacao_1=%s" % (periodo_final_publicacao) + args += "&autoria__autor=%s" % (EMPTY_STRING) + args += "&autoria__autor__tipo=%s" % (tipo_autor) + args += "&relatoria__parlamentar_id=%s" % (EMPTY_STRING) + args += "&local_origem_externa=%s" % (EMPTY_STRING) + args += "&tramitacao__unidade_tramitacao_destino=%s" % (EMPTY_STRING) + args += "&tramitacao__status=%s" % (status_tramitacao) + args += "&em_tramitacao=%s" % (tramitando) + args += "&o=%s" % (EMPTY_STRING) + args += "&materiaassunto__assunto=%s" % (EMPTY_STRING) + args += "&ementa=%s" % (ementa_materia) + args += "&salvar=%s" % ('Pesquisar') # Default in both SAPL version + + url = "%s%s" % (url, args) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaMesaDiretoraView(RedirectView): + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + + url = EMPTY_STRING + username = self.request.user.username + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(parlamentar_mesa_diretora) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(parlamentar_mesa_diretora) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaNormasJuridicasDetail(RedirectView): + permanent = True + + def get_redirect_url(self): + url = EMPTY_STRING + pk_norma = self.request.GET.get('cod_norma', EMPTY_STRING) + + if pk_norma: + kwargs = {'pk': pk_norma} + url = reverse(norma_juridica_detail, kwargs=kwargs) + else: + url = reverse(norma_juridica_pesquisa) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaNormasJuridicasTextoIntegral(RedirectView): + permanent = False + logger = logging.getLogger(__name__) + + def get_redirect_url(self, **kwargs): + url = EMPTY_STRING + username = self.request.user.username + try: + self.logger.debug( + "user=" + username + ". Tentando obter NormaJuridica com pk={}.".format(kwargs['norma_id'])) + norma = NormaJuridica.objects.get(pk=kwargs['norma_id']) + if norma: + url = norma.texto_integral.url + except Exception as e: + self.logger.error( + "user=" + username + ". Erro ao obter NormaJuridica com pk={}. ".format(kwargs['norma_id']) + str(e)) + raise e + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaNormasJuridicasList(RedirectView): + + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + url = EMPTY_STRING + args = EMPTY_STRING + username = self.request.user.username + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(norma_juridica_pesquisa) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(norma_juridica_pesquisa) + + tipo_norma = self.request.GET.get( + 'lst_tip_norma', + EMPTY_STRING) + numero_norma = self.request.GET.get( + 'txt_numero', + EMPTY_STRING) + ano_norma = self.request.GET.get( + 'txt_ano', + EMPTY_STRING) + periodo_inicial_aprovacao = self.request.GET.get( + 'dt_norma', + EMPTY_STRING) + periodo_final_aprovacao = self.request.GET.get( + 'dt_norma2', + EMPTY_STRING) + periodo_inicial_publicacao = self.request.GET.get( + 'dt_public', + EMPTY_STRING) + periodo_final_publicacao = self.request.GET.get( + 'dt_public2', + EMPTY_STRING) + ementa_norma = self.request.GET.get( + 'txt_assunto', + EMPTY_STRING) + assuntos_norma = self.request.GET.get( + 'lst_assunto_norma', + EMPTY_STRING) + + args += "?tipo=%s" % (tipo_norma) + args += "&numero=%s" % (numero_norma) + args += "&ano=%s" % (ano_norma) + args += "&data_0=%s" % (periodo_inicial_aprovacao) + args += "&data_1=%s" % (periodo_final_aprovacao) + args += "&data_publicacao_0=%s" % (periodo_inicial_publicacao) + args += "&data_publicacao_1=%s" % (periodo_final_publicacao) + args += "&ementa=%s" % (ementa_norma) + args += "&assuntos=%s" % (assuntos_norma) + args += "&salvar=%s" % ('Pesquisar') # Default in both SAPL version + + url = "%s%s" % (url, args) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaHistoricoTramitacoesList(RedirectView): + + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + + url = EMPTY_STRING + args = EMPTY_STRING + username = self.request.user.username + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(historico_tramitacoes) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(historico_tramitacoes) + + inicio_intervalo_data_tramitacao = self.request.GET.get( + 'txt_dat_inicio_periodo', + EMPTY_STRING + ).lstrip("0") + fim_intervalo_data_tramitacao = self.request.GET.get( + 'txt_dat_fim_periodo', + EMPTY_STRING + ).lstrip("0") + tipo_materia = self.request.GET.get( + 'lst_tip_materia', + EMPTY_STRING + ).lstrip("0") + unidade_local_tramitacao = self.request.GET.get( + 'lst_cod_unid_tram_dest', + EMPTY_STRING + ).lstrip("0") + status_tramitacao = self.request.GET.get( + 'lst_status', + EMPTY_STRING + ).lstrip("0") + + if ( + (inicio_intervalo_data_tramitacao != EMPTY_STRING) or + (fim_intervalo_data_tramitacao != EMPTY_STRING) or + (tipo_materia != EMPTY_STRING) or + (unidade_local_tramitacao != EMPTY_STRING) or + (status_tramitacao != EMPTY_STRING)): + + args += "?tramitacao__data_tramitacao_0=%s" % ( + inicio_intervalo_data_tramitacao) + args += "&tramitacao__data_tramitacao_1=%s" % ( + fim_intervalo_data_tramitacao) + args += "&tipo=%s" % (tipo_materia) + args += "&tramitacao__unidade_tramitacao_local=%s" % ( + unidade_local_tramitacao) + args += "&tramitacao__status=%s" % (status_tramitacao) + args += "&salvar=%s" % ('Pesquisar') + + url = "%s%s" % (url, args) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaAtasList(RedirectView): + + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + + url = EMPTY_STRING + args = EMPTY_STRING + username = self.request.user.username + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(pesquisar_atas) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(pesquisar_atas) + + inicio_intervalo_data_ata = self.request.GET.get( + 'txt_dat_inicio', + EMPTY_STRING + ).lstrip("0") + fim_intervalo_data_ata = self.request.GET.get( + 'txt_dat_fim', + EMPTY_STRING + ).lstrip("0") + + args += "?data_inicio_0=%s" % ( + inicio_intervalo_data_ata) + args += "&data_inicio_1=%s" % ( + fim_intervalo_data_ata) + args += "&salvar=%s" % ('Pesquisar') + + url = "%s%s" % (url, args) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaPresencaParlamentares(RedirectView): + + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + + url = EMPTY_STRING + args = EMPTY_STRING + username = self.request.user.username + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(presenca_sessao) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(presenca_sessao) + + inicio_intervalo_data_presenca_parlamentar = self.request.GET.get( + 'txt_dat_inicio', + EMPTY_STRING + ).lstrip("0") + fim_intervalo_data_presenca_parlamentar = self.request.GET.get( + 'txt_dat_fim', + EMPTY_STRING + ).lstrip("0") + + args += "?data_inicio_0=%s" % ( + inicio_intervalo_data_presenca_parlamentar) + args += "&data_inicio_1=%s" % ( + fim_intervalo_data_presenca_parlamentar) + args += "&salvar=%s" % ('Pesquisar') + + url = "%s%s" % (url, args) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaMateriasPorAutor(RedirectView): + + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + url = EMPTY_STRING + username = self.request.user.username + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(relatorio_materia_por_autor) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(relatorio_materia_por_autor) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaMateriasPorAnoAutorTipo(RedirectView): + + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + + url = EMPTY_STRING + ano = self.request.GET.get('ano', '') + username = self.request.user.username + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(relatorio_materia_por_ano_autor_tipo) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(relatorio_materia_por_ano_autor_tipo) + + if ano: + args = "?ano=%s" % (ano) + args += "&salvar=%s" % ('Pesquisar') + url = "%s%s" % (url, args) + + url = has_iframe(url, self.request) + + return url + + +class RedirecionaReuniao(RedirectView): + permanent = True + logger = logging.getLogger(__name__) + + def get_redirect_url(self): + + pk_reuniao = self.request.GET.get( + 'cod_comissao', + EMPTY_STRING) + url = EMPTY_STRING + username = self.request.user.username + if pk_reuniao: + kwargs = {'pk': pk_reuniao} + try: + self.logger.debug( + "user=" + username + ". Tentando obter url correspondente (pk={}).".format(kwargs['pk'])) + url = reverse(reuniao_detail, kwargs=kwargs) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(reuniao_detail) + + else: + try: + self.logger.debug("user=" + username + ". Tentando obter url.") + url = reverse(reuniao_list) + except NoReverseMatch as e: + self.logger.error("user=" + username + + ". Erro ao obter url. " + str(e)) + raise UnknownUrlNameError(reuniao_list) + + year = self.request.GET.get( + 'ano_reuniao', + EMPTY_STRING) + month = self.request.GET.get( + 'mes_reuniao', + EMPTY_STRING) + day = self.request.GET.get( + 'dia_reuniao', + EMPTY_STRING) + tipo_reuniao = self.request.GET.get( + 'tip_reuniao', + EMPTY_STRING) + + # Remove zeros à esquerda + day = day.lstrip("0") + month = month.lstrip("0") + args = EMPTY_STRING + args += "?data_inicio__year=%s" % (year) + args += "&data_inicio__month=%s" % (month) + args += "&data_inicio__day=%s" % (day) + args += "&tipo=%s&salvar=Pesquisar" % (tipo_reuniao) + url = "%s%s" % (url, args) + + url = has_iframe(url, self.request) + + return url diff --git a/sapl/settings.py b/sapl/settings.py index 77721488b..c23acd084 100644 --- a/sapl/settings.py +++ b/sapl/settings.py @@ -61,6 +61,7 @@ SAPL_APPS = ( 'sapl.lexml', 'sapl.painel', 'sapl.protocoloadm', + 'sapl.redireciona_urls', 'sapl.compilacao', 'sapl.api', 'sapl.rules' diff --git a/sapl/test_urls.py b/sapl/test_urls.py index 3d317821a..b01baec1b 100644 --- a/sapl/test_urls.py +++ b/sapl/test_urls.py @@ -175,6 +175,30 @@ apps_url_patterns_prefixs_and_users = { '/ta', '/sistema/ta', ]}, + 'redireciona_urls': { + 'prefixs': [ + '/default_index_html', + '/consultas/parlamentar/parlamentar_', + '/consultas/comissao/comissao_', + '/consultas/pauta_sessao/pauta_sessao_', + '/consultas/sessao_plenaria/', + + '/relatorios_administrativos/' + 'relatorios_administrativos_index_html', + + '/tramitacaoMaterias/tramitacaoMaterias', + '/tramitacaoMaterias/materia_mostrar_proc', + '/generico/materia_pesquisar_', + '/consultas/mesa_diretora/mesa_diretora_index_html', + '/consultas/mesa_diretora/parlamentar/parlamentar_', + '/generico/norma_juridica_pesquisar_', + '/consultas/norma_juridica/norma_juridica_mostrar_proc', + '/historicoTramitacoes/historicoTramitacoes', + '/atasSessao', + '/presencaSessao', + '/resumoPropositurasAutor', + '/propositurasAnoAutorTipo', + ]}, 'lexml': { 'prefixs': [ '/lexml', @@ -274,6 +298,9 @@ def test_urlpatterns(url_item, admin_client): Os prefixos permitidos são: %s """ % (url, app_name, prefixs) + else: + # ignorando app de redirecionamento de urls no padrão do SAPL 2.5 + pass urls_publicas_excecoes = { diff --git a/sapl/urls.py b/sapl/urls.py index 8cf280019..0481a246b 100644 --- a/sapl/urls.py +++ b/sapl/urls.py @@ -32,6 +32,7 @@ import sapl.norma.urls import sapl.painel.urls import sapl.parlamentares.urls import sapl.protocoloadm.urls +import sapl.redireciona_urls.urls import sapl.relatorios.urls import sapl.sessao.urls @@ -63,6 +64,8 @@ urlpatterns += [ url(r'^favicon\.ico$', RedirectView.as_view( url='/static/sapl/img/favicon.ico', permanent=True)), + url(r'', include(sapl.redireciona_urls.urls)), + path("robots.txt", TemplateView.as_view( template_name="robots.txt", content_type="text/plain")),