diff --git a/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py b/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py index 8925ebcd0..0b5d758ca 100644 --- a/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py +++ b/sapl/relatorios/templates/pdf_sessao_plenaria_gerar.py @@ -227,6 +227,30 @@ def expediente_materia(lst_expediente_materia): return tmp +def expediente_materia_vot_nom(lst_expediente_materia_vot_nom): + """ + """ + tmp = '' + tmp += '\t\tVotações Nominais - Matérias do Expediente\n\n' + tmp += '\t\t\n' + tmp += '\t\t\t
\n' + tmp += '\t\t
\n' + tmp += '\n' + tmp += 'MatériaVotos\n' + for expediente_materia_vot_nom in lst_expediente_materia_vot_nom: + tmp += '' + str(expediente_materia_vot_nom['titulo']) + '' + if expediente_materia_vot_nom['votos']: + tmp += '' + for v in expediente_materia_vot_nom['votos']: + tmp += '' + str(v.parlamentar) + ' - ' + v.voto + '' + tmp += '' + else: + tmp += 'Matéria não votada' + tmp += '\n' + tmp += '\t\t\n' + return tmp + + def oradores_expediente(lst_oradores_expediente): """ @@ -292,6 +316,30 @@ def votacao(lst_votacao): return tmp +def votacao_vot_nom(lst_votacao_vot_nom): + """ + """ + tmp = '' + tmp += '\t\tVotações Nominais - Matérias da Ordem do Dia\n\n' + tmp += '\t\t\n' + tmp += '\t\t\t
\n' + tmp += '\t\t
\n' + tmp += '\n' + tmp += 'MatériaVotos\n' + for votacao_vot_nom in lst_votacao_vot_nom: + tmp += '' + str(votacao_vot_nom['titulo']) + '' + if votacao_vot_nom['votos']: + tmp += '' + for v in votacao_vot_nom['votos']: + tmp += '' + str(v.parlamentar) + ' - ' + v.voto + '' + tmp += '' + else: + tmp += 'Matéria não votada' + tmp += '\n' + tmp += '\t\t\n' + return tmp + + def oradores(lst_oradores): """ @@ -326,7 +374,7 @@ def ocorrencias(lst_ocorrencias): return tmp -def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao, lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_oradores, lst_ocorrencias): +def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao, lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, lst_expediente_materia_vot_nom, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_votacao_vot_nom, lst_oradores, lst_ocorrencias): """ """ arquivoPdf = str(int(time.time() * 100)) + ".pdf" @@ -355,7 +403,9 @@ def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao 'lista_p': presenca(lst_presenca_sessao, lst_ausencia_sessao), 'lista_p_o_d': presenca_ordem_dia(lst_presenca_ordem_dia), 'mat_exp': expediente_materia(lst_expediente_materia), + 'v_n_mat_exp': expediente_materia_vot_nom(lst_expediente_materia_vot_nom), 'mat_o_d': votacao(lst_votacao), + 'v_n_mat_o_d': votacao_vot_nom(lst_votacao_vot_nom), 'mesa_d': mesa(lst_mesa), 'oradores_exped': oradores_expediente(lst_oradores_expediente), 'oradores_expli': oradores(lst_oradores), @@ -374,6 +424,8 @@ def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao tmp += dict_ord_template[ordenacao.nono] tmp += dict_ord_template[ordenacao.decimo] tmp += dict_ord_template[ordenacao.decimo_primeiro] + tmp += dict_ord_template[ordenacao.decimo_segundo] + tmp += dict_ord_template[ordenacao.decimo_terceiro] else: tmp += inf_basicas(inf_basicas_dic) @@ -381,9 +433,11 @@ def principal(rodape_dic, imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao tmp += presenca(lst_presenca_sessao, lst_ausencia_sessao) tmp += expedientes(lst_expedientes) tmp += expediente_materia(lst_expediente_materia) + tmp += expediente_materia_vot_nom(lst_expediente_materia_vot_nom) tmp += oradores_expediente(lst_oradores_expediente) tmp += presenca_ordem_dia(lst_presenca_ordem_dia) tmp += votacao(lst_votacao) + tmp += votacao_vot_nom(lst_votacao_vot_nom) tmp += oradores(lst_oradores) tmp += ocorrencias(lst_ocorrencias) diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index aad44fc1d..53331eadd 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -19,7 +19,8 @@ from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao, IntegranteMesa, JustificativaAusencia, Orador, OradorExpediente, OrdemDia, PresencaOrdemDia, SessaoPlenaria, - SessaoPlenariaPresenca, OcorrenciaSessao) + SessaoPlenariaPresenca, OcorrenciaSessao, + RegistroVotacao, VotoParlamentar) from sapl.settings import STATIC_ROOT from sapl.utils import LISTA_DE_UFS, TrocaTag, filiacao_data @@ -633,6 +634,28 @@ def get_sessao_plenaria(sessao, casa): dic_expediente_materia["votacao_observacao"] = ' ' lst_expediente_materia.append(dic_expediente_materia) + # Lista dos votos nominais das matérias do Expediente + lst_expediente_materia_vot_nom = [] + + materias_expediente_votacao_nominal = ExpedienteMateria.objects.filter( + sessao_plenaria=sessao, + tipo_votacao=2).order_by('-materia') + + for mevn in materias_expediente_votacao_nominal: + votos_materia = [] + titulo_materia = mevn.materia + registro = RegistroVotacao.objects.filter(expediente=mevn) + + if registro: + for vp in VotoParlamentar.objects.filter(votacao=registro).order_by('parlamentar'): + votos_materia.append(vp) + + dic_expediente_materia_vot_nom = { + 'titulo': titulo_materia, + 'votos': votos_materia + } + lst_expediente_materia_vot_nom.append(dic_expediente_materia_vot_nom) + # Lista dos oradores do Expediente lst_oradores_expediente = [] for orador_expediente in OradorExpediente.objects.filter( @@ -722,6 +745,28 @@ def get_sessao_plenaria(sessao, casa): dic_votacao["nom_resultado"] = "Matéria não votada" lst_votacao.append(dic_votacao) + # Lista dos votos nominais das matérias da Ordem do Dia + lst_votacao_vot_nom = [] + + materias_ordem_dia_votacao_nominal = OrdemDia.objects.filter( + sessao_plenaria=sessao, + tipo_votacao=2).order_by('-materia') + + for modvn in materias_ordem_dia_votacao_nominal: + votos_materia_od = [] + t_materia = modvn.materia + registro_od = RegistroVotacao.objects.filter(ordem=modvn) + + if registro_od: + for vp_od in VotoParlamentar.objects.filter(votacao=registro_od).order_by('parlamentar'): + votos_materia_od.append(vp_od) + + dic_votacao_vot_nom = { + 'titulo': t_materia, + 'votos': votos_materia_od + } + lst_votacao_vot_nom.append(dic_votacao_vot_nom) + # Lista dos oradores nas Explicações Pessoais lst_oradores = [] for orador in Orador.objects.filter( @@ -767,9 +812,11 @@ def get_sessao_plenaria(sessao, casa): lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, + lst_expediente_materia_vot_nom, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, + lst_votacao_vot_nom, lst_oradores, lst_ocorrencias) @@ -822,9 +869,11 @@ def relatorio_sessao_plenaria(request, pk): lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, + lst_expediente_materia_vot_nom, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, + lst_votacao_vot_nom, lst_oradores, lst_ocorrencias) = get_sessao_plenaria(sessao, casa) @@ -843,9 +892,11 @@ def relatorio_sessao_plenaria(request, pk): lst_ausencia_sessao, lst_expedientes, lst_expediente_materia, + lst_expediente_materia_vot_nom, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, + lst_votacao_vot_nom, lst_oradores, lst_ocorrencias) diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 9ed642a00..6f68de1a6 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -1418,7 +1418,30 @@ class ResumoView(DetailView): materias_expediente.append(mat) context.update({'materia_expediente': materias_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 = [] + for mevn in materias_expediente_votacao_nominal: + + votos_materia = [] + titulo_materia = mevn.materia + registro = RegistroVotacao.objects.filter(expediente=mevn) + if registro: + for vp in VotoParlamentar.objects.filter(votacao=registro).order_by('parlamentar'): + votos_materia.append(vp) + + dados_votacao = { + 'titulo': titulo_materia, + 'votos': votos_materia + } + votacoes.append(dados_votacao) + + context.update({'votos_nominais_materia_expediente': votacoes}) + # ===================================================================== # Oradores Expediente oradores = [] @@ -1518,6 +1541,29 @@ class ResumoView(DetailView): context.update({'materias_ordem': materias_ordem}) + # 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: + + votos_materia_od = [] + t_materia = modvn.materia + registro_od = RegistroVotacao.objects.filter(ordem=modvn) + if registro_od: + for vp_od in VotoParlamentar.objects.filter(votacao=registro_od).order_by('parlamentar'): + votos_materia_od.append(vp_od) + + dados_votacao_od = { + 'titulo': t_materia, + 'votos': votos_materia_od + } + votacoes_od.append(dados_votacao_od) + + context.update({'votos_nominais_materia_ordem_dia': votacoes_od}) + # ===================================================================== # Oradores nas Explicações Pessoais oradores_explicacoes = [] @@ -1556,7 +1602,9 @@ class ResumoView(DetailView): 'lista_p': 'lista_presenca.html', 'lista_p_o_d': 'lista_presenca_ordem_dia.html', 'mat_exp': 'materias_expediente.html', + 'v_n_mat_exp': 'votos_nominais_materias_expediente.html', 'mat_o_d': 'materias_ordem_dia.html', + 'v_n_mat_o_d': 'votos_nominais_materias_ordem_dia.html', 'mesa_d': 'mesa_diretora.html', 'oradores_exped': 'oradores_expediente.html', 'oradores_expli': 'oradores_explicacoes.html', @@ -1575,7 +1623,10 @@ class ResumoView(DetailView): 'oitavo_ordenacao': dict_ord_template[ordenacao.oitavo], 'nono_ordenacao': dict_ord_template[ordenacao.nono], 'decimo_ordenacao': dict_ord_template[ordenacao.decimo], - 'decimo_primeiro_ordenacao': dict_ord_template[ordenacao.decimo_primeiro]}) + 'decimo_primeiro_ordenacao': dict_ord_template[ordenacao.decimo_primeiro], + 'decimo_segundo_ordenacao': dict_ord_template[ordenacao.decimo_segundo], + 'decimo_terceiro_ordenacao': dict_ord_template[ordenacao.decimo_terceiro]}) + else: context.update( {'primeiro_ordenacao': dict_ord_template['id_basica'], @@ -1584,11 +1635,14 @@ class ResumoView(DetailView): 'quarto_ordenacao': dict_ord_template['lista_p'], 'quinto_ordenacao': dict_ord_template['exp'], 'sexto_ordenacao': dict_ord_template['mat_exp'], - 'setimo_ordenacao': dict_ord_template['oradores_exped'], - 'oitavo_ordenacao': dict_ord_template['lista_p_o_d'], - 'nono_ordenacao': dict_ord_template['mat_o_d'], - 'decimo_ordenacao': dict_ord_template['oradores_expli'], - 'decimo_primeiro_ordenacao': dict_ord_template['ocorr_sessao']}) + 'setimo_ordenacao': dict_ord_template['v_n_mat_exp'], + 'oitavo_ordenacao': dict_ord_template['oradores_exped'], + 'nono_ordenacao': dict_ord_template['lista_p_o_d'], + 'decimo_ordenacao': dict_ord_template['mat_o_d'], + 'decimo_primeiro_ordenacao': dict_ord_template['v_n_mat_o_d'], + 'decimo_segundo_ordenacao': dict_ord_template['oradores_expli'], + 'decimo_terceiro_ordenacao': dict_ord_template['ocorr_sessao'] + }) return self.render_to_response(context) diff --git a/sapl/templates/sessao/blocos_resumo/votos_nominais_materias_expediente.html b/sapl/templates/sessao/blocos_resumo/votos_nominais_materias_expediente.html new file mode 100644 index 000000000..91160c869 --- /dev/null +++ b/sapl/templates/sessao/blocos_resumo/votos_nominais_materias_expediente.html @@ -0,0 +1,28 @@ +
+ Votações Nominais - Matérias do Expediente +
+ + + + + + + + + {% for m in votos_nominais_materia_expediente %} + + + {% if m.votos %} + + {% else %} + + {% endif %} + + {% endfor %} + +
MatériaVotos
{{ m.titulo }} + {% for v in m.votos %} +
  • {{v.parlamentar}} - {{v.voto}}
  • + {% endfor %} +
    Matéria não votada
    +
    \ No newline at end of file diff --git a/sapl/templates/sessao/blocos_resumo/votos_nominais_materias_ordem_dia.html b/sapl/templates/sessao/blocos_resumo/votos_nominais_materias_ordem_dia.html new file mode 100644 index 000000000..d610216d7 --- /dev/null +++ b/sapl/templates/sessao/blocos_resumo/votos_nominais_materias_ordem_dia.html @@ -0,0 +1,28 @@ +
    + Votações Nominais - Matérias da Ordem do Dia +
    + + + + + + + + + {% for m in votos_nominais_materia_ordem_dia %} + + + {% if m.votos %} + + {% else %} + + {% endif %} + + {% endfor %} + +
    MatériaVotos
    {{ m.titulo }} + {% for v in m.votos %} +
  • {{v.parlamentar}} - {{v.voto}}
  • + {% endfor %} +
    Matéria não votada
    +
    \ No newline at end of file diff --git a/sapl/templates/sessao/resumo.html b/sapl/templates/sessao/resumo.html index c7c2070ce..acf9fc5b6 100644 --- a/sapl/templates/sessao/resumo.html +++ b/sapl/templates/sessao/resumo.html @@ -53,4 +53,10 @@ {% include 'sessao/blocos_resumo/'|add:decimo_primeiro_ordenacao %}


    + {% include 'sessao/blocos_resumo/'|add:decimo_segundo_ordenacao %} +


    + + {% include 'sessao/blocos_resumo/'|add:decimo_segundo_ordenacao %} +


    + {% endblock detail_content %}