Browse Source

Adiciona status da tramitação das matérias na sessão plenária e seus relatórios (#3214)

pull/3218/head
Vinícius Cantuária 5 years ago
committed by GitHub
parent
commit
2663edf32a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      sapl/relatorios/views.py
  2. 165
      sapl/sessao/views.py
  3. 3
      sapl/templates/relatorios/blocos_sessao_plenaria/materias_expediente.html
  4. 3
      sapl/templates/relatorios/blocos_sessao_plenaria/materias_ordemdia.html
  5. 3
      sapl/templates/sessao/blocos_ata/materias_expediente.html
  6. 3
      sapl/templates/sessao/blocos_ata/materias_ordem_dia.html
  7. 5
      sapl/templates/sessao/blocos_resumo/materias_expediente.html
  8. 5
      sapl/templates/sessao/blocos_resumo/materias_ordem_dia.html

4
sapl/relatorios/views.py

@ -601,6 +601,7 @@ def get_sessao_plenaria(sessao, casa):
str(materia.ano)), str(materia.ano)),
"des_numeracao": ' ', "des_numeracao": ' ',
"des_turno": get_turno(materia)[0], "des_turno": get_turno(materia)[0],
"situacao": materia.materiaemtramitacao_set.first().tramitacao.status,
"txt_ementa": str(materia.ementa), "txt_ementa": str(materia.ementa),
"ordem_observacao": expediente_materia.observacao, "ordem_observacao": expediente_materia.observacao,
"nom_resultado": '', "nom_resultado": '',
@ -703,7 +704,8 @@ def get_sessao_plenaria(sessao, casa):
# https://github.com/interlegis/sapl/issues/1009 # https://github.com/interlegis/sapl/issues/1009
"txt_ementa": html.unescape(materia.ementa), "txt_ementa": html.unescape(materia.ementa),
"ordem_observacao": html.unescape(votacao.observacao), "ordem_observacao": html.unescape(votacao.observacao),
"nom_autor": '' "nom_autor": '',
"situacao": materia.materiaemtramitacao_set.first().tramitacao.status
}) })
autoria = materia.autoria_set.all() autoria = materia.autoria_set.all()

165
sapl/sessao/views.py

@ -29,7 +29,7 @@ from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux,
PermissionRequiredForAppCrudMixin, make_pagination) PermissionRequiredForAppCrudMixin, make_pagination)
from sapl.materia.forms import filtra_tramitacao_status from sapl.materia.forms import filtra_tramitacao_status
from sapl.materia.models import (Autoria, TipoMateriaLegislativa, from sapl.materia.models import (Autoria, TipoMateriaLegislativa,
Tramitacao) Tramitacao, MateriaEmTramitacao)
from sapl.materia.views import MateriaLegislativaPesquisaView from sapl.materia.views import MateriaLegislativaPesquisaView
from sapl.parlamentares.models import (Filiacao, Legislatura, Mandato, from sapl.parlamentares.models import (Filiacao, Legislatura, Mandato,
Parlamentar, SessaoLegislativa) Parlamentar, SessaoLegislativa)
@ -228,19 +228,23 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
if t[0] == tramitacao.turno: if t[0] == tramitacao.turno:
turno = t[1] turno = t[1]
break break
situacao = MateriaEmTramitacao.objects.select_related("materia", "tramitacao")\
.filter(materia=materia).first().tramitacao.status
title_materia = """<a id=id%s href=%s>%s</a> </br> title_materia = """<a id=id%s href=%s>%s</a> </br>
<b>Processo:</b> %s </br> <b>Processo:</b> %s </br>
<b>Autor:</b> %s </br> <b>Autor:</b> %s </br>
<b>Protocolo:</b> %s </br> <b>Protocolo:</b> %s </br>
<b>Turno:</b> %s </br> <b>Turno:</b> %s </br>
<b>Situação:</b> %s </br>
""" % (obj.materia.id, """ % (obj.materia.id,
url_materia, url_materia,
row[1][0], row[1][0],
numeracao if numeracao else '', numeracao if numeracao else '',
autor if autor else '', autor if autor else '',
num_protocolo if num_protocolo else '', num_protocolo if num_protocolo else '',
turno) turno,
situacao if situacao else '')
# Na linha abaixo, o segundo argumento é None para não colocar # Na linha abaixo, o segundo argumento é None para não colocar
# url em toda a string de title_materia # url em toda a string de title_materia
@ -1689,28 +1693,14 @@ def get_expedientes(sessao_plenaria):
def get_materias_expediente(sessao_plenaria): def get_materias_expediente(sessao_plenaria):
materias = ExpedienteMateria.objects.filter(
sessao_plenaria_id=sessao_plenaria.id)
materias_expediente = [] materias_expediente = []
for m in materias: for m in ExpedienteMateria.objects.select_related("materia").filter(sessao_plenaria_id=sessao_plenaria.id):
ementa = m.materia.ementa
titulo = m.materia
numero = m.numero_ordem
tramitacao = '' tramitacao = ''
tramitacoes = Tramitacao.objects.filter( for aux_tramitacao in Tramitacao.objects.filter(materia=m.materia).order_by('-pk'):
materia=m.materia).order_by('-pk')
for aux_tramitacao in tramitacoes:
if aux_tramitacao.turno: if aux_tramitacao.turno:
tramitacao = aux_tramitacao tramitacao = aux_tramitacao
break break
turno = None
if tramitacao:
turno = get_turno(tramitacao.turno)
rv = m.registrovotacao_set.first() rv = m.registrovotacao_set.first()
rp = m.retiradapauta_set.filter(materia=m.materia).first() rp = m.retiradapauta_set.filter(materia=m.materia).first()
if rv: if rv:
@ -1720,30 +1710,24 @@ def get_materias_expediente(sessao_plenaria):
resultado = rp.tipo_de_retirada.descricao resultado = rp.tipo_de_retirada.descricao
resultado_observacao = rp.observacao resultado_observacao = rp.observacao
else: else:
if m.tipo_votacao == 4: resultado = _('Matéria lida') if m.tipo_votacao == 4 else _('Matéria não votada')
resultado = _('Matéria lida')
else:
resultado = _('Matéria não votada')
resultado_observacao = _(' ') resultado_observacao = _(' ')
autoria = Autoria.objects.filter(materia_id=m.materia_id) materias_expediente.append({
autor = [str(x.autor) for x in autoria] 'ementa': m.materia.ementa,
'titulo': m.materia,
mat = {'ementa': ementa, 'numero': m.numero_ordem,
'titulo': titulo, 'turno': get_turno(tramitacao.turno) if tramitacao else None,
'numero': numero, 'situacao': m.materia.materiaemtramitacao_set.first().tramitacao.status,
'turno': turno, 'resultado': resultado,
'resultado': resultado, 'resultado_observacao': resultado_observacao,
'resultado_observacao': resultado_observacao, 'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=m.materia_id)],
'autor': autor, 'numero_protocolo': m.materia.numero_protocolo,
'numero_protocolo': m.materia.numero_protocolo, 'numero_processo': m.materia.numeracao_set.last(),
'numero_processo': m.materia.numeracao_set.last(), 'observacao': m.observacao
'observacao': m.observacao })
}
materias_expediente.append(mat)
context = {'materia_expediente': materias_expediente} return {'materia_expediente': materias_expediente}
return context
def get_oradores_expediente(sessao_plenaria): def get_oradores_expediente(sessao_plenaria):
@ -1811,26 +1795,14 @@ def get_assinaturas(sessao_plenaria):
def get_materias_ordem_do_dia(sessao_plenaria): def get_materias_ordem_do_dia(sessao_plenaria):
ordem = OrdemDia.objects.filter(sessao_plenaria_id=sessao_plenaria.id)
materias_ordem = [] materias_ordem = []
for o in ordem: for o in OrdemDia.objects.filter(sessao_plenaria_id=sessao_plenaria.id):
ementa = o.materia.ementa
ementa_observacao = o.observacao
titulo = o.materia
numero = o.numero_ordem
tramitacao = '' tramitacao = ''
tramitacoes = Tramitacao.objects.filter( for aux_tramitacao in Tramitacao.objects.filter(materia=o.materia).order_by('-pk'):
materia=o.materia).order_by('-pk')
for aux_tramitacao in tramitacoes:
if aux_tramitacao.turno: if aux_tramitacao.turno:
tramitacao = aux_tramitacao tramitacao = aux_tramitacao
break break
turno = None
if tramitacao:
turno = get_turno(tramitacao.turno)
# Verificar resultado # Verificar resultado
rv = o.registrovotacao_set.filter(materia=o.materia).first() rv = o.registrovotacao_set.filter(materia=o.materia).first()
rp = o.retiradapauta_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 = rp.tipo_de_retirada.descricao
resultado_observacao = rp.observacao resultado_observacao = rp.observacao
else: else:
if o.tipo_votacao == 4: resultado = _('Matéria lida') if o.tipo_votacao == 4 else _('Matéria não votada')
resultado = _('Matéria lida')
else:
resultado = _('Matéria não votada')
resultado_observacao = _(' ') resultado_observacao = _(' ')
voto_sim = ""
voto_nao = ""
voto_abstencoes = ""
voto_nominal = [] voto_nominal = []
if o.tipo_votacao == 2: if o.tipo_votacao == 2:
votos = VotoParlamentar.objects.filter(ordem=o.id) for voto in VotoParlamentar.objects.filter(ordem=o.id):
for voto in votos: voto_nominal.append((voto.parlamentar.nome_completo, voto.voto))
aux_voto = (voto.parlamentar.nome_completo, voto.voto)
voto_nominal.append(aux_voto) voto = RegistroVotacao.objects.filter(ordem=o.id).last()
try: if voto:
voto = RegistroVotacao.objects.filter(ordem=o.id).last()
voto_sim = voto.numero_votos_sim voto_sim = voto.numero_votos_sim
voto_nao = voto.numero_votos_nao voto_nao = voto.numero_votos_nao
voto_abstencoes = voto.numero_abstencoes voto_abstencoes = voto.numero_abstencoes
except AttributeError: else:
voto_sim = " Não Informado" voto_sim = " Não Informado"
voto_nao = " Não Informado" voto_nao = " Não Informado"
voto_abstencoes = " Não Informado" voto_abstencoes = " Não Informado"
autoria = Autoria.objects.filter( materias_ordem.append({
materia_id=o.materia_id) 'ementa': o.materia.ementa,
autor = [str(x.autor) for x in autoria] 'ementa_observacao': o.observacao,
mat = {'ementa': ementa, 'titulo': o.materia,
'ementa_observacao': ementa_observacao, 'numero': o.numero_ordem,
'titulo': titulo, 'turno': get_turno(tramitacao.turno) if tramitacao else None,
'numero': numero, 'situacao': o.materia.materiaemtramitacao_set.first().tramitacao.status,
'turno': turno, 'resultado': resultado,
'resultado': resultado, 'resultado_observacao': resultado_observacao,
'resultado_observacao': resultado_observacao, 'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=o.materia_id)],
'autor': autor, 'numero_protocolo': o.materia.numero_protocolo,
'numero_protocolo': o.materia.numero_protocolo, 'numero_processo': o.materia.numeracao_set.last(),
'numero_processo': o.materia.numeracao_set.last(), 'tipo_votacao': o.TIPO_VOTACAO_CHOICES[o.tipo_votacao],
'tipo_votacao': o.TIPO_VOTACAO_CHOICES[o.tipo_votacao], 'voto_sim': voto_sim,
'voto_sim': voto_sim, 'voto_nao': voto_nao,
'voto_nao': voto_nao, 'voto_abstencoes': voto_abstencoes,
'voto_abstencoes': voto_abstencoes, 'voto_nominal': voto_nominal,
'voto_nominal': voto_nominal, })
}
materias_ordem.append(mat)
context = {'materias_ordem': materias_ordem} return {'materias_ordem': materias_ordem}
return context
def get_oradores_ordemdia(sessao_plenaria): def get_oradores_ordemdia(sessao_plenaria):
@ -1957,13 +1918,9 @@ class ResumoView(DetailView):
context = self.get_context_data(object=self.object) context = self.get_context_data(object=self.object)
# Votos de Votação Nominal de Matérias Expediente # 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 = [] 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 = [] votos_materia = []
titulo_materia = mevn.materia titulo_materia = mevn.materia
registro = RegistroVotacao.objects.filter(expediente=mevn) registro = RegistroVotacao.objects.filter(expediente=mevn)
@ -1971,11 +1928,10 @@ class ResumoView(DetailView):
for vp in VotoParlamentar.objects.filter(votacao=registro).order_by('parlamentar'): for vp in VotoParlamentar.objects.filter(votacao=registro).order_by('parlamentar'):
votos_materia.append(vp) votos_materia.append(vp)
dados_votacao = { votacoes.append({
'titulo': titulo_materia, 'titulo': titulo_materia,
'votos': votos_materia 'votos': votos_materia
} })
votacoes.append(dados_votacao)
context.update({'votos_nominais_materia_expediente': votacoes}) context.update({'votos_nominais_materia_expediente': votacoes})
@ -2009,12 +1965,8 @@ class ResumoView(DetailView):
# ===================================================================== # =====================================================================
# Matérias Ordem do Dia # Matérias Ordem do Dia
# Votos de Votação Nominal de 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 = [] 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 = [] votos_materia_od = []
t_materia = modvn.materia t_materia = modvn.materia
registro_od = RegistroVotacao.objects.filter(ordem=modvn) 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'): for vp_od in VotoParlamentar.objects.filter(votacao=registro_od).order_by('parlamentar'):
votos_materia_od.append(vp_od) votos_materia_od.append(vp_od)
dados_votacao_od = { votacoes_od.append({
'titulo': t_materia, 'titulo': t_materia,
'votos': votos_materia_od 'votos': votos_materia_od
} })
votacoes_od.append(dados_votacao_od)
context.update({'votos_nominais_materia_ordem_dia': votacoes_od}) context.update({'votos_nominais_materia_ordem_dia': votacoes_od})

3
sapl/templates/relatorios/blocos_sessao_plenaria/materias_expediente.html

@ -16,6 +16,9 @@
<dt><b>{{materia.num_ordem}} -</b> {{materia.id_materia}}</dt> <dt><b>{{materia.num_ordem}} -</b> {{materia.id_materia}}</dt>
<dt style="text-align: left;"><b>Turno:</b> {{materia.des_turno}}</dt> <dt style="text-align: left;"><b>Turno:</b> {{materia.des_turno}}</dt>
<dt style="text-align: left;"><b>{{materia.num_autores}}: </b>{{materia.nom_autor}}</dt> <dt style="text-align: left;"><b>{{materia.num_autores}}: </b>{{materia.nom_autor}}</dt>
{% if materia.situacao %}
<dt style="text-align: left;"><b>Situação: </b>{{materia.situacao}}</dt>
{% endif %}
</dl> </dl>
</td> </td>
<td style="width:60%"><div style="margin:10px">{{materia.txt_ementa}}</div></td> <td style="width:60%"><div style="margin:10px">{{materia.txt_ementa}}</div></td>

3
sapl/templates/relatorios/blocos_sessao_plenaria/materias_ordemdia.html

@ -16,6 +16,9 @@
<dt><b>{{materia.num_ordem}} -</b> {{materia.id_materia}}</dt> <dt><b>{{materia.num_ordem}} -</b> {{materia.id_materia}}</dt>
<dt style="text-align: left;"><b>Turno:</b> {{materia.des_turno}}</dt> <dt style="text-align: left;"><b>Turno:</b> {{materia.des_turno}}</dt>
<dt style="text-align: left;"><b>{{materia.num_autores}}: </b>{{materia.nom_autor}}</dt> <dt style="text-align: left;"><b>{{materia.num_autores}}: </b>{{materia.nom_autor}}</dt>
{% if materia.situacao %}
<dt style="text-align: left;"><b>Situação: </b>{{materia.situacao}}</dt>
{% endif %}
</dl> </dl>
</td> </td>
<td style="width:60%">{{materia.txt_ementa}}</td> <td style="width:60%">{{materia.txt_ementa}}</td>

3
sapl/templates/sessao/blocos_ata/materias_expediente.html

@ -15,6 +15,9 @@
{% if m.turno %} {% if m.turno %}
Turno: {{m.turno}}, Turno: {{m.turno}},
{% endif %} {% endif %}
{% if m.situacao %}
Situação: {{m.situacao}},
{% endif %}
{% if m.tipo_votacao %} {% if m.tipo_votacao %}
Tipo: {{m.tipo_votacao}}, Tipo: {{m.tipo_votacao}},
Sim: {{ m.voto_sim }}, Sim: {{ m.voto_sim }},

3
sapl/templates/sessao/blocos_ata/materias_ordem_dia.html

@ -15,6 +15,9 @@
{% if m.turno %} {% if m.turno %}
Turno: {{m.turno}}, Turno: {{m.turno}},
{% endif %} {% endif %}
{% if m.situacao %}
Situação: {{m.situacao}},
{% endif %}
{% if m.tipo_votacao %} {% if m.tipo_votacao %}
Tipo: {{m.tipo_votacao}}, Tipo: {{m.tipo_votacao}},
Sim: {{ m.voto_sim }}, Sim: {{ m.voto_sim }},

5
sapl/templates/sessao/blocos_resumo/materias_expediente.html

@ -34,6 +34,11 @@
<br /> <br />
<b>Processo:</b> {{ m.numero_processo }} <b>Processo:</b> {{ m.numero_processo }}
{% endif %} {% endif %}
{% if m.situacao %}
<br />
<b>Situação:</b> {{ m.situacao }}
{% endif %}
</td> </td>
<td> <td>
{{m.ementa|dont_break_out}}<br/> {{m.ementa|dont_break_out}}<br/>

5
sapl/templates/sessao/blocos_resumo/materias_ordem_dia.html

@ -35,6 +35,11 @@
<br /> <br />
<b>Processo:</b> {{ m.numero_processo }} <b>Processo:</b> {{ m.numero_processo }}
{% endif %} {% endif %}
{% if m.situacao %}
<br />
<b>Situação:</b> {{ m.situacao }}
{% endif %}
</td> </td>
<td>{{m.ementa|dont_break_out}}</b><br/>{{m.observacao|dont_break_out}}</td> <td>{{m.ementa|dont_break_out}}</b><br/>{{m.observacao|dont_break_out}}</td>
<td><b>{{m.resultado}}</b><br/>{{m.resultado_observacao}}</td> <td><b>{{m.resultado}}</b><br/>{{m.resultado_observacao}}</td>

Loading…
Cancel
Save