Browse Source

geracao de pdf relatorio de reuniao de comissao

pull/2895/head
ricardocanela 6 years ago
parent
commit
5e2d0896df
  1. 19
      sapl/base/forms.py
  2. 37
      sapl/base/views.py
  3. 13
      sapl/relatorios/views.py
  4. 70
      sapl/templates/relatorios/relatorio_reuniao.html

19
sapl/base/forms.py

@ -1129,6 +1129,8 @@ class RelatorioDataFimPrazoTramitacaoFilterSet(django_filters.FilterSet):
class RelatorioReuniaoFilterSet(django_filters.FilterSet):
o = AnoNumeroOrderingFilter(help_text='')
@property
def qs(self):
parent = super(RelatorioReuniaoFilterSet, self).qs
@ -1149,12 +1151,27 @@ class RelatorioReuniaoFilterSet(django_filters.FilterSet):
('nome', 4),
('tema', 4)])
buttons = FormActions(
*[
HTML('''
<div class="form-check">
<input name="relatorio" type="checkbox" class="form-check-input" id="relatorio">
<label class="form-check-label" for="relatorio">Gerar relatório PDF</label>
</div>
''')
],
Submit('pesquisar', _('Pesquisar'), css_class='float-right',
onclick='return true;'),
css_class='form-group row justify-content-between'
,
)
self.form.helper = SaplFormHelper()
self.form.helper.form_method = 'GET'
self.form.helper.layout = Layout(
Fieldset(_('Reunião de Comissão'),
row1, row2,
form_actions(label='Pesquisar'))
buttons, )
)

37
sapl/base/views.py

@ -33,7 +33,8 @@ from sapl.relatorios.views import (relatorio_materia_em_tramitacao, relatorio_ma
relatorio_materia_por_ano_autor, relatorio_presenca_sessao,
relatorio_historico_tramitacao, relatorio_fim_prazo_tramitacao,
relatorio_atas, relatorio_audiencia, relatorio_normas_mes,
relatorio_normas_vigencia, relatorio_historico_tramitacao_adm)
relatorio_normas_vigencia, relatorio_historico_tramitacao_adm,
relatorio_reuniao)
from sapl import settings
from sapl.audiencia.models import AudienciaPublica, TipoAudienciaPublica
@ -813,6 +814,40 @@ class RelatorioReuniaoView(FilterView):
return context
def get(self, request, *args, **kwargs):
super(RelatorioReuniaoView, self).get(request)
# Se a pesquisa estiver quebrando com a paginação
# Olhe esta função abaixo
# Provavelmente você criou um novo campo no Form/FilterSet
# Então a ordem da URL está diferente
data = self.filterset.data
if data and data.get('tipo') is not None:
url = "&" + str(self.request.environ['QUERY_STRING'])
if url.startswith("&page"):
ponto_comeco = url.find('tipo=') - 1
url = url[ponto_comeco:]
else:
url = ''
self.filterset.form.fields['o'].label = _('Ordenação')
# é usada essa verificação anônima para quando os documentos administrativos
# estão no modo ostensivo, mas podem existir documentos administrativos
# restritos
length = self.object_list.count()
is_relatorio = request.GET.get('relatorio', None)
self.paginate_by = None if is_relatorio else self.paginate_by
context = self.get_context_data(filter=self.filterset,
filter_url=url,
numero_res=length
)
context['show_results'] = show_results_filter_set(
self.request.GET.copy())
if is_relatorio:
return relatorio_reuniao(request, context)
else:
return self.render_to_response(context)
class RelatorioAudienciaView(FilterView):
model = AudienciaPublica
filterset_class = RelatorioAudienciaFilterSet

13
sapl/relatorios/views.py

@ -1526,7 +1526,9 @@ def relatorio_fim_prazo_tramitacao(request, context):
return response
def relatorio_audiencia(request, context):
def relatorio_reuniao(request, context):
base_url = request.build_absolute_uri()
casa = CasaLegislativa.objects.first()
rodape = ' '.join(get_rodape(casa))
@ -1536,7 +1538,7 @@ def relatorio_audiencia(request, context):
header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL}
html_template = render_to_string('relatorios/relatorio_audiencia.html', context)
html_template = render_to_string('relatorios/relatorio_reuniao.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)
@ -1549,7 +1551,8 @@ def relatorio_audiencia(request, context):
return response
def relatorio_normas_mes(request, context):
def relatorio_audiencia(request, context):
base_url = request.build_absolute_uri()
casa = CasaLegislativa.objects.first()
rodape = ' '.join(get_rodape(casa))
@ -1559,7 +1562,7 @@ def relatorio_normas_mes(request, context):
header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL}
html_template = render_to_string('relatorios/relatorio_normas_mes.html', context)
html_template = render_to_string('relatorios/relatorio_audiencia.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)
@ -1571,6 +1574,7 @@ def relatorio_normas_mes(request, context):
return response
def relatorio_normas_mes(request, context):
base_url = request.build_absolute_uri()
casa = CasaLegislativa.objects.first()
@ -1594,7 +1598,6 @@ def relatorio_normas_mes(request, context):
return response
def relatorio_normas_vigencia(request, context):
base_url = request.build_absolute_uri()
casa = CasaLegislativa.objects.first()

70
sapl/templates/relatorios/relatorio_reuniao.html

@ -0,0 +1,70 @@
{% load i18n %}
{% load common_tags %}
{% load static %}
<head>
<style>
@page{
margin-top: 4.5cm;
size: A4 portrait;
@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>
<h2>Reunião de Comissão</h2>
{% if object_list|length > 0 %}
<table class="table table-bordered table-hover">
<thead class="thead-default" >
<tr class="active">
<th>Comissao</th>
<th>Nome</th>
</tr>
</thead>
<tbody>
{% for reuniao in object_list %}
<tr>
<td><a href="{% url 'sapl.comissoes:reuniao_detail' reuniao.pk %}">
{{reuniao.comissao}}
</a></td>
<td>{{reuniao.nome}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% else %}
<font size="5"><p align="center">Nenhum reunião foi encontrada!</p></font>
{% endif %}
</body>
Loading…
Cancel
Save