diff --git a/sapl/relatorios/urls.py b/sapl/relatorios/urls.py index 9ca2284a0..05ad22671 100644 --- a/sapl/relatorios/urls.py +++ b/sapl/relatorios/urls.py @@ -6,7 +6,7 @@ from .views import (relatorio_capa_processo, relatorio_etiqueta_protocolo, relatorio_materia, relatorio_ordem_dia, relatorio_pauta_sessao, relatorio_protocolo, relatorio_sessao_plenaria, - resumo_ata_pdf) + resumo_ata_pdf, relatorio_sessao_plenaria_pdf) app_name = AppConfig.name @@ -31,4 +31,6 @@ urlpatterns = [ relatorio_pauta_sessao, name='relatorio_pauta_sessao'), url(r'^relatorios/(?P\d+)/resumo_ata$', resumo_ata_pdf, name='resumo_ata_pdf'), + url(r'^relatorios/(?P\d+)/sessao-plenaria-pdf$', + relatorio_sessao_plenaria_pdf, name='relatorio_sessao_plenaria_pdf'), ] diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py index caa4f69ec..be65f7b93 100755 --- a/sapl/relatorios/views.py +++ b/sapl/relatorios/views.py @@ -1353,3 +1353,79 @@ def relatorio_doc_administrativos(request, context): return response +def relatorio_sessao_plenaria_pdf(request, pk): + base_url=request.build_absolute_uri() + logger = logging.getLogger(__name__) + username = request.user.username + casa = CasaLegislativa.objects.first() + if not casa: + raise Http404 + + rodape = get_rodape(casa) + rodape = ' '.join(rodape) + + try: + logger.debug("user=" + username + + ". Tentando obter SessaoPlenaria com id={}.".format(pk)) + sessao = SessaoPlenaria.objects.get(id=pk) + except ObjectDoesNotExist as e: + logger.error("user=" + username + + ". Essa SessaoPlenaria não existe (pk={}). ".format(pk) + str(e)) + raise Http404('Essa página não existe') + + (inf_basicas_dic, + cont_mult_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_ordemdia, + 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, + "data": dt.today().strftime('%d/%m/%Y') + }) + + info = "Resumo da {}ª Reunião {} \ + da {}ª Sessão Legislativa da {} \ + Legislatura".format(inf_basicas_dic['num_sessao_plen'], + inf_basicas_dic['nom_sessao'], + inf_basicas_dic['num_sessao_leg'], + inf_basicas_dic['num_legislatura'], + inf_basicas_dic['num_legislatura'] + ) + + html_header = render_to_string('relatorios/header_ata.html',{"casa":casa, + "MEDIA_URL": MEDIA_URL, + "logotipo": casa.logotipo, + "info":info}) + + 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' + response['Content-Transfer-Encoding'] = 'binary' + response.write(pdf_file) + + return response + diff --git a/sapl/static/sapl/css/relatorio.css b/sapl/static/sapl/css/relatorio.css index b51a40c2b..084154262 100644 --- a/sapl/static/sapl/css/relatorio.css +++ b/sapl/static/sapl/css/relatorio.css @@ -53,4 +53,41 @@ fieldset { page-break-after: avoid; margin:5px; padding:0px; -} \ No newline at end of file +} + + +table { + max-width: 520px; +} +table.grayTable { + border: 1px solid #6e6e6e; + width: 100%; + text-align: left; + border-collapse: collapse; +} +table.grayTable td, table.grayTable th { + border: 1px solid #000000; +} +table.grayTable tbody td { + font-size: 10px; + max-width: 80px; + overflow-wrap: break-word; + word-wrap: break-word; + text-align: justify; +} +table.grayTable tr:nth-child(even) { + background: #dddddd; +} +table.grayTable thead { + background: #BBBBBB; + border-bottom: 2px solid #000000; +} +table.grayTable thead th { + font-size:10px; + color: rgb(0, 0, 0); + border-left: 1px solid #000000; + +} +table.grayTable thead th:first-child { + border-left: none; +} \ No newline at end of file diff --git a/sapl/templates/relatorios/header_ata.html b/sapl/templates/relatorios/header_ata.html index 4cc43efe6..bfa2eb629 100644 --- a/sapl/templates/relatorios/header_ata.html +++ b/sapl/templates/relatorios/header_ata.html @@ -25,7 +25,11 @@ -

- + {% if info %} +

{{info}}

+ {% else %} +

+ {% endif %} + \ No newline at end of file diff --git a/sapl/templates/relatorios/relatorio_sessao_plenaria.html b/sapl/templates/relatorios/relatorio_sessao_plenaria.html new file mode 100644 index 000000000..6aa880de6 --- /dev/null +++ b/sapl/templates/relatorios/relatorio_sessao_plenaria.html @@ -0,0 +1,183 @@ +{% load static %} + + + + + + + + + + + +
+

Informações Básicas

+

Tipo da Sessão: {{inf_basicas_dic.nom_sessao}}

+

Abertura: {{inf_basicas_dic.dat_inicio_sessao}} - {{inf_basicas_dic.hr_inicio_sessao}}

+

Encerramento: {{inf_basicas_dic.dat_fim_sessao}} - {{inf_basicas_dic.hr_fim_sessao}}

+ +

Mesa Diretora

+ {% for membro in lst_mesa%} +

{{membro.des_cargo}}: {{membro.nom_parlamentar}}/{{membro.sgl_partido}}

+ {% endfor%} + +

Lista de Presença da Sessão

+ {% for membro in lst_presenca_sessao%} +

{{membro.nom_parlamentar}}/{{membro.sgl_partido}}

+ {% endfor%} + +

Justificativas de Ausência da Sessão

+ + + + + + + + + + + {% for ausencia in lst_ausencia_sessao%} + + + + + + {% endfor %} + + +
ParlamentarJustificativaAusente em
{{ausencia.parlamentar}}{{ausencia.justificativa}}{{ausencia.tipo}}
+ +

Expedientes

+ {% for expediente in lst_expedientes%} +

{{expediente.nom_expediente}}

+

{{expediente.txt_expediente|safe}}

+ {% endfor%} + + +

Matérias do Expediente

+ + + + + + + + + + + {% for materia in lst_expediente_materia%} + + + + + + {% endfor %} + + +
MatériaEmentaResultado da Votação
+
+
{{materia.num_ordem}} - {{materia.id_materia}}
+
Turno: {{materia.des_turno}}
+
{{materia.num_autores}}: {{materia.nom_autor}}
+
+
{{materia.txt_ementa}}
{{materia.nom_resultado}}
+ +

Oradores do Expediente

+ + {% for orador in lst_oradores_expediente%} + +

{{orador.num_ordem}} - {{orador.nom_parlamentar}}/{{orador.sgl_partido}}

+ + {% endfor %} + +

Lista de Presença da Ordem do Dia

+ + {% for orador in lst_presenca_ordem_dia%} + +

{{orador.nom_parlamentar}}/{{orador.sgl_partido}}

+ + {% endfor %} + +

Matérias da Ordem do Dia

+ + + + + + + + + + + {% for materia in lst_votacao%} + + + + + + {% endfor %} + + +
MatériaEmentaResultado da Votação
+
+
{{materia.num_ordem}} - {{materia.id_materia}}
+
Turno: {{materia.des_turno}}
+
{{materia.num_autores}}: {{materia.nom_autor}}
+
+
{{materia.txt_ementa}}
{{materia.nom_resultado}}
+ +
+

Oradores das Explicações Pessoais

+ {% for orador in lst_oradores%} + +

{{orador.num_ordem}} - {{orador.nom_parlamentar}}/{{orador.sgl_partido}}

+ + {% endfor %} +
+ + +

Ocorrências da Sessão

+ {% for ocorrencia in lst_ocorrencias%} +

{{ocorrencia}}

+ {% endfor %} +
+ + + + + \ No newline at end of file diff --git a/sapl/templates/sessao/resumo.html b/sapl/templates/sessao/resumo.html index b8ca19eff..4c86bcc34 100644 --- a/sapl/templates/sessao/resumo.html +++ b/sapl/templates/sessao/resumo.html @@ -20,6 +20,16 @@

+
+

+ + + Impressão PDF (Novo) + + +

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