From 86ee975fa409f3cc3c22c285ef7e13da71f812b3 Mon Sep 17 00:00:00 2001 From: eribeiro Date: Wed, 19 Aug 2020 15:01:57 -0300 Subject: [PATCH] =?UTF-8?q?Gera=20PDFs=20em=20mem=C3=B3ria?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/materia/views.py | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 9d798845d..98e6e406c 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -2790,11 +2790,13 @@ def create_pdf_docacessorios(materia): merger = PdfFileMerger() for f in docs_path: merger.append(fileobj=f) - merger.write(fileobj=open(merged_pdf, "wb")) + + data = BytesIO() + merger.write(data) merger.close() external_name = "mat_{}_{}_docacessorios.pdf".format(materia.numero, materia.ano) - return external_name, merged_pdf + return external_name, data.getvalue() def get_pdf_docacessorios(request, pk): @@ -2802,40 +2804,28 @@ def get_pdf_docacessorios(request, pk): logger = logging.getLogger(__name__) username = 'Usuário anônimo' if request.user.is_anonymous else request.user.username try: - external_name, pdffilename = create_pdf_docacessorios(materia) + external_name, data = create_pdf_docacessorios(materia) logger.info("user= {}. Gerou o pdf compilado de documento acessorios".format(username)) except FileNotFoundError: logger.error("user= {}.Não há arquivos cadastrados".format(username)) - msg=_('Não há arquivos cadastrados nesses documentos acessórios.') + msg = _('Não há arquivos cadastrados nesses documentos acessórios.') messages.add_message(request, messages.ERROR, msg) return redirect(reverse('sapl.materia:documentoacessorio_list', kwargs={'pk': pk})) except Exception as e: logger.error("user= {}.Um erro inesperado ocorreu na criação do pdf de documentos acessorios: {}" .format(username,str(e))) - msg=_('Um erro inesperado ocorreu. Entre em contato com o suporte do SAPL.') + msg = _('Um erro inesperado ocorreu. Entre em contato com o suporte do SAPL.') messages.add_message(request, messages.ERROR, msg) return redirect(reverse('sapl.materia:documentoacessorio_list', kwargs={'pk': pk})) - if not pdffilename: - msg=_('Não há nenhum documento acessório PDF cadastrado.') + if not data: + msg = _('Não há nenhum documento acessório PDF cadastrado.') messages.add_message(request, messages.ERROR, msg) return redirect(reverse('sapl.materia:documentoacessorio_list', kwargs={'pk': pk})) - with open(os.path.join(get_tempfile_dir(), pdffilename), 'rb') as f: - data = f.read() - try: - os.remove(pdffilename) - except Exception as e: - logger.warn("user= {}.Um erro inesperado ocorreu ao excluir o pdf de documentos acessorios: {}" - .format(username,str(e))) - msg=_('Um erro inesperado ocorreu. Entre em contato com o suporte do SAPL.') - messages.add_message(request, messages.ERROR, msg) - return redirect(reverse('sapl.materia:documentoacessorio_list', - kwargs={'pk': pk})) - response = HttpResponse(data, content_type='application/pdf') response['Content-Disposition'] = ('attachment; filename="%s"' % external_name)