|
|
|
@ -56,7 +56,7 @@ from sapl.settings import MAX_DOC_UPLOAD_SIZE, MEDIA_ROOT |
|
|
|
from sapl.utils import (autor_label, autor_modal, gerar_hash_arquivo, get_base_url, |
|
|
|
get_client_ip, get_mime_type_from_file_extension, lista_anexados, |
|
|
|
mail_service_configured, montar_row_autor, SEPARADOR_HASH_PROPOSICAO, |
|
|
|
show_results_filter_set, YES_NO_CHOICES) |
|
|
|
show_results_filter_set, YES_NO_CHOICES,get_tempfile_dir) |
|
|
|
|
|
|
|
from .forms import (AcessorioEmLoteFilterSet, AcompanhamentoMateriaForm, |
|
|
|
AnexadaEmLoteFilterSet, AdicionarVariasAutoriasFilterSet, |
|
|
|
@ -2737,18 +2737,19 @@ def create_zip_docacessorios(materia): |
|
|
|
if not docs: |
|
|
|
return None, None |
|
|
|
|
|
|
|
docs_path = [os.path.join(MEDIA_ROOT, i) for i in docs if i.lower().endswith('pdf')] |
|
|
|
docs_path = [os.path.join(MEDIA_ROOT, i) for i in docs] |
|
|
|
|
|
|
|
if not docs_path: |
|
|
|
raise FileNotFoundError("Não há arquivos cadastrados em documentos acessorios.") |
|
|
|
raise FileNotFoundError("Não há arquivos PDF cadastrados em documentos acessorios.") |
|
|
|
zipfilename = '{}/mat_{}_{}_docacessorios.zip'.format( |
|
|
|
tempfile.gettempdir(), |
|
|
|
get_tempfile_dir(), |
|
|
|
materia.pk, |
|
|
|
time.mktime(datetime.now().timetuple())) |
|
|
|
with zipfile.ZipFile(zipfilename, 'w', zipfile.ZIP_DEFLATED) as zipf: |
|
|
|
for f in docs_path: |
|
|
|
zipf.write(f, f.split(os.sep)[-1]) |
|
|
|
|
|
|
|
external_name = "{}_{}_docacessorios.zip".format(materia.numero, materia.ano) |
|
|
|
external_name = "mat_{}_{}_docacessorios.zip".format(materia.numero, materia.ano) |
|
|
|
return external_name, zipfilename |
|
|
|
|
|
|
|
|
|
|
|
@ -2760,25 +2761,25 @@ def get_zip_docacessorios(request, pk): |
|
|
|
external_name, zipfilename = create_zip_docacessorios(materia) |
|
|
|
logger.info("user= {}. Gerou o zip compilado de documento acessorios") |
|
|
|
except FileNotFoundError: |
|
|
|
logger.warning("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.') |
|
|
|
messages.add_message(request, messages.WARNING, msg) |
|
|
|
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.') |
|
|
|
messages.add_message(request, messages.WARNING, msg) |
|
|
|
messages.add_message(request, messages.ERROR, msg) |
|
|
|
return redirect(reverse('sapl.materia:documentoacessorio_list', |
|
|
|
kwargs={'pk': pk})) |
|
|
|
|
|
|
|
if not zipfilename: |
|
|
|
msg=_('Não há nenhum documento acessório cadastrado.') |
|
|
|
messages.add_message(request, messages.WARNING, msg) |
|
|
|
messages.add_message(request, messages.ERROR, msg) |
|
|
|
return redirect(reverse('sapl.materia:documentoacessorio_list', |
|
|
|
kwargs={'pk': pk})) |
|
|
|
|
|
|
|
with open(os.path.join(tempfile.gettempdir(), zipfilename), 'rb') as f: |
|
|
|
with open(os.path.join(get_tempfile_dir(), zipfilename), 'rb') as f: |
|
|
|
data = f.read() |
|
|
|
response = HttpResponse(data, content_type='application/zip') |
|
|
|
response['Content-Disposition'] = ('attachment; filename="%s"' |
|
|
|
@ -2796,9 +2797,9 @@ def create_pdf_docacessorios(materia): |
|
|
|
# TODO: o que fazer com os arquivos não PDF? converter? ignorar? |
|
|
|
docs_path = [os.path.join(MEDIA_ROOT, i) for i in docs if i.lower().endswith('pdf')] |
|
|
|
if not docs_path: |
|
|
|
raise FileNotFoundError("Não há arquivos cadastrados em documentos acessorios.") |
|
|
|
raise FileNotFoundError("Não há arquivos PDF cadastrados em documentos acessorios.") |
|
|
|
merged_pdf = '{}/mat_{}_{}_docacessorios.pdf'.format( |
|
|
|
tempfile.gettempdir(), |
|
|
|
get_tempfile_dir(), |
|
|
|
materia.pk, |
|
|
|
time.mktime(datetime.now().timetuple())) |
|
|
|
|
|
|
|
@ -2808,7 +2809,7 @@ def create_pdf_docacessorios(materia): |
|
|
|
merger.write(fileobj=open(merged_pdf, "wb")) |
|
|
|
merger.close() |
|
|
|
|
|
|
|
external_name = "{}_{}_docacessorios.pdf".format(materia.numero, materia.ano) |
|
|
|
external_name = "mat_{}_{}_docacessorios.pdf".format(materia.numero, materia.ano) |
|
|
|
return external_name, merged_pdf |
|
|
|
|
|
|
|
|
|
|
|
@ -2820,25 +2821,25 @@ def get_pdf_docacessorios(request, pk): |
|
|
|
external_name, pdffilename = create_pdf_docacessorios(materia) |
|
|
|
logger.info("user= {}. Gerou o pdf compilado de documento acessorios") |
|
|
|
except FileNotFoundError: |
|
|
|
logger.warning("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.') |
|
|
|
messages.add_message(request, messages.WARNING, msg) |
|
|
|
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.') |
|
|
|
messages.add_message(request, messages.WARNING, msg) |
|
|
|
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 cadastrado.') |
|
|
|
messages.add_message(request, messages.WARNING, msg) |
|
|
|
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(tempfile.gettempdir(), pdffilename), 'rb') as f: |
|
|
|
with open(os.path.join(get_tempfile_dir(), pdffilename), 'rb') as f: |
|
|
|
data = f.read() |
|
|
|
response = HttpResponse(data, content_type='application/pdf') |
|
|
|
response['Content-Disposition'] = ('attachment; filename="%s"' |
|
|
|
|