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)