From cb29a61bec6a56f8a7d990b63bd1ccdd0f15f804 Mon Sep 17 00:00:00 2001 From: Mariana Mendes Date: Wed, 6 Jun 2018 14:05:34 -0300 Subject: [PATCH] Adding the weasy print on sessao view --- sapl/sessao/urls.py | 5 +- sapl/sessao/views.py | 27 ++++++- .../sessao/{ => impressos}/resumo.html | 0 .../sessao/impressos/resumo_pdf.html | 73 +++++++++++++++++++ 4 files changed, 102 insertions(+), 3 deletions(-) rename sapl/templates/sessao/{ => impressos}/resumo.html (100%) create mode 100644 sapl/templates/sessao/impressos/resumo_pdf.html diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py index df358d42d..fa22b7f90 100644 --- a/sapl/sessao/urls.py +++ b/sapl/sessao/urls.py @@ -4,6 +4,7 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente, AdicionarVariasMateriasOrdemDia, BancadaCrud, BlocoCrud, CargoBancadaCrud, ExpedienteMateriaCrud, ExpedienteView, + ImpressosView, MateriaOrdemDiaCrud, MesaView, OradorCrud, OradorExpedienteCrud, PainelView, PautaSessaoDetailView, PautaSessaoView, @@ -148,8 +149,10 @@ urlpatterns = [ url(r'^sessao/(?P\d+)/votacao-simbolica-transparencia/(?P\d+)/(?P\d+)$', VotacaoSimbolicaTransparenciaDetailView.as_view(), name='votacao_simbolica_transparencia'), - url(r'^sessao/mudar-ordem-materia-sessao/', mudar_ordem_materia_sessao, name='mudar_ordem_materia_sessao'), + url(r'^sessao/impressos/$', + ImpressosView.as_view(), + name='impressos'), ] diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 336c33c86..3dea7ed75 100644 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -1,5 +1,6 @@ from re import sub from operator import itemgetter +import weasyprint from weasyprint import HTML, CSS from django.contrib import messages @@ -9,7 +10,7 @@ from django.core.exceptions import ObjectDoesNotExist from django.core.urlresolvers import reverse from django.db.models import Max, Q from django.forms.utils import ErrorList -from django.http import JsonResponse +from django.http import HttpResponse, JsonResponse from django.http.response import Http404, HttpResponseRedirect from django.utils import timezone from django.utils.datastructures import MultiValueDictKeyError @@ -21,6 +22,7 @@ from django.views.generic import FormView, ListView, TemplateView from django.views.generic.base import RedirectView from django.views.generic.detail import DetailView from django.views.generic.edit import FormMixin +from django.template import RequestContext, loader from django_filters.views import FilterView from sapl.base.models import AppConfig as AppsAppConfig @@ -1191,6 +1193,8 @@ def get_turno(turno): class ResumoView(DetailView): template_name = 'sessao/resumo.html' model = SessaoPlenaria + permission_required = ('sessao.can_access_impressos', ) + def get(self, request, *args, **kwargs): self.object = self.get_object() @@ -1438,7 +1442,8 @@ class ResumoView(DetailView): 'nono_ordenacao': dict_ord_template['mat_o_d'], 'decimo_ordenacao': dict_ord_template['oradores_expli']}) - return self.render_to_response(context) + return gerar_pdf_impressos(self.request, context, + 'sessao/impressos/resumo_pdf.html') class ExpedienteView(FormMixin, DetailView): @@ -2874,3 +2879,21 @@ def mudar_ordem_materia_sessao(request): materia_1.save() return + +class ImpressosView(PermissionRequiredMixin, TemplateView): + template_name = 'sessao/impressos/resumo.html' + permission_required = ('sessao.can_access_impressos', ) + +def gerar_pdf_impressos(request, context, template_name): + template = loader.get_template(template_name) + html = template.render(RequestContext(request, context)) + + pdf = weasyprint.HTML(string=html, base_url=request.build_absolute_uri() + ).write_pdf() + + response = HttpResponse(pdf, content_type='application/pdf') + response['Content-Disposition'] = ( + 'inline; filename="relatorio_impressos.pdf"') + response['Content-Transfer-Encoding'] = 'binary' + + return response diff --git a/sapl/templates/sessao/resumo.html b/sapl/templates/sessao/impressos/resumo.html similarity index 100% rename from sapl/templates/sessao/resumo.html rename to sapl/templates/sessao/impressos/resumo.html diff --git a/sapl/templates/sessao/impressos/resumo_pdf.html b/sapl/templates/sessao/impressos/resumo_pdf.html new file mode 100644 index 000000000..bff2f266e --- /dev/null +++ b/sapl/templates/sessao/impressos/resumo_pdf.html @@ -0,0 +1,73 @@ + + + + + Impressos + + + + + + + +{% extends "crud/detail.html" %} +{% load i18n %} +{% load crispy_forms_tags %} + +{% block title %} +

+ Resumo ({{sessaoplenaria}}) +
+

+{% endblock %} + +{% block detail_content %} + + {% include 'sessao/blocos_resumo/'|add:primeiro_ordenacao %} +


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


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


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


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


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


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


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


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


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


+ + +{% endblock detail_content %} + +