Browse Source

Criando documento de pauta da sessao pelo weasyprint Fix #2998 (#3002)

pull/2940/head
Ulysses Lara 5 years ago
committed by Edward
parent
commit
c2c6a2140b
  1. 10
      sapl/relatorios/views.py
  2. 2
      sapl/sessao/urls.py
  3. 7
      sapl/sessao/views.py
  4. 47
      sapl/templates/relatorios/base_relatorio.html
  5. 71
      sapl/templates/relatorios/relatorio_pauta_sessao.html
  6. 2
      sapl/templates/sessao/pauta_sessao_detail.html

10
sapl/relatorios/views.py

@ -1344,7 +1344,7 @@ def resumo_ata_pdf(request,pk):
return response
def cria_relatorio(request, context, html_string):
def cria_relatorio(request, context, html_string, header_info=""):
base_url = request.build_absolute_uri()
casa = CasaLegislativa.objects.first()
rodape = ' '.join(get_rodape(casa))
@ -1352,7 +1352,7 @@ def cria_relatorio(request, context, html_string):
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, 'info': header_info}
html_template = render_to_string(html_string, context)
html_header = render_to_string('relatorios/header_ata.html', header_context)
@ -1414,6 +1414,12 @@ def relatorio_documento_acessorio(obj, request, context):
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)
def relatorio_sessao_plenaria_pdf(request, pk):
base_url=request.build_absolute_uri()
logger = logging.getLogger(__name__)

2
sapl/sessao/urls.py

@ -117,7 +117,7 @@ urlpatterns = [
PautaSessaoView.as_view(), name='pauta_sessao'),
url(r'^sessao/pauta-sessao/pesquisar-pauta$',
PesquisarPautaSessaoView.as_view(), name='pesquisar_pauta'),
url(r'^sessao/pauta-sessao/(?P<pk>\d+)$',
url(r'^sessao/pauta-sessao/(?P<pk>\d+)/(?:pdf)?$',
PautaSessaoDetailView.as_view(), name='pauta_sessao_detail'),
# Subnav sessão

7
sapl/sessao/views.py

@ -3230,6 +3230,8 @@ class PautaSessaoDetailView(DetailView):
model = SessaoPlenaria
def get(self, request, *args, **kwargs):
from sapl.relatorios.views import relatorio_pauta_sessao_weasy # Evitar import ciclico
self.object = self.get_object()
context = self.get_context_data(object=self.object)
@ -3352,6 +3354,11 @@ class PautaSessaoDetailView(DetailView):
context.update({'materias_ordem': materias_ordem})
context.update({'subnav_template_name': 'sessao/pauta_subnav.yaml'})
is_pdf = True if request.build_absolute_uri().split('/')[-1] == 'pdf' else False
if is_pdf:
return relatorio_pauta_sessao_weasy(self,request,context)
else:
return self.render_to_response(context)

47
sapl/templates/relatorios/base_relatorio.html

@ -0,0 +1,47 @@
{% load i18n %}
{% load crispy_forms_tags %}
{% load common_tags %}
{% load static %}
<head>
<style>
@page{
@bottom-right {
content: "Página" counter(page);
height: 3cm;
font-size: 8pt;
}
@bottom-center {
border-top: 1px solid black;
font-size: 8pt;
height: 1cm;
content: "{{rodape|safe}}";
font-style:italic;
}
@bottom-left {
content: "{{data}}";
height: 3cm;
font-size: 8pt;
}
@top-center {
content: string(title);
}
header {
width: 0;
height: 0;
visibility: hidden;
string-set: title content();
}
}
</style>
<link rel="stylesheet" href="{% static '/sapl/css/relatorio.css'%}">
</head>
<body>
{% block content %}
{% endblock content %}
</body>

71
sapl/templates/relatorios/relatorio_pauta_sessao.html

@ -0,0 +1,71 @@
{% extends "relatorios/base_relatorio.html" %}
{% load i18n %}
{% load crispy_forms_tags %}
{% load common_tags %}
{% load static %}
{% block content %}
<h2 class="gray-title">Identificação Básica</h2>
{% for b in basica %}
{{b}}<br/>
{% endfor %}
<h2 class="gray-title">Expedientes</h2>
{% for e in expedientes %}
<b>{{e.tipo}}: </b><br/>
<p>{{e.conteudo|safe}}</p>
{% endfor %}
<h2 class="gray-title">Matérias do Expediente</h2>
{% if materia_expediente %}
<table class="grayTable">
<thead>
<tr>
<th>Matéria</th>
<th>Ementa</th>
<th>Situação</th>
</tr>
</thead>
{% for m in materia_expediente %}
<tr>
<td style="width:20%;">
{{m.numero}} - {{m.titulo}}
<br />
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td style="width:70%;">{{m.ementa|safe}}<br>{{m.observacao|linebreaksbr|safe}}</td>
<td style="width:10%;">{{m.situacao}}</td>
</tr>
{% endfor %}
</table>
{% else %}
<b>Não existem Matérias de Expediente para essa Sessão Plenária</b>
{% endif %}
<h2 class="gray-title">Matérias da Ordem do Dia</h2>
{% if materias_ordem %}
<table class="grayTable">
<thead>
<tr>
<th>Matéria</th>
<th>Ementa</th>
<th>Situação</th>
</tr>
</thead>
{% for m in materias_ordem %}
<tr>
<td style="width:20%;">
{{m.numero}} - <b">{{m.titulo}}</b>
<br />
<b>Autor{{ m.autor|length|pluralize:"es" }}</b>: {{ m.autor|join:', ' }}
</td>
<td style="width:70%;">{{m.ementa|safe}}<br>{{m.observacao|linebreaksbr|safe}}</td>
<td style="width:10%;">{{m.situacao}}</td>
</tr>
{% endfor %}
</table>
{% else %}
<b>Não existem Matérias de Ordem do Dia para essa Sessão Plenária</b>
{% endif %}
{% endblock content %}

2
sapl/templates/sessao/pauta_sessao_detail.html

@ -3,7 +3,7 @@
{% load crispy_forms_tags %}
{% block base_content %}
<div align=right><a href="{% url 'sapl.relatorios:relatorio_pauta_sessao' object.pk %}"> Impressão PDF</a></li></div>
<div align=right><a href="{% url 'sapl.sessao:pauta_sessao_detail' object.pk %}pdf"> Impressão PDF</a></li></div>
<fieldset>
<legend>Identificação Básica</legend>
<table class="table">

Loading…
Cancel
Save