Browse Source

Gera PDFs em memória

pull/3247/head
eribeiro 5 years ago
parent
commit
86ee975fa4
  1. 28
      sapl/materia/views.py

28
sapl/materia/views.py

@ -2790,11 +2790,13 @@ def create_pdf_docacessorios(materia):
merger = PdfFileMerger() merger = PdfFileMerger()
for f in docs_path: for f in docs_path:
merger.append(fileobj=f) merger.append(fileobj=f)
merger.write(fileobj=open(merged_pdf, "wb"))
data = BytesIO()
merger.write(data)
merger.close() merger.close()
external_name = "mat_{}_{}_docacessorios.pdf".format(materia.numero, materia.ano) 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): def get_pdf_docacessorios(request, pk):
@ -2802,36 +2804,24 @@ def get_pdf_docacessorios(request, pk):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
username = 'Usuário anônimo' if request.user.is_anonymous else request.user.username username = 'Usuário anônimo' if request.user.is_anonymous else request.user.username
try: 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)) logger.info("user= {}. Gerou o pdf compilado de documento acessorios".format(username))
except FileNotFoundError: except FileNotFoundError:
logger.error("user= {}.Não há arquivos cadastrados".format(username)) 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) messages.add_message(request, messages.ERROR, msg)
return redirect(reverse('sapl.materia:documentoacessorio_list', return redirect(reverse('sapl.materia:documentoacessorio_list',
kwargs={'pk': pk})) kwargs={'pk': pk}))
except Exception as e: except Exception as e:
logger.error("user= {}.Um erro inesperado ocorreu na criação do pdf de documentos acessorios: {}" logger.error("user= {}.Um erro inesperado ocorreu na criação do pdf de documentos acessorios: {}"
.format(username,str(e))) .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.')
messages.add_message(request, messages.ERROR, msg) messages.add_message(request, messages.ERROR, msg)
return redirect(reverse('sapl.materia:documentoacessorio_list', return redirect(reverse('sapl.materia:documentoacessorio_list',
kwargs={'pk': pk})) kwargs={'pk': pk}))
with open(os.path.join(get_tempfile_dir(), pdffilename), 'rb') as f: if not data:
data = f.read() msg = _('Não há nenhum documento acessório PDF cadastrado.')
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) messages.add_message(request, messages.ERROR, msg)
return redirect(reverse('sapl.materia:documentoacessorio_list', return redirect(reverse('sapl.materia:documentoacessorio_list',
kwargs={'pk': pk})) kwargs={'pk': pk}))

Loading…
Cancel
Save