Browse Source

Merge com o master

pull/1174/head
Eduardo Calil 9 years ago
parent
commit
1de4d5ff12
  1. 2
      README.rst
  2. 2
      docker-compose.yml
  3. 2
      docs/instalacao31.rst
  4. 2
      pytest.ini
  5. 2
      sapl/base/urls.py
  6. 28
      sapl/legacy/migration.py
  7. 42
      sapl/materia/views.py
  8. 9
      sapl/parlamentares/views.py
  9. 4
      sapl/protocoloadm/views.py
  10. 0
      sapl/redireciona_urls/__init__.py
  11. 8
      sapl/redireciona_urls/apps.py
  12. 13
      sapl/redireciona_urls/exceptions.py
  13. 710
      sapl/redireciona_urls/tests.py
  14. 80
      sapl/redireciona_urls/urls.py
  15. 577
      sapl/redireciona_urls/views.py
  16. 1
      sapl/settings.py
  17. BIN
      sapl/static/img/avatar.png
  18. 2
      sapl/static/styles/app.scss
  19. 3
      sapl/templates/base.html
  20. 17
      sapl/templates/materia/em_lote/acessorio.html
  21. 18
      sapl/templates/materia/em_lote/tramitacao.html
  22. 24
      sapl/test_urls.py
  23. 4
      sapl/urls.py
  24. BIN
      sapl_30-03-16.tar
  25. 3
      start.sh

2
README.rst

@ -17,7 +17,7 @@ atual do sistema (2.5), visite a página do `projeto na Interlegis wiki <https:/
Instalação do Ambiente de Desenvolvimento
=========================================
`Instalação do Ambiente de Desenvolvimento <https://github.com/interlegis/sapl/blob/master/docs/instacao31.rst>`_
`Instalação do Ambiente de Desenvolvimento <https://github.com/interlegis/sapl/blob/master/docs/instalacao31.rst>`_
Instruções para Importação da base mysql 2.5

2
docker-compose.yml

@ -10,7 +10,7 @@ sapldb:
ports:
- "5532:5432"
sapl:
image: interlegis/sapl:3.1.6-BETA
image: interlegis/sapl:3.1.7-BETA
volumes:
- sapl_data:/var/interlegis/sapl/data
- sapl_media:/var/interlegis/sapl/media

2
docs/instacao31.rst → docs/instalacao31.rst

@ -151,7 +151,7 @@ Criação da `SECRET_KEY <https://docs.djangoproject.com/es/1.9/ref/settings/#st
DATABASE_URL = postgresql://sapl:sapl@localhost:5432/sapl
SECRET_KEY = 'cole aqui entre as aspas simples a chave gerada pelo comando abaixo'
DEBUG = True
DEBUG = False
EMAIL_USE_TLS = True
EMAIL_PORT = 587
EMAIL_HOST =

2
pytest.ini

@ -2,6 +2,8 @@
DJANGO_SETTINGS_MODULE=sapl.settings
norecursedirs = legacy crud
python_files = tests.py test_*.py *_tests.py
# REUSING DATABASE BY DEFAULT (as a performance optimization)
# http://pytest-django.readthedocs.org/en/latest/database.html#example-work-flow-with-reuse-db-and-create-db
#

2
sapl/base/urls.py

@ -66,7 +66,7 @@ urlpatterns = [
# TODO mover estas telas para a app 'relatorios'
url(r'^sistema/relatorios/$', TemplateView.as_view(
template_name='base/relatorios_list.html')),
template_name='base/relatorios_list.html'), name='relatorios_list'),
url(r'^sistema/relatorios/materia-por-autor$',
RelatorioMateriasPorAutorView.as_view(), name='materia_por_autor'),
url(r'^sistema/relatorios/materia-por-ano-autor-tipo$',

28
sapl/legacy/migration.py

@ -8,6 +8,7 @@ import yaml
from django.apps import apps
from django.apps.config import AppConfig
from django.contrib.auth import get_user_model
from django.contrib.auth.models import Group
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ObjectDoesNotExist
from django.db import OperationalError, ProgrammingError, connections, models
@ -20,12 +21,12 @@ from model_mommy.mommy import foreign_key_required, make
from sapl.base.models import Argumento, Autor, Constraint, ProblemaMigracao
from sapl.comissoes.models import Comissao, Composicao, Participacao
from sapl.legacy.models import Protocolo as ProtocoloLegado
from sapl.materia.models import (DocumentoAcessorio, MateriaLegislativa,
StatusTramitacao, TipoDocumento,
TipoMateriaLegislativa, TipoProposicao,
Tramitacao)
from sapl.norma.models import (AssuntoNorma, NormaJuridica, NormaRelacionada,
TipoVinculoNormaJuridica)
from sapl.materia.models import (AcompanhamentoMateria, DocumentoAcessorio,
MateriaLegislativa, StatusTramitacao,
TipoDocumento, TipoMateriaLegislativa,
TipoProposicao, Tramitacao)
from sapl.norma.models import (AssuntoNorma, NormaJuridica,
TipoVinculoNormaJuridica, NormaRelacionada)
from sapl.parlamentares.models import Parlamentar, TipoAfastamento
from sapl.protocoloadm.models import Protocolo, StatusTramitacaoAdministrativo
from sapl.sessao.models import ExpedienteMateria, OrdemDia, RegistroVotacao
@ -580,8 +581,13 @@ def migrate(obj=appconfs, interativo=True):
# MIGRATION_ADJUSTMENTS #####################################################
def adjust_acompanhamentomateria(new, old):
new.confirmado = True
def adjust_ordemdia_antes_salvar(new, old):
# Prestar atenção
new.votacao_aberta = False
if not old.tip_votacao:
new.tipo_votacao = 1
@ -755,6 +761,13 @@ def adjust_autor(new, old):
with reversion.create_revision():
user.save()
reversion.set_comment('Objeto criado pela migração')
grupo_autor = Group.objects.get(name="Autor")
user.groups.add(grupo_autor)
if old.cod_parlamentar:
grupo_parlamentar = Group.objects.get(name="Parlamentar")
user.groups.add(grupo_parlamentar)
new.user = user
else:
new.user = get_user_model().objects.filter(
@ -773,6 +786,7 @@ def adjust_comissao(new, old):
AJUSTE_ANTES_SALVAR = {
Autor: adjust_autor,
AcompanhamentoMateria: adjust_acompanhamentomateria,
Comissao: adjust_comissao,
NormaJuridica: adjust_normajuridica_antes_salvar,
NormaRelacionada: adjust_normarelacionada,

42
sapl/materia/views.py

@ -38,6 +38,7 @@ from sapl.materia.forms import (AnexadaForm, ConfirmarProposicaoForm,
TramitacaoUpdateForm)
from sapl.norma.models import LegislacaoCitada
from sapl.protocoloadm.models import Protocolo
from sapl.settings import EMAIL_SEND_USER
from sapl.utils import (TURNO_TRAMITACAO_CHOICES, YES_NO_CHOICES, autor_label,
autor_modal, gerar_hash_arquivo, get_base_url,
montar_row_autor)
@ -58,6 +59,7 @@ from .models import (AcompanhamentoMateria, Anexada, AssuntoMateria, Autoria,
TipoDocumento, TipoFimRelatoria, TipoMateriaLegislativa,
TipoProposicao, Tramitacao, UnidadeTramitacao)
AssuntoMateriaCrud = Crud.build(AssuntoMateria, 'assunto_materia')
OrigemCrud = Crud.build(Origem, '')
@ -913,8 +915,11 @@ class TramitacaoCrud(MasterDetailCrud):
unidade_destino = UnidadeTramitacao.objects.get(
id=request.POST['unidade_tramitacao_destino']
)
texto = request.POST['texto']
data_tramitacao = request.POST['data_tramitacao']
do_envia_email_tramitacao(
request, materia, status, unidade_destino)
request, materia, status,
unidade_destino, texto, data_tramitacao)
return super(CreateView, self).post(request, *args, **kwargs)
class UpdateView(MasterDetailCrud.UpdateView):
@ -930,8 +935,11 @@ class TramitacaoCrud(MasterDetailCrud):
unidade_destino = UnidadeTramitacao.objects.get(
id=request.POST['unidade_tramitacao_destino']
)
texto = request.POST['texto']
data_tramitacao = request.POST['data_tramitacao']
do_envia_email_tramitacao(
request, materia, status, unidade_destino)
request, materia, status,
unidade_destino, texto, data_tramitacao)
return super(UpdateView, self).post(request, *args, **kwargs)
@ -1292,8 +1300,9 @@ class AcompanhamentoConfirmarView(TemplateView):
class AcompanhamentoExcluirView(TemplateView):
def get_redirect_url(self):
return reverse('sapl.sessao:list_pauta_sessao')
def get_success_url(self):
return reverse('sapl.materia:materialegislativa_detail',
kwargs={'pk': self.kwargs['pk']})
def get(self, request, *args, **kwargs):
materia_id = kwargs['pk']
@ -1305,7 +1314,7 @@ class AcompanhamentoExcluirView(TemplateView):
except ObjectDoesNotExist:
pass
return HttpResponseRedirect(self.get_redirect_url())
return HttpResponseRedirect(self.get_success_url())
class MateriaLegislativaPesquisaView(FilterView):
@ -1484,8 +1493,9 @@ def criar_email_confirmacao(request, casa_legislativa, materia, hash_txt=''):
return templates
def criar_email_tramitacao(request, casa_legislativa, materia, status,
unidade_destino, hash_txt=''):
def criar_email_tramitacao(
request, casa_legislativa, materia, status,
unidade_destino, texto, data_tramitacao, hash_txt=''):
if not casa_legislativa:
raise ValueError("Casa Legislativa é obrigatória")
@ -1519,10 +1529,10 @@ def criar_email_tramitacao(request, casa_legislativa, materia, status,
"logotipo": casa_legislativa.logotipo,
"descricao_materia": materia.ementa,
"autoria": autores,
"data": tramitacao.data_tramitacao,
"data": data_tramitacao,
"status": status,
"localizacao": unidade_destino,
"texto_acao": tramitacao.texto,
"texto_acao": texto,
"hash_txt": hash_txt,
"materia": str(materia),
"base_url": base_url,
@ -1579,7 +1589,7 @@ def do_envia_email_confirmacao(request, materia, email):
confirmado=False)
casa = CasaLegislativa.objects.first()
sender = 'sapl-test@interlegis.leg.br'
sender = EMAIL_SEND_USER
# FIXME i18n
subject = "[SAPL] " + str(materia) + " - Ative o Acompanhamento da Materia"
messages = []
@ -1601,7 +1611,8 @@ def do_envia_email_confirmacao(request, materia, email):
return None
def do_envia_email_tramitacao(request, materia, status, unidade_destino):
def do_envia_email_tramitacao(
request, materia, status, unidade_destino, texto, data_tramitacao):
#
# Envia email de tramitacao para usuarios cadastrados
#
@ -1609,7 +1620,7 @@ def do_envia_email_tramitacao(request, materia, status, unidade_destino):
confirmado=True)
casa = CasaLegislativa.objects.first()
sender = 'sapl-test@interlegis.leg.br'
sender = EMAIL_SEND_USER
# FIXME i18n
subject = "[SAPL] " + str(materia) + \
" - Acompanhamento de Materia Legislativa"
@ -1621,6 +1632,8 @@ def do_envia_email_tramitacao(request, materia, status, unidade_destino):
materia,
status,
unidade_destino,
texto,
data_tramitacao,
destinatario.hash,)
recipients.append(destinatario.email)
messages.append({
@ -1774,7 +1787,10 @@ class TramitacaoEmLoteView(PrimeiraTramitacaoEmLoteView):
qr = self.request.GET.copy()
if ('tramitacao__status' in qr and
'tramitacao__unidade_tramitacao_destino' in qr):
'tramitacao__unidade_tramitacao_destino' in qr and
qr['tramitacao__status'] and
qr['tramitacao__unidade_tramitacao_destino']
):
lista = filtra_tramitacao_destino_and_status(
qr['tramitacao__status'],
qr['tramitacao__unidade_tramitacao_destino'])

9
sapl/parlamentares/views.py

@ -4,6 +4,7 @@ from django.core.urlresolvers import reverse, reverse_lazy
from django.db.models import F, Q
from django.http import JsonResponse
from django.http.response import HttpResponseRedirect
from django.templatetags.static import static
from django.utils.datastructures import MultiValueDictKeyError
from django.utils.translation import ugettext_lazy as _
from django.views.generic import FormView
@ -345,6 +346,14 @@ class ParlamentarCrud(Crud):
# Tira Link do avatar_html e coloca no nome
for row in context['rows']:
# preenche coluna foto, se vazia
if not row[0][0]:
img = "<center><img width='50px' \
height='50px' src='%s'/></center>" \
% static('img/avatar.png')
row[0] = (img, row[0][1])
# Coloca a filiação atual ao invés da última
if row[0][1]:
# Pega o Parlamentar por meio da pk

4
sapl/protocoloadm/views.py

@ -121,6 +121,10 @@ class DocumentoAdministrativoCrud(Crud):
kwargs={'pk': self.object.pk}))
return context
class DeleteView(DocumentoAdministrativoMixin, Crud.DeleteView):
def get_success_url(self):
return reverse('sapl.protocoloadm:pesq_doc_adm', kwargs={})
class StatusTramitacaoAdministrativoCrud(CrudAux):
model = StatusTramitacaoAdministrativo

0
sapl/redireciona_urls/__init__.py

8
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')

13
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."))

710
sapl/redireciona_urls/tests.py

@ -0,0 +1,710 @@
from django.core.urlresolvers import reverse
from django.test import TestCase
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_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)

80
sapl/redireciona_urls/urls.py

@ -0,0 +1,80 @@
from .apps import AppConfig
from .views import (
RedirecionaAtasList,
RedirecionaComissao,
RedirecionaHistoricoTramitacoesList,
RedirecionaMateriaLegislativaDetail,
RedirecionaMateriaLegislativaList,
RedirecionaMateriasPorAnoAutorTipo,
RedirecionaMateriasPorAutor,
RedirecionaMesaDiretoraView,
RedirecionaNormasJuridicasDetail,
RedirecionaNormasJuridicasList,
RedirecionaParlamentar,
RedirecionaPautaSessao,
RedirecionaPresencaParlamentares,
RedirecionaRelatoriosList,
RedirecionaRelatoriosMateriasEmTramitacaoList,
RedirecionaSessaoPlenaria,
RedirecionaSAPLIndex)
from django.conf.urls import url
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/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'^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'),
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'),
]

577
sapl/redireciona_urls/views.py

@ -0,0 +1,577 @@
from .exceptions import UnknownUrlNameError
from django.core.urlresolvers import NoReverseMatch, reverse
from django.views.generic import RedirectView
from sapl.base.apps import AppConfig as atasConfig
from sapl.base.apps import AppConfig as presenca_sessaoConfig
from sapl.base.apps import AppConfig as relatoriosConfig
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.parlamentares.apps import AppConfig as parlamentaresConfig
from sapl.sessao.apps import AppConfig as sessaoConfig
EMPTY_STRING = ''
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
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')
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')
class RedirecionaSAPLIndex(RedirectView):
permanent = True
def get_redirect_url(self):
url_pattern = 'sapl_index'
try:
url = reverse(url_pattern)
except NoReverseMatch:
raise UnknownUrlNameError(url_pattern)
return url
class RedirecionaParlamentar(RedirectView):
permanent = True
def get_redirect_url(self):
url = EMPTY_STRING
pk_parlamentar = self.request.GET.get(
'cod_parlamentar',
EMPTY_STRING)
if pk_parlamentar:
try:
kwargs = {'pk': pk_parlamentar}
url = reverse(parlamentar_detail, kwargs=kwargs)
except NoReverseMatch:
raise UnknownUrlNameError(parlamentar_detail, kwargs=kwargs)
else:
try:
url = reverse(parlamentar_list)
except NoReverseMatch:
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)
return url
class RedirecionaComissao(RedirectView):
permanent = True
def get_redirect_url(self):
url = EMPTY_STRING
pk_comissao = self.request.GET.get('cod_comissao', EMPTY_STRING)
if pk_comissao:
kwargs = {'pk': pk_comissao}
try:
url = reverse(comissao_detail, kwargs=kwargs)
except NoReverseMatch:
raise UnknownUrlNameError(comissao_detail)
else:
try:
url = reverse(comissao_list)
except NoReverseMatch:
raise UnknownUrlNameError(comissao_list)
return url
class RedirecionaPautaSessao(RedirectView):
permanent = True
def get_redirect_url(self):
pk_sessao_plenaria = self.request.GET.get(
'cod_sessao_plen',
EMPTY_STRING)
if pk_sessao_plenaria:
kwargs = {'pk': pk_sessao_plenaria}
try:
url = reverse(pauta_sessao_detail, kwargs=kwargs)
except NoReverseMatch:
raise UnknownUrlNameError(pauta_sessao_detail)
else:
try:
url = reverse(pauta_sessao_list)
except NoReverseMatch:
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)
return url
class RedirecionaSessaoPlenaria(RedirectView):
permanent = True
def get_redirect_url(self):
pk_sessao_plenaria = self.request.GET.get(
'cod_sessao_plen',
EMPTY_STRING)
url = EMPTY_STRING
if pk_sessao_plenaria:
kwargs = {'pk': pk_sessao_plenaria}
try:
url = reverse(sessao_plenaria_detail, kwargs=kwargs)
except NoReverseMatch:
raise UnknownUrlNameError(sessao_plenaria_detail)
else:
try:
url = reverse(sessao_plenaria_list)
except NoReverseMatch:
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)
return url
class RedirecionaRelatoriosList(RedirectView):
permanent = True
def get_redirect_url(self):
url = EMPTY_STRING
try:
url = reverse(relatorios_list)
except NoReverseMatch:
raise UnknownUrlNameError(relatorios_list)
return url
class RedirecionaRelatoriosMateriasEmTramitacaoList(RedirectView):
permanent = True
def get_redirect_url(self):
url = EMPTY_STRING
try:
url = reverse(relatorio_materia_por_tramitacao)
except NoReverseMatch:
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)
return url
class RedirecionaMateriaLegislativaDetail(RedirectView):
permanent = True
def get_redirect_url(self):
pk = self.request.GET.get('cod_materia', EMPTY_STRING)
if pk:
kwargs = {'pk': pk}
return reverse(materialegislativa_detail, kwargs=kwargs)
else:
return reverse(materialegislativa_list)
class RedirecionaMateriaLegislativaList(RedirectView):
permanent = True
def get_redirect_url(self):
url = EMPTY_STRING
args = EMPTY_STRING
try:
url = reverse(materialegislativa_list)
except NoReverseMatch:
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)
return url
class RedirecionaMesaDiretoraView(RedirectView):
permanent = True
def get_redirect_url(self):
try:
url = reverse(parlamentar_mesa_diretora)
except NoReverseMatch:
raise UnknownUrlNameError(parlamentar_mesa_diretora)
return url
class RedirecionaNormasJuridicasDetail(RedirectView):
permanent = True
def get_redirect_url(self):
pk_norma = self.request.GET.get('cod_norma', EMPTY_STRING)
if pk_norma:
kwargs = {'pk': pk_norma}
return reverse(norma_juridica_detail, kwargs=kwargs)
else:
return reverse(norma_juridica_pesquisa)
class RedirecionaNormasJuridicasList(RedirectView):
permanent = True
def get_redirect_url(self):
url = EMPTY_STRING
args = EMPTY_STRING
try:
url = reverse(norma_juridica_pesquisa)
except NoReverseMatch:
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)
return url
class RedirecionaHistoricoTramitacoesList(RedirectView):
permanent = True
def get_redirect_url(self):
url = EMPTY_STRING
args = EMPTY_STRING
try:
url = reverse(historico_tramitacoes)
except NoReverseMatch:
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)
return url
class RedirecionaAtasList(RedirectView):
permanent = True
def get_redirect_url(self):
url = EMPTY_STRING
args = EMPTY_STRING
try:
url = reverse(pesquisar_atas)
except NoReverseMatch:
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)
return url
class RedirecionaPresencaParlamentares(RedirectView):
permanent = True
def get_redirect_url(self):
url = EMPTY_STRING
args = EMPTY_STRING
try:
url = reverse(presenca_sessao)
except NoReverseMatch:
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)
return url
class RedirecionaMateriasPorAutor(RedirectView):
permanent = True
def get_redirect_url(self):
url = EMPTY_STRING
try:
url = reverse(relatorio_materia_por_autor)
except NoReverseMatch:
raise UnknownUrlNameError(relatorio_materia_por_autor)
return url
class RedirecionaMateriasPorAnoAutorTipo(RedirectView):
permanent = True
def get_redirect_url(self):
url = EMPTY_STRING
ano = self.request.GET.get('ano', '')
try:
url = reverse(relatorio_materia_por_ano_autor_tipo)
except NoReverseMatch:
raise UnknownUrlNameError(relatorio_materia_por_ano_autor_tipo)
if ano:
args = "?ano=%s" % (ano)
args += "&salvar=%s" % ('Pesquisar')
url = "%s%s" % (url, args)
return url

1
sapl/settings.py

@ -53,6 +53,7 @@ SAPL_APPS = (
'sapl.lexml',
'sapl.painel',
'sapl.protocoloadm',
'sapl.redireciona_urls',
'sapl.compilacao',
'sapl.api',

BIN
sapl/static/img/avatar.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

2
sapl/static/styles/app.scss

@ -235,6 +235,8 @@ fieldset {
.avatar-parlamentar {
height: 84px;
width: 84px;
margin: 0 auto;
display: table;
}
/* INDEX */

3
sapl/templates/base.html

@ -77,9 +77,6 @@
{# Header #}
{% block main_header %}
<header class="masthead">
<div class="navbar-header">
<img src="{% static 'img/beta.png' %}" width="100" height="100">
</div>
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="/">

17
sapl/templates/materia/em_lote/acessorio.html

@ -63,6 +63,13 @@
<fieldset>
<legend>Matérias para inclusão do Documento Acessório</legend>
<table class="table table-striped table-hover">
<div class="controls">
<div class="checkbox">
<label for="id_check_all">
<input type="checkbox" id="id_check_all" onchange="checkAll(event)" /> Marcar/Desmarcar Todos
</label>
</div>
</div>
<thead>
<tr><th>Matéria</th></tr>
</thead>
@ -85,3 +92,13 @@
{% endif %}
{% endif %}
{% endblock detail_content %}
{% block extra_js %}
<script language="JavaScript">
function checkAll(event) {
$('[name=materia_id]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
}
</script>
{% endblock %}

18
sapl/templates/materia/em_lote/tramitacao.html

@ -93,11 +93,19 @@
<fieldset>
<legend>2. Selecione as matérias para primeira tramitação:</legend>
<table class="table table-striped table-hover">
<div class="controls">
<div class="checkbox">
<label for="id_check_all">
<input type="checkbox" id="id_check_all" onchange="checkAll(event)" /> Marcar/Desmarcar Todos
</label>
</div>
</div>
<thead>
<tr><th>Matéria</th></tr>
</thead>
<tbody>
{% for materia in object_list %}
<tr>
<td>
<input type="checkbox" name="materia_id" value="{{materia.id}}" {% if check %} checked {% endif %}/>
@ -115,3 +123,13 @@
{% endif %}
{% endif %}
{% endblock detail_content %}
{% block extra_js %}
<script language="JavaScript">
function checkAll(event) {
$('[name=materia_id]').each(function() {
$(this).prop('checked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
}
</script>
{% endblock %}

24
sapl/test_urls.py

@ -172,6 +172,27 @@ apps_url_patterns_prefixs_and_users = {
'prefixs': [
'/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',
@ -235,6 +256,7 @@ apps_url_patterns_prefixs_and_users = {
}
@pytest.mark.skip(reason="TODO: Lento demais. Precisa ser refatorado")
@pytest.mark.parametrize('url_item', _lista_urls)
def test_urlpatterns(url_item, admin_client):
@ -328,7 +350,7 @@ urls_publicas_excecoes = {
'/proposicao/1',
'/proposicao/create',
'/proposicao/1/edit',
'/proposicao/1/delete',
'/proposicao/1/delete'
},
'get': [

4
sapl/urls.py

@ -30,11 +30,12 @@ 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
urlpatterns = [
url(r'^$', TemplateView.as_view(template_name='index.html')),
url(r'^$', TemplateView.as_view(template_name='index.html'), name='sapl_index'),
url(r'^message$', TemplateView.as_view(template_name='base.html')),
url(r'^admin/', include(admin.site.urls)),
@ -61,6 +62,7 @@ urlpatterns = [
# Folhas XSLT e extras referenciadas por documentos migrados do sapl 2.5
url(r'^XSLT/HTML/(?P<path>.*)$', RedirectView.as_view(
url='/static/XSLT/HTML/%(path)s', permanent=False)),
url(r'', include(sapl.redireciona_urls.urls)),
]

BIN
sapl_30-03-16.tar

Binary file not shown.

3
start.sh

@ -33,6 +33,9 @@ create_env() {
echo "EMAIL_HOST = ""${EMAIL_HOST-''}" >> $FILENAME
echo "EMAIL_HOST_USER = ""${EMAIL_HOST_USER-''}" >> $FILENAME
echo "EMAIL_HOST_PASSWORD = ""${EMAIL_HOST_PASSWORD-''}" >> $FILENAME
echo "EMAIL_SEND_USER = ""${EMAIL_HOST_USER-''}" >> $FILENAME
echo "DEFAULT_FROM_EMAIL = ""${EMAIL_HOST_USER-''}" >> $FILENAME
echo "SERVER_EMAIL = ""${EMAIL_HOST_USER-''}" >> $FILENAME
echo "[ENV FILE] done."
}

Loading…
Cancel
Save