From 2663edf32a9f43c7a26fa604f0c3e04a59ff1883 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Cantu=C3=A1ria?= Date: Fri, 3 Jul 2020 12:19:33 -0300 Subject: [PATCH] =?UTF-8?q?Adiciona=20status=20da=20tramita=C3=A7=C3=A3o?= =?UTF-8?q?=20das=20mat=C3=A9rias=20na=20sess=C3=A3o=20plen=C3=A1ria=20e?= =?UTF-8?q?=20seus=20relat=C3=B3rios=20(#3214)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/relatorios/views.py | 4 +- sapl/sessao/views.py | 165 ++++++------------ .../materias_expediente.html | 3 + .../materias_ordemdia.html | 3 + .../blocos_ata/materias_expediente.html | 3 + .../sessao/blocos_ata/materias_ordem_dia.html | 3 + .../blocos_resumo/materias_expediente.html | 5 + .../blocos_resumo/materias_ordem_dia.html | 5 + 8 files changed, 83 insertions(+), 108 deletions(-) diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index 200ce04af..35a6f6ddf 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -601,6 +601,7 @@ def get_sessao_plenaria(sessao, casa): str(materia.ano)), "des_numeracao": ' ', "des_turno": get_turno(materia)[0], + "situacao": materia.materiaemtramitacao_set.first().tramitacao.status, "txt_ementa": str(materia.ementa), "ordem_observacao": expediente_materia.observacao, "nom_resultado": '', @@ -703,7 +704,8 @@ def get_sessao_plenaria(sessao, casa): # https://github.com/interlegis/sapl/issues/1009 "txt_ementa": html.unescape(materia.ementa), "ordem_observacao": html.unescape(votacao.observacao), - "nom_autor": '' + "nom_autor": '', + "situacao": materia.materiaemtramitacao_set.first().tramitacao.status }) autoria = materia.autoria_set.all() diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 26da9d23a..e650fb5e1 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -29,7 +29,7 @@ from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, PermissionRequiredForAppCrudMixin, make_pagination) from sapl.materia.forms import filtra_tramitacao_status from sapl.materia.models import (Autoria, TipoMateriaLegislativa, - Tramitacao) + Tramitacao, MateriaEmTramitacao) from sapl.materia.views import MateriaLegislativaPesquisaView from sapl.parlamentares.models import (Filiacao, Legislatura, Mandato, Parlamentar, SessaoLegislativa) @@ -228,19 +228,23 @@ def customize_link_materia(context, pk, has_permission, is_expediente): if t[0] == tramitacao.turno: turno = t[1] break + situacao = MateriaEmTramitacao.objects.select_related("materia", "tramitacao")\ + .filter(materia=materia).first().tramitacao.status title_materia = """%s
Processo: %s
Autor: %s
Protocolo: %s
Turno: %s
+ Situação: %s
""" % (obj.materia.id, url_materia, row[1][0], numeracao if numeracao else '', autor if autor else '', num_protocolo if num_protocolo else '', - turno) + turno, + situacao if situacao else '') # Na linha abaixo, o segundo argumento é None para não colocar # url em toda a string de title_materia @@ -1689,28 +1693,14 @@ def get_expedientes(sessao_plenaria): def get_materias_expediente(sessao_plenaria): - materias = ExpedienteMateria.objects.filter( - sessao_plenaria_id=sessao_plenaria.id) - materias_expediente = [] - for m in materias: - - ementa = m.materia.ementa - titulo = m.materia - numero = m.numero_ordem - + for m in ExpedienteMateria.objects.select_related("materia").filter(sessao_plenaria_id=sessao_plenaria.id): tramitacao = '' - tramitacoes = Tramitacao.objects.filter( - materia=m.materia).order_by('-pk') - for aux_tramitacao in tramitacoes: + for aux_tramitacao in Tramitacao.objects.filter(materia=m.materia).order_by('-pk'): if aux_tramitacao.turno: tramitacao = aux_tramitacao break - turno = None - if tramitacao: - turno = get_turno(tramitacao.turno) - rv = m.registrovotacao_set.first() rp = m.retiradapauta_set.filter(materia=m.materia).first() if rv: @@ -1720,30 +1710,24 @@ def get_materias_expediente(sessao_plenaria): resultado = rp.tipo_de_retirada.descricao resultado_observacao = rp.observacao else: - if m.tipo_votacao == 4: - resultado = _('Matéria lida') - else: - resultado = _('Matéria não votada') + resultado = _('Matéria lida') if m.tipo_votacao == 4 else _('Matéria não votada') resultado_observacao = _(' ') - autoria = Autoria.objects.filter(materia_id=m.materia_id) - autor = [str(x.autor) for x in autoria] - - mat = {'ementa': ementa, - 'titulo': titulo, - 'numero': numero, - 'turno': turno, - 'resultado': resultado, - 'resultado_observacao': resultado_observacao, - 'autor': autor, - 'numero_protocolo': m.materia.numero_protocolo, - 'numero_processo': m.materia.numeracao_set.last(), - 'observacao': m.observacao - } - materias_expediente.append(mat) + materias_expediente.append({ + 'ementa': m.materia.ementa, + 'titulo': m.materia, + 'numero': m.numero_ordem, + 'turno': get_turno(tramitacao.turno) if tramitacao else None, + 'situacao': m.materia.materiaemtramitacao_set.first().tramitacao.status, + 'resultado': resultado, + 'resultado_observacao': resultado_observacao, + 'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=m.materia_id)], + 'numero_protocolo': m.materia.numero_protocolo, + 'numero_processo': m.materia.numeracao_set.last(), + 'observacao': m.observacao + }) - context = {'materia_expediente': materias_expediente} - return context + return {'materia_expediente': materias_expediente} def get_oradores_expediente(sessao_plenaria): @@ -1811,26 +1795,14 @@ def get_assinaturas(sessao_plenaria): def get_materias_ordem_do_dia(sessao_plenaria): - ordem = OrdemDia.objects.filter(sessao_plenaria_id=sessao_plenaria.id) materias_ordem = [] - for o in ordem: - ementa = o.materia.ementa - ementa_observacao = o.observacao - titulo = o.materia - numero = o.numero_ordem - + for o in OrdemDia.objects.filter(sessao_plenaria_id=sessao_plenaria.id): tramitacao = '' - tramitacoes = Tramitacao.objects.filter( - materia=o.materia).order_by('-pk') - for aux_tramitacao in tramitacoes: + for aux_tramitacao in Tramitacao.objects.filter(materia=o.materia).order_by('-pk'): if aux_tramitacao.turno: tramitacao = aux_tramitacao break - turno = None - if tramitacao: - turno = get_turno(tramitacao.turno) - # Verificar resultado rv = o.registrovotacao_set.filter(materia=o.materia).first() rp = o.retiradapauta_set.filter(materia=o.materia).first() @@ -1841,55 +1813,44 @@ def get_materias_ordem_do_dia(sessao_plenaria): resultado = rp.tipo_de_retirada.descricao resultado_observacao = rp.observacao else: - if o.tipo_votacao == 4: - resultado = _('Matéria lida') - else: - resultado = _('Matéria não votada') + resultado = _('Matéria lida') if o.tipo_votacao == 4 else _('Matéria não votada') resultado_observacao = _(' ') - voto_sim = "" - voto_nao = "" - voto_abstencoes = "" voto_nominal = [] - if o.tipo_votacao == 2: - votos = VotoParlamentar.objects.filter(ordem=o.id) - for voto in votos: - aux_voto = (voto.parlamentar.nome_completo, voto.voto) - voto_nominal.append(aux_voto) - try: - voto = RegistroVotacao.objects.filter(ordem=o.id).last() + for voto in VotoParlamentar.objects.filter(ordem=o.id): + voto_nominal.append((voto.parlamentar.nome_completo, voto.voto)) + + voto = RegistroVotacao.objects.filter(ordem=o.id).last() + if voto: voto_sim = voto.numero_votos_sim voto_nao = voto.numero_votos_nao voto_abstencoes = voto.numero_abstencoes - except AttributeError: + else: voto_sim = " Não Informado" voto_nao = " Não Informado" voto_abstencoes = " Não Informado" - autoria = Autoria.objects.filter( - materia_id=o.materia_id) - autor = [str(x.autor) for x in autoria] - mat = {'ementa': ementa, - 'ementa_observacao': ementa_observacao, - 'titulo': titulo, - 'numero': numero, - 'turno': turno, - 'resultado': resultado, - 'resultado_observacao': resultado_observacao, - 'autor': autor, - 'numero_protocolo': o.materia.numero_protocolo, - 'numero_processo': o.materia.numeracao_set.last(), - 'tipo_votacao': o.TIPO_VOTACAO_CHOICES[o.tipo_votacao], - 'voto_sim': voto_sim, - 'voto_nao': voto_nao, - 'voto_abstencoes': voto_abstencoes, - 'voto_nominal': voto_nominal, - } - materias_ordem.append(mat) + materias_ordem.append({ + 'ementa': o.materia.ementa, + 'ementa_observacao': o.observacao, + 'titulo': o.materia, + 'numero': o.numero_ordem, + 'turno': get_turno(tramitacao.turno) if tramitacao else None, + 'situacao': o.materia.materiaemtramitacao_set.first().tramitacao.status, + 'resultado': resultado, + 'resultado_observacao': resultado_observacao, + 'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=o.materia_id)], + 'numero_protocolo': o.materia.numero_protocolo, + 'numero_processo': o.materia.numeracao_set.last(), + 'tipo_votacao': o.TIPO_VOTACAO_CHOICES[o.tipo_votacao], + 'voto_sim': voto_sim, + 'voto_nao': voto_nao, + 'voto_abstencoes': voto_abstencoes, + 'voto_nominal': voto_nominal, + }) - context = {'materias_ordem': materias_ordem} - return context + return {'materias_ordem': materias_ordem} def get_oradores_ordemdia(sessao_plenaria): @@ -1957,13 +1918,9 @@ class ResumoView(DetailView): context = self.get_context_data(object=self.object) # Votos de Votação Nominal de Matérias Expediente - materias_expediente_votacao_nominal = ExpedienteMateria.objects.filter( - sessao_plenaria_id=self.object.id, - tipo_votacao=2).order_by('-materia') - votacoes = [] - for mevn in materias_expediente_votacao_nominal: - + for mevn in ExpedienteMateria.objects.filter(sessao_plenaria_id=self.object.id, tipo_votacao=2)\ + .order_by('-materia'): votos_materia = [] titulo_materia = mevn.materia registro = RegistroVotacao.objects.filter(expediente=mevn) @@ -1971,11 +1928,10 @@ class ResumoView(DetailView): for vp in VotoParlamentar.objects.filter(votacao=registro).order_by('parlamentar'): votos_materia.append(vp) - dados_votacao = { + votacoes.append({ 'titulo': titulo_materia, 'votos': votos_materia - } - votacoes.append(dados_votacao) + }) context.update({'votos_nominais_materia_expediente': votacoes}) @@ -2009,12 +1965,8 @@ class ResumoView(DetailView): # ===================================================================== # Matérias Ordem do Dia # Votos de Votação Nominal de Matérias Ordem do Dia - materias_ordem_dia_votacao_nominal = OrdemDia.objects.filter( - sessao_plenaria_id=self.object.id, - tipo_votacao=2).order_by('-materia') - votacoes_od = [] - for modvn in materias_ordem_dia_votacao_nominal: + for modvn in OrdemDia.objects.filter(sessao_plenaria_id=self.object.id, tipo_votacao=2).order_by('-materia'): votos_materia_od = [] t_materia = modvn.materia registro_od = RegistroVotacao.objects.filter(ordem=modvn) @@ -2022,11 +1974,10 @@ class ResumoView(DetailView): for vp_od in VotoParlamentar.objects.filter(votacao=registro_od).order_by('parlamentar'): votos_materia_od.append(vp_od) - dados_votacao_od = { + votacoes_od.append({ 'titulo': t_materia, 'votos': votos_materia_od - } - votacoes_od.append(dados_votacao_od) + }) context.update({'votos_nominais_materia_ordem_dia': votacoes_od}) diff --git a/sapl/templates/relatorios/blocos_sessao_plenaria/materias_expediente.html b/sapl/templates/relatorios/blocos_sessao_plenaria/materias_expediente.html index bb5178b59..265184e58 100644 --- a/sapl/templates/relatorios/blocos_sessao_plenaria/materias_expediente.html +++ b/sapl/templates/relatorios/blocos_sessao_plenaria/materias_expediente.html @@ -16,6 +16,9 @@
{{materia.num_ordem}} - {{materia.id_materia}}
Turno: {{materia.des_turno}}
{{materia.num_autores}}: {{materia.nom_autor}}
+ {% if materia.situacao %} +
Situação: {{materia.situacao}}
+ {% endif %}
{{materia.txt_ementa}}
diff --git a/sapl/templates/relatorios/blocos_sessao_plenaria/materias_ordemdia.html b/sapl/templates/relatorios/blocos_sessao_plenaria/materias_ordemdia.html index a44b4d3ca..ec2356126 100644 --- a/sapl/templates/relatorios/blocos_sessao_plenaria/materias_ordemdia.html +++ b/sapl/templates/relatorios/blocos_sessao_plenaria/materias_ordemdia.html @@ -16,6 +16,9 @@
{{materia.num_ordem}} - {{materia.id_materia}}
Turno: {{materia.des_turno}}
{{materia.num_autores}}: {{materia.nom_autor}}
+ {% if materia.situacao %} +
Situação: {{materia.situacao}}
+ {% endif %} {{materia.txt_ementa}} diff --git a/sapl/templates/sessao/blocos_ata/materias_expediente.html b/sapl/templates/sessao/blocos_ata/materias_expediente.html index 4a3964993..5b21e200b 100644 --- a/sapl/templates/sessao/blocos_ata/materias_expediente.html +++ b/sapl/templates/sessao/blocos_ata/materias_expediente.html @@ -15,6 +15,9 @@ {% if m.turno %} Turno: {{m.turno}}, {% endif %} + {% if m.situacao %} + Situação: {{m.situacao}}, + {% endif %} {% if m.tipo_votacao %} Tipo: {{m.tipo_votacao}}, Sim: {{ m.voto_sim }}, diff --git a/sapl/templates/sessao/blocos_ata/materias_ordem_dia.html b/sapl/templates/sessao/blocos_ata/materias_ordem_dia.html index 6b38be5e4..c25ce9683 100644 --- a/sapl/templates/sessao/blocos_ata/materias_ordem_dia.html +++ b/sapl/templates/sessao/blocos_ata/materias_ordem_dia.html @@ -15,6 +15,9 @@ {% if m.turno %} Turno: {{m.turno}}, {% endif %} + {% if m.situacao %} + Situação: {{m.situacao}}, + {% endif %} {% if m.tipo_votacao %} Tipo: {{m.tipo_votacao}}, Sim: {{ m.voto_sim }}, diff --git a/sapl/templates/sessao/blocos_resumo/materias_expediente.html b/sapl/templates/sessao/blocos_resumo/materias_expediente.html index 046c15cee..4a8be7c55 100644 --- a/sapl/templates/sessao/blocos_resumo/materias_expediente.html +++ b/sapl/templates/sessao/blocos_resumo/materias_expediente.html @@ -34,6 +34,11 @@
Processo: {{ m.numero_processo }} {% endif %} + + {% if m.situacao %} +
+ Situação: {{ m.situacao }} + {% endif %} {{m.ementa|dont_break_out}}
diff --git a/sapl/templates/sessao/blocos_resumo/materias_ordem_dia.html b/sapl/templates/sessao/blocos_resumo/materias_ordem_dia.html index 909adf1b2..a463f7492 100644 --- a/sapl/templates/sessao/blocos_resumo/materias_ordem_dia.html +++ b/sapl/templates/sessao/blocos_resumo/materias_ordem_dia.html @@ -35,6 +35,11 @@
Processo: {{ m.numero_processo }} {% endif %} + + {% if m.situacao %} +
+ Situação: {{ m.situacao }} + {% endif %} {{m.ementa|dont_break_out}}
{{m.observacao|dont_break_out}} {{m.resultado}}
{{m.resultado_observacao}}