Browse Source

Gera PDFs em memória

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

22
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,7 +2804,7 @@ 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))
@ -2818,24 +2820,12 @@ def get_pdf_docacessorios(request, pk):
return redirect(reverse('sapl.materia:documentoacessorio_list',
kwargs={'pk': pk}))
if not pdffilename:
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)

Loading…
Cancel
Save