Browse Source

Adicionando multimídia em relatorio de sessao plenaria (#3128)

* Adicionando multimídia em relatorio de sessao plenaria

* Movendo campo multimidia para cima

* Mais alguns ajustes no layout

* Ajusta tamanho de conteúdo multimídia

* Adiciona seções faltantes

* Retornando botão de relatorio antigo

* ajustes layout

* Adiciona ordenação

* Comentando botão impressão antiga

Co-authored-by: Edward Ribeiro <eribeiro@interlegis.leg.br>
pull/3163/head
Ulysses Lara 5 years ago
committed by eribeiro
parent
commit
75a780ac93
  1. 142
      sapl/relatorios/views.py
  2. 1
      sapl/static/sapl/css/relatorio.css
  3. 2
      sapl/templates/relatorios/base_relatorio.html
  4. 3
      sapl/templates/relatorios/blocos_sessao_plenaria/conteudo_multimidia.html
  5. 5
      sapl/templates/relatorios/blocos_sessao_plenaria/expedientes.html
  6. 4
      sapl/templates/relatorios/blocos_sessao_plenaria/identificacao_basica.html
  7. 21
      sapl/templates/relatorios/blocos_sessao_plenaria/justificativa_ausencia_sessao.html
  8. 6
      sapl/templates/relatorios/blocos_sessao_plenaria/lista_presenca_ordemdia.html
  9. 4
      sapl/templates/relatorios/blocos_sessao_plenaria/lista_presenca_sessao.html
  10. 27
      sapl/templates/relatorios/blocos_sessao_plenaria/materias_expediente.html
  11. 27
      sapl/templates/relatorios/blocos_sessao_plenaria/materias_ordemdia.html
  12. 4
      sapl/templates/relatorios/blocos_sessao_plenaria/mesa_diretora.html
  13. 4
      sapl/templates/relatorios/blocos_sessao_plenaria/ocorrencias_sessao.html
  14. 7
      sapl/templates/relatorios/blocos_sessao_plenaria/oradores_expediente.html
  15. 8
      sapl/templates/relatorios/blocos_sessao_plenaria/oradores_explicacoes.html
  16. 7
      sapl/templates/relatorios/blocos_sessao_plenaria/oradores_ordemdia.html
  17. 27
      sapl/templates/relatorios/blocos_sessao_plenaria/votos_nominais_expediente.html
  18. 27
      sapl/templates/relatorios/blocos_sessao_plenaria/votos_nominais_ordemdia.html
  19. 162
      sapl/templates/relatorios/relatorio_sessao_plenaria.html
  20. 10
      sapl/templates/sessao/resumo.html

142
sapl/relatorios/views.py

@ -4,7 +4,6 @@ import logging
import re
import tempfile
from django.core.exceptions import ObjectDoesNotExist
from django.http import Http404, HttpResponse
from django.utils import timezone
@ -25,7 +24,7 @@ from sapl.sessao.models import (ExpedienteMateria, ExpedienteSessao,
Orador, OradorExpediente,
OrdemDia, PresencaOrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca, OcorrenciaSessao,
RegistroVotacao, VotoParlamentar, OradorOrdemDia, TipoExpediente)
RegistroVotacao, VotoParlamentar, OradorOrdemDia, TipoExpediente, ResumoOrdenacao)
from sapl.settings import STATIC_ROOT
from sapl.utils import LISTA_DE_UFS, TrocaTag, filiacao_data
@ -58,7 +57,6 @@ def get_kwargs_params(request, fields):
def get_cabecalho(casa):
cabecalho = {}
cabecalho["nom_casa"] = casa.nome
uf_dict = dict(LISTA_DE_UFS)
@ -74,7 +72,6 @@ def get_imagem(casa):
def get_rodape(casa):
if len(casa.cep) == 8:
cep = casa.cep[:4] + "-" + casa.cep[5:]
else:
@ -110,7 +107,6 @@ def get_rodape(casa):
def get_materias(mats):
materias = []
for materia in mats:
dic = {}
@ -294,7 +290,6 @@ def relatorio_capa_processo(request):
def get_ordem_dia(ordem, sessao):
# TODO: fazer implementação de ordem dia
pass
@ -361,7 +356,6 @@ def relatorio_documento_administrativo(request):
def get_documento_administrativo(docs):
documentos = []
for d in docs:
dic = {}
@ -505,7 +499,6 @@ def remove_html_comments(text):
def get_sessao_plenaria(sessao, casa):
inf_basicas_dic = {}
inf_basicas_dic["num_sessao_plen"] = str(sessao.numero)
inf_basicas_dic["nom_sessao"] = sessao.tipo.nome
@ -742,7 +735,6 @@ def get_sessao_plenaria(sessao, casa):
numeracao = materia.numeracao_set.first()
if numeracao:
dic_votacao["des_numeracao"] = (
str(numeracao.numero_materia) +
'/' +
@ -970,7 +962,6 @@ def relatorio_sessao_plenaria(request, pk):
def get_protocolos(prots):
protocolos = []
for protocolo in prots:
dic = {}
@ -1087,7 +1078,6 @@ def relatorio_etiqueta_protocolo(request, nro, ano):
def get_etiqueta_protocolos(prots):
protocolos = []
for p in prots:
dic = {}
@ -1169,7 +1159,6 @@ def relatorio_pauta_sessao(request, pk):
def get_pauta_sessao(sessao, casa):
inf_basicas_dic = {}
inf_basicas_dic["nom_sessao"] = sessao.tipo.nome
inf_basicas_dic["num_sessao_plen"] = sessao.numero
@ -1277,7 +1266,8 @@ def get_pauta_sessao(sessao, casa):
inf_basicas_dic,
expedientes)
def make_pdf(base_url,main_template,header_template,main_css='',header_css=''):
def make_pdf(base_url, main_template, header_template, main_css='', header_css=''):
html = HTML(base_url=base_url, string=main_template)
main_doc = html.render(stylesheets=[])
@ -1288,7 +1278,7 @@ def make_pdf(base_url,main_template,header_template,main_css='',header_css=''):
return get_page_body(box.all_children())
# Template of header
html = HTML(base_url=base_url,string=header_template)
html = HTML(base_url=base_url, string=header_template)
header = html.render(stylesheets=[CSS(string='@page {size:A4; margin:1cm;}')])
header_page = header.pages[0]
@ -1304,7 +1294,7 @@ def make_pdf(base_url,main_template,header_template,main_css='',header_css=''):
return pdf_file
def resumo_ata_pdf(request,pk):
def resumo_ata_pdf(request, pk):
base_url = request.build_absolute_uri()
casa = CasaLegislativa.objects.first()
rodape = ' '.join(get_rodape(casa))
@ -1327,12 +1317,12 @@ def resumo_ata_pdf(request,pk):
context.update({'object': sessao_plenaria})
context.update({'data': dt.today().strftime('%d/%m/%Y')})
context.update({'rodape': rodape})
header_context = {"casa": casa, 'logotipo':casa.logotipo, 'MEDIA_URL': MEDIA_URL}
header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL}
html_template = render_to_string('relatorios/relatorio_ata.html', context)
html_header = render_to_string('relatorios/header_ata.html', header_context)
pdf_file = make_pdf(base_url=base_url,main_template=html_template,header_template=html_header)
pdf_file = make_pdf(base_url=base_url, main_template=html_template, header_template=html_header)
response = HttpResponse(content_type='application/pdf;')
response['Content-Disposition'] = 'inline; filename=relatorio.pdf'
@ -1341,6 +1331,7 @@ def resumo_ata_pdf(request,pk):
return response
def cria_relatorio(request, context, html_string, header_info=""):
base_url = request.build_absolute_uri()
casa = CasaLegislativa.objects.first()
@ -1363,62 +1354,80 @@ def cria_relatorio(request, context, html_string, header_info=""):
return response
def relatorio_doc_administrativos(request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_doc_administrativos.html')
def relatorio_materia_em_tramitacao(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_materias_em_tramitacao.html')
def relatorio_materia_por_autor(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_materias_por_autor.html')
def relatorio_materia_por_ano_autor(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_materias_por_ano_autor.html')
def relatorio_presenca_sessao(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_presenca_sessao.html')
def relatorio_atas(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_atas.html')
def relatorio_historico_tramitacao(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_historico_tramitacao.html')
def relatorio_fim_prazo_tramitacao(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_fim_prazo_tramitacao.html')
def relatorio_reuniao(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_reuniao.html')
def relatorio_audiencia(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_audiencia.html')
def relatorio_normas_mes(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_normas_mes.html')
def relatorio_normas_vigencia(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_normas_vigencia.html')
def relatorio_historico_tramitacao_adm(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_historico_tramitacao_adm.html')
def relatorio_estatisticas_acesso_normas(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_estatisticas_acesso_normas.html')
def relatorio_documento_acessorio(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_documento_acessorio.html')
def relatorio_normas_por_autor(obj, request, context):
return cria_relatorio(request, context, 'relatorios/relatorio_normas_por_autor.html')
def relatorio_pauta_sessao_weasy(obj, request, context):
sessao = context['object']
info = "Pauta da {} ({} - {}) Legislatura".format(sessao,sessao.legislatura.data_inicio.year,sessao.legislatura.data_fim.year)
return cria_relatorio(request, context, 'relatorios/relatorio_pauta_sessao.html',info)
info = "Pauta da {} ({} - {}) Legislatura".format(sessao, sessao.legislatura.data_inicio.year,
sessao.legislatura.data_fim.year)
return cria_relatorio(request, context, 'relatorios/relatorio_pauta_sessao.html', info)
def relatorio_sessao_plenaria_pdf(request, pk):
base_url=request.build_absolute_uri()
base_url = request.build_absolute_uri()
logger = logging.getLogger(__name__)
username = request.user.username
casa = CasaLegislativa.objects.first()
@ -1453,23 +1462,83 @@ def relatorio_sessao_plenaria_pdf(request, pk):
lst_oradores,
lst_ocorrencias) = get_sessao_plenaria(sessao, casa)
html_template = render_to_string('relatorios/relatorio_sessao_plenaria.html',
{
"inf_basicas_dic":inf_basicas_dic,
"lst_mesa":lst_mesa,
"lst_presenca_sessao":lst_presenca_sessao,
"lst_ausencia_sessao":lst_ausencia_sessao,
"lst_expedientes":lst_expedientes,
"lst_expediente_materia":lst_expediente_materia,
"lst_oradores_expediente":lst_oradores_expediente,
"lst_presenca_ordem_dia":lst_presenca_ordem_dia,
"lst_votacao":lst_votacao,
"lst_oradores":lst_oradores,
"lst_ocorrencias":lst_ocorrencias,
"rodape":rodape,
dict_ord_template = {
'cont_mult': 'conteudo_multimidia.html',
'exp': 'expedientes.html',
'id_basica': 'identificacao_basica.html',
'lista_p': 'lista_presenca_sessao.html',
'lista_p_o_d': 'lista_presenca_ordemdia.html',
'mat_exp': 'materias_expediente.html',
'v_n_mat_exp': 'votos_nominais_expediente.html',
'mat_o_d': 'materias_ordemdia.html',
'v_n_mat_o_d': 'votos_nominais_ordemdia.html',
'mesa_d': 'mesa_diretora.html',
'oradores_exped': 'oradores_expediente.html',
'oradores_o_d': 'oradores_ordemdia.html',
'oradores_expli': 'oradores_explicacoes.html',
'ocorr_sessao': 'ocorrencias_sessao.html'
}
context = {
"inf_basicas_dic": inf_basicas_dic,
"cont_mult_dic": cont_mult_dic,
"lst_mesa": lst_mesa,
"lst_expediente_materia_vot_nom": lst_expediente_materia_vot_nom,
"lst_presenca_sessao": lst_presenca_sessao,
"lst_ausencia_sessao": lst_ausencia_sessao,
"lst_expedientes": lst_expedientes,
"lst_expediente_materia": lst_expediente_materia,
"lst_oradores_expediente": lst_oradores_expediente,
"lst_presenca_ordem_dia": lst_presenca_ordem_dia,
"lst_votacao": lst_votacao,
"lst_oradores_ordemdia": lst_oradores_ordemdia,
"lst_votacao_vot_nom": lst_votacao_vot_nom,
"lst_oradores": lst_oradores,
"lst_ocorrencias": lst_ocorrencias,
"rodape": rodape,
"data": dt.today().strftime('%d/%m/%Y')
}
ordenacao = ResumoOrdenacao.objects.get_or_create()[0]
try:
context.update({
'primeiro_ordenacao': dict_ord_template[ordenacao.primeiro],
'segundo_ordenacao': dict_ord_template[ordenacao.segundo],
'terceiro_ordenacao': dict_ord_template[ordenacao.terceiro],
'quarto_ordenacao': dict_ord_template[ordenacao.quarto],
'quinto_ordenacao': dict_ord_template[ordenacao.quinto],
'sexto_ordenacao': dict_ord_template[ordenacao.sexto],
'setimo_ordenacao': dict_ord_template[ordenacao.setimo],
'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_segundo_ordenacao': dict_ord_template[ordenacao.decimo_segundo],
'decimo_terceiro_ordenacao': dict_ord_template[ordenacao.decimo_terceiro],
'decimo_quarto_ordenacao': dict_ord_template[ordenacao.decimo_quarto]
})
except KeyError as e:
# self.logger.error("KeyError: " + str(e) + ". Erro ao tentar utilizar "
# "configuração de ordenação. Utilizando ordenação padrão.")
context.update({
'primeiro_ordenacao': 'identificacao_basica.html',
'segundo_ordenacao': 'conteudo_multimidia.html',
'terceiro_ordenacao': 'mesa_diretora.html',
'quarto_ordenacao': 'lista_presenca_sessao.html',
'quinto_ordenacao': 'expedientes.html',
'sexto_ordenacao': 'materias_expediente.html',
'setimo_ordenacao': 'votos_nominais_expediente.html',
'oitavo_ordenacao': 'oradores_expediente.html',
'nono_ordenacao': 'lista_presenca_ordemdia.html',
'decimo_ordenacao': 'materias_ordemdia.html',
'decimo_primeiro_ordenacao': 'votos_nominais_ordemdia.html',
'decimo_segundo_ordenacao': 'oradores_ordemdia.html',
'decimo_terceiro_ordenacao': 'oradores_explicacoes.html',
'decimo_quarto_ordenacao': 'ocorrencias_sessao.html'
})
html_template = render_to_string('relatorios/relatorio_sessao_plenaria.html', context)
info = "Resumo da {}ª Reunião {} \
da {}ª Sessão Legislativa da {} \
Legislatura".format(inf_basicas_dic['num_sessao_plen'],
@ -1478,10 +1547,10 @@ def relatorio_sessao_plenaria_pdf(request, pk):
inf_basicas_dic['num_legislatura']
)
html_header = render_to_string('relatorios/header_ata.html',{"casa":casa,
html_header = render_to_string('relatorios/header_ata.html', {"casa": casa,
"MEDIA_URL": MEDIA_URL,
"logotipo": casa.logotipo,
"info":info})
"info": info})
pdf_file = make_pdf(base_url=base_url, main_template=html_template, header_template=html_header)
@ -1491,4 +1560,3 @@ def relatorio_sessao_plenaria_pdf(request, pk):
response.write(pdf_file)
return response

1
sapl/static/sapl/css/relatorio.css

@ -38,6 +38,7 @@ html body section dl {
html body section dt{
width: 50px;
text-align: left;
}
html body section dd {

2
sapl/templates/relatorios/base_relatorio.html

@ -8,7 +8,7 @@
<style>
@page{
@bottom-right {
content: "Página" counter(page);
content: "Página " counter(page);
height: 3cm;
font-size: 8pt;
}

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

@ -0,0 +1,3 @@
<h2 class="gray-title">Conteúdo Multimídia</h2>
<p><b>Multimídia Audio:</b> {{cont_mult_dic.multimidia_audio}}</p>
<p><b>Multimídia Video:</b> {{cont_mult_dic.multimidia_video}}</p>

5
sapl/templates/relatorios/blocos_sessao_plenaria/expedientes.html

@ -0,0 +1,5 @@
<h2 class="gray-title">Expedientes</h2>
{% for expediente in lst_expedientes%}
<h3>{{expediente.nom_expediente}}</h3>
<p style="margin-bottom: 1cm">{{expediente.txt_expediente|safe}}</p>
{% endfor%}

4
sapl/templates/relatorios/blocos_sessao_plenaria/identificacao_basica.html

@ -0,0 +1,4 @@
<h2 class="gray-title">Informações Básicas</h2>
<p><b>Tipo da Sessão:</b> {{inf_basicas_dic.nom_sessao}}</p>
<p><b>Abertura:</b> {{inf_basicas_dic.dat_inicio_sessao}} - {{inf_basicas_dic.hr_inicio_sessao}}</p>
<p><b>Encerramento:</b> {{inf_basicas_dic.dat_fim_sessao}} - {{inf_basicas_dic.hr_fim_sessao}}</p>

21
sapl/templates/relatorios/blocos_sessao_plenaria/justificativa_ausencia_sessao.html

@ -0,0 +1,21 @@
<h2 class="gray-title">Justificativas de Ausência da Sessão</h2>
<table class="grayTable">
<thead>
<tr>
<th>Parlamentar</th>
<th>Justificativa</th>
<th>Ausente em</th>
</tr>
</thead>
<tbody>
{% for ausencia in lst_ausencia_sessao%}
<tr>
<td>{{ausencia.parlamentar}}</td>
<td>{{ausencia.justificativa}}</td>
<td>{{ausencia.tipo}}</td>
</tr>
{% endfor %}
</tbody>
</table>

6
sapl/templates/relatorios/blocos_sessao_plenaria/lista_presenca_ordemdia.html

@ -0,0 +1,6 @@
<h2 class="gray-title">Lista de Presença da Ordem do Dia</h2>
{% for orador in lst_presenca_ordem_dia%}
<tr>
<p>{{orador.nom_parlamentar}}/{{orador.sgl_partido}}</p>
</tr>
{% endfor %}

4
sapl/templates/relatorios/blocos_sessao_plenaria/lista_presenca_sessao.html

@ -0,0 +1,4 @@
<h2 class="gray-title">Lista de Presença da Sessão</h2>
{% for membro in lst_presenca_sessao%}
<p>{{membro.nom_parlamentar}}/{{membro.sgl_partido}}</p>
{% endfor%}

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

@ -0,0 +1,27 @@
<h2 class="gray-title">Matérias do Expediente</h2>
<table class="grayTable">
<thead>
<tr>
<th>Matéria</th>
<th>Ementa</th>
<th>Resultado da Votação</th>
</tr>
</thead>
<tbody>
{% for materia in lst_expediente_materia%}
<tr>
<td >
<dl>
<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>{{materia.num_autores}}: </b>{{materia.nom_autor}}</dt>
</dl>
</td>
<td style="width:60%"><div style="margin:10px">{{materia.txt_ementa}}</div></td>
<td style="text-align: center">&nbsp;<b>{{materia.nom_resultado}}</b></td>
</tr>
{% endfor %}
</tbody>
</table>

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

@ -0,0 +1,27 @@
<h2 class="gray-title">Matérias da Ordem do Dia</h2>
<table class="grayTable" style="height: 145px;" width="443">
<thead>
<tr>
<th>Matéria</th>
<th>Ementa</th>
<th>Resultado da Votação</th>
</tr>
</thead>
<tbody>
{% for materia in lst_votacao%}
<tr>
<td>
<dl>
<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>{{materia.num_autores}}: </b>{{materia.nom_autor}}</dt>
</dl>
</td>
<td style="width:60%">{{materia.txt_ementa}}</td>
<td style="text-align: center;">&nbsp;<b>{{materia.nom_resultado}}</b></td>
</tr>
{% endfor %}
</tbody>
</table>

4
sapl/templates/relatorios/blocos_sessao_plenaria/mesa_diretora.html

@ -0,0 +1,4 @@
<h2 class="gray-title">Mesa Diretora</h2>
{% for membro in lst_mesa%}
<p><b>{{membro.des_cargo}}:</b> {{membro.nom_parlamentar}}/{{membro.sgl_partido}}</p>
{% endfor%}

4
sapl/templates/relatorios/blocos_sessao_plenaria/ocorrencias_sessao.html

@ -0,0 +1,4 @@
<h2 class="gray-title">Ocorrências da Sessão</h2>
{% for ocorrencia in lst_ocorrencias%}
<p>{{ocorrencia}}</p>
{% endfor %}

7
sapl/templates/relatorios/blocos_sessao_plenaria/oradores_expediente.html

@ -0,0 +1,7 @@
<h2 class="gray-title">Oradores do Expediente</h2>
{% for orador in lst_oradores_expediente%}
<tr>
<p> <b>{{orador.num_ordem}}</b> - {{orador.nom_parlamentar}}/{{orador.sgl_partido}}</p>
</tr>
{% endfor %}

8
sapl/templates/relatorios/blocos_sessao_plenaria/oradores_explicacoes.html

@ -0,0 +1,8 @@
<div>
<h2 class="gray-title">Oradores das Explicações Pessoais</h2>
{% for orador in lst_oradores%}
<tr>
<p style="page-break-after: avoid;">{{orador.num_ordem}} - {{orador.nom_parlamentar}}/{{orador.sgl_partido}}</p>
</tr>
{% endfor %}
</div>

7
sapl/templates/relatorios/blocos_sessao_plenaria/oradores_ordemdia.html

@ -0,0 +1,7 @@
{% if lst_oradores_ordemdia %}
<h2 class="gray-title">Oradores da Ordem do Dia</h2>
{% for orador_ordemdia in lst_oradores_ordemdia %}
<p><b>{{orador_ordemdia.num_ordem}}</b> - {{orador_ordemdia.nome_parlamentar}}/{{orador_ordemdia.sigla}}
{%if orador_ordemdia.observacao%}- {{orador_ordemdia.observacao}}{%endif%}</p>
{% endfor %}
{% endif %}

27
sapl/templates/relatorios/blocos_sessao_plenaria/votos_nominais_expediente.html

@ -0,0 +1,27 @@
{% if lst_votacao_vot_nom %}
<h2 class="gray-title">Votações Nominais - Matérias do Expediente</h2>
<table class="grayTable">
<thead>
<tr>
<th>Matéria</th>
<th>Votos</th>
</tr>
</thead>
{% for expediente_materia_vot_nom in lst_expediente_materia_vot_nom %}
<tr>
<td>{{expediente_materia_vot_nom.titulo}}</td>
<td>
{% if expediente_materia_vot_nom.votos %}
<dl>
{% for v in expediente_materia_vot_nom.votos %}
<dt style="text-align: left;">&nbsp;<b>{{v.parlamentar}}</b> {{v.voto}}</dt>
{% endfor %}
</dl>
{% else %}
<td><p><b>Matéria não votada</b></p></td>
{% endif %}
</td>
</tr>
{% endfor %}
</table>
{% endif %}

27
sapl/templates/relatorios/blocos_sessao_plenaria/votos_nominais_ordemdia.html

@ -0,0 +1,27 @@
{% if lst_votacao_vot_nom %}
<h2 class="gray-title">Votações Nominais - Matérias da Ordem do Dia</h2>
<table class="grayTable">
<thead>
<tr>
<th>Matéria</th>
<th>Votos</th>
</tr>
</thead>
{% for votacao_vot_nom in lst_votacao_vot_nom %}
<tr>
<td>{{votacao_vot_nom.titulo}}</td>
<td>
{% if votacao_vot_nom.votos %}
<dl>
{% for v in votacao_vot_nom.votos %}
<dt style="text-align: left;">&nbsp;<b>{{v.parlamentar}}</b> {{v.voto}}</dt>
{% endfor %}
</dl>
{% else %}
<td><p><b>Matéria não votada</b></p></td>
{% endif %}
</td>
</tr>
{% endfor %}
</table>
{% endif %}

162
sapl/templates/relatorios/relatorio_sessao_plenaria.html

@ -3,137 +3,37 @@
{% block content %}
<div style="margin-bottom: 3cm">
<h2 class="gray-title">Informações Básicas</h2>
<p><b>Tipo da Sessão:</b> {{inf_basicas_dic.nom_sessao}}</p>
<p><b>Abertura:</b> {{inf_basicas_dic.dat_inicio_sessao}} - {{inf_basicas_dic.hr_inicio_sessao}}</p>
<p><b>Encerramento:</b> {{inf_basicas_dic.dat_fim_sessao}} - {{inf_basicas_dic.hr_fim_sessao}}</p>
<h2 class="gray-title">Mesa Diretora</h2>
{% for membro in lst_mesa%}
<p><b>{{membro.des_cargo}}:</b> {{membro.nom_parlamentar}}/{{membro.sgl_partido}}</p>
{% endfor%}
<h2 class="gray-title">Lista de Presença da Sessão</h2>
{% for membro in lst_presenca_sessao%}
<p>{{membro.nom_parlamentar}}/{{membro.sgl_partido}}</p>
{% endfor%}
<h2 class="gray-title">Justificativas de Ausência da Sessão</h2>
<table class="grayTable">
<thead>
<tr>
<th>Parlamentar</th>
<th>Justificativa</th>
<th>Ausente em</th>
</tr>
</thead>
<tbody>
{% for ausencia in lst_ausencia_sessao%}
<tr>
<td>{{ausencia.parlamentar}}</td>
<td>{{ausencia.justificativa}}</td>
<td>{{ausencia.tipo}}</td>
</tr>
{% endfor %}
</tbody>
</table>
<h2 class="gray-title">Expedientes</h2>
{% for expediente in lst_expedientes%}
<h3>{{expediente.nom_expediente}}</h3>
<p style="margin-bottom: 1cm">{{expediente.txt_expediente|safe}}</p>
{% endfor%}
<h2 class="gray-title">Matérias do Expediente</h2>
<table class="grayTable">
<thead>
<tr>
<th>Matéria</th>
<th>Ementa</th>
<th>Resultado da Votação</th>
</tr>
</thead>
<tbody>
{% for materia in lst_expediente_materia%}
<tr>
<td style="width:300px">
<dl>
<dt><b>{{materia.num_ordem}} -</b> {{materia.id_materia}}</dt>
<dt><b>Turno:</b> {{materia.des_turno}}</dt>
<dt><b>{{materia.num_autores}}: </b>{{materia.nom_autor}}</dt>
</dl>
</td>
<td><div style="margin:10px">{{materia.txt_ementa}}</div></td>
<td style="width:10px"><b>{{materia.nom_resultado}}</b></td>
</tr>
{% endfor %}
</tbody>
</table>
<h2 class="gray-title">Oradores do Expediente</h2>
{% for orador in lst_oradores_expediente%}
<tr>
<p> <b>{{orador.num_ordem}}</b> - {{orador.nom_parlamentar}}/{{orador.sgl_partido}}</p>
</tr>
{% endfor %}
<h2 class="gray-title">Lista de Presença da Ordem do Dia</h2>
{% for orador in lst_presenca_ordem_dia%}
<tr>
<p>{{orador.nom_parlamentar}}/{{orador.sgl_partido}}</p>
</tr>
{% endfor %}
<h2 class="gray-title">Matérias da Ordem do Dia</h2>
<table class="grayTable" style="height: 145px;" width="443">
<thead>
<tr>
<th>Matéria</th>
<th>Ementa</th>
<th>Resultado da Votação</th>
</tr>
</thead>
<tbody>
{% for materia in lst_votacao%}
<tr>
<td style="width:300px">
<dl>
<dt><b>{{materia.num_ordem}} -</b> {{materia.id_materia}}</dt>
<dt><b>Turno:</b> {{materia.des_turno}}</dt>
<dt><b>{{materia.num_autores}}: </b>{{materia.nom_autor}}</dt>
</dl>
</td>
<td><div style="margin:10px">{{materia.txt_ementa}}</div></td>
<td style="width:30px"><b>{{materia.nom_resultado}}</b></td>
</tr>
{% endfor %}
</tbody>
</table>
<div>
<h2 class="gray-title">Oradores das Explicações Pessoais</h2>
{% for orador in lst_oradores%}
<tr>
<p style="page-break-after: avoid;">{{orador.num_ordem}} - {{orador.nom_parlamentar}}/{{orador.sgl_partido}}</p>
</tr>
{% endfor %}
</div>
<h2 class="gray-title">Ocorrências da Sessão</h2>
{% for ocorrencia in lst_ocorrencias%}
<p>{{ocorrencia}}</p>
{% endfor %}
</div>
{% include 'relatorios/blocos_sessao_plenaria/'|add:primeiro_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:segundo_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:terceiro_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:quarto_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:quinto_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:sexto_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:setimo_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:oitavo_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:nono_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:decimo_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:decimo_primeiro_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:decimo_segundo_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:decimo_terceiro_ordenacao %}
{% include 'relatorios/blocos_sessao_plenaria/'|add:decimo_quarto_ordenacao %}
</div>
{% endblock content %}

10
sapl/templates/sessao/resumo.html

@ -10,6 +10,16 @@
{% endblock %}
{% block detail_content %}
<!--<div>
<p align="right">
<strong>
<a href="{% url 'sapl.relatorios:relatorio_sessao_plenaria' sessaoplenaria.pk %}">
Impressão PDF
</a>
</strong>
</p>
</div> Impressão Antiga-->
<div>
<p align="right">
<strong>

Loading…
Cancel
Save