Browse Source

geracao de pdf relatorio de estatisticas de acesso de normas

pull/2895/head
ricardocanela 6 years ago
parent
commit
8a4219cd81
  1. 19
      sapl/base/forms.py
  2. 12
      sapl/base/views.py
  3. 23
      sapl/relatorios/views.py
  4. 89
      sapl/templates/relatorios/relatorio_estatisticas_acesso_normas.html

19
sapl/base/forms.py

@ -875,6 +875,8 @@ class RelatorioNormasMesFilterSet(django_filters.FilterSet):
class EstatisticasAcessoNormasForm(Form):
o = AnoNumeroOrderingFilter(help_text='')
ano = forms.ChoiceField(required=True,
label='Ano de acesso',
choices=RANGE_ANOS,
@ -889,11 +891,26 @@ class EstatisticasAcessoNormasForm(Form):
row1 = to_row([('ano', 12)])
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.helper = SaplFormHelper()
self.helper.form_method = 'GET'
self.helper.layout = Layout(
Fieldset(_('Normas por acessos nos meses do ano.'),
row1, form_actions(label='Pesquisar'))
row1, buttons)
)
def clean(self):

12
sapl/base/views.py

@ -34,7 +34,7 @@ from sapl.relatorios.views import (relatorio_materia_em_tramitacao, relatorio_ma
relatorio_historico_tramitacao, relatorio_fim_prazo_tramitacao,
relatorio_atas, relatorio_audiencia, relatorio_normas_mes,
relatorio_normas_vigencia, relatorio_historico_tramitacao_adm,
relatorio_reuniao)
relatorio_reuniao, relatorio_estatisticas_acesso_normas)
from sapl import settings
from sapl.audiencia.models import AudienciaPublica, TipoAudienciaPublica
@ -1419,7 +1419,15 @@ class EstatisticasAcessoNormas(TemplateView):
context['normas_mes'] = normas_mes
return self.render_to_response(context)
is_relatorio = request.GET.get('relatorio', None)
context['show_results'] = show_results_filter_set(
self.request.GET.copy())
if is_relatorio:
return relatorio_estatisticas_acesso_normas(request, context)
else:
return self.render_to_response(context)
class ListarInconsistenciasView(PermissionRequiredMixin, ListView):

23
sapl/relatorios/views.py

@ -1645,6 +1645,29 @@ def relatorio_historico_tramitacao_adm(request, context):
return response
def relatorio_estatisticas_acesso_normas(request, context):
base_url = request.build_absolute_uri()
casa = CasaLegislativa.objects.first()
rodape = ' '.join(get_rodape(casa))
context.update({'data': dt.today().strftime('%d/%m/%Y')})
context.update({'rodape': rodape})
header_context = {"casa": casa, 'logotipo': casa.logotipo, 'MEDIA_URL': MEDIA_URL}
html_template = render_to_string('relatorios/relatorio_estatisticas_acesso_normas.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)
response = HttpResponse(content_type='application/pdf;')
response['Content-Disposition'] = 'inline; filename=relatorio.pdf'
response['Content-Transfer-Encoding'] = 'binary'
response.write(pdf_file)
return response
def relatorio_sessao_plenaria_pdf(request, pk):
base_url=request.build_absolute_uri()
logger = logging.getLogger(__name__)

89
sapl/templates/relatorios/relatorio_estatisticas_acesso_normas.html

@ -0,0 +1,89 @@
{% 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>Estatísticas de acesso de normas</h2>
<b>PARÂMETROS DE PESQUISA:<br /></b>
&emsp;Ano: {{ ano }} <br />
<br/>
{% if normas_mes|length == 0 %}
<br>
<h3>{% trans 'Nenhuma norma teve acesso neste ano.'%}</h3>
{% else %}
{% for mes, normas in normas_mes.items %}
<div style="overflow:auto; ">
<table class="table table-bordered table-hover" style="margin-bottom: 0px;">
<thead class="thead-default">
<tr>
<th><h3 style="text-align:center;">Mês: {{ mes }}</h3></th>
</tr>
</thead>
</table>
<table class="table table-bordered table-hover" style="width:100%; margin-bottom: 30px;">
<thead class="thead-default" >
<tr class="active">
<th>Norma</th>
<th>Ementa</th>
<th>Acessos</th>
</tr>
</thead>
<tbody>
{% for n in normas %}
{% if n.1 > 0 %}
<tr>
<td>
{{n.0.tipo.descricao}} - {{n.0.tipo.sigla}} {{n.0.numero}}/{{n.0.ano}}
</td>
<td>{{n.0.ementa}}<br>{{n.0.observacao}}</td>
<td>{{n.1}}</td>
</tr>
{% endif %}
{% endfor %}
</tbody>
</table>
</div>
{% endfor %}
{% endif %}
</body>
Loading…
Cancel
Save