diff --git a/sapl/materia/urls.py b/sapl/materia/urls.py index 2fe9145de..13836d600 100644 --- a/sapl/materia/urls.py +++ b/sapl/materia/urls.py @@ -27,7 +27,7 @@ from sapl.materia.views import (AcompanhamentoConfirmarView, proposicao_texto, recuperar_materia, ExcluirTramitacaoEmLoteView, RetornarProposicao, MateriaPesquisaSimplesView, - DespachoInicialMultiCreateView) + DespachoInicialMultiCreateView, get_zip_docacessorios) from sapl.norma.views import NormaPesquisaSimplesView from sapl.protocoloadm.views import ( FichaPesquisaAdmView, FichaSelecionaAdmView) @@ -118,6 +118,8 @@ urlpatterns_materia = [ name='tramitacao_em_lote'), url(r'^materia/excluir-tramitacao-em-lote', ExcluirTramitacaoEmLoteView.as_view(), name='excluir_tramitacao_em_lote'), + url(r'^materia/docacessorio/zip/(?P\d+)$', get_zip_docacessorios, + name='compress_docacessorios') ] diff --git a/sapl/materia/views.py b/sapl/materia/views.py index 7cb3372d0..93a3a1227 100644 --- a/sapl/materia/views.py +++ b/sapl/materia/views.py @@ -2725,3 +2725,54 @@ class TipoMateriaCrud(CrudAux): self.object.save() return fv + + +def create_merged_docacessorio(mat_pk): + from PyPDF4 import PdfFileReader, PdfFileMerger + # reader1 = PdfFileReader("/tmp/sbm_imprimir_pedido__100047424.pdf") + output = "/tmp/merged.pdf" + merger = PdfFileMerger(open(output, "wb")) + input1 = open("/tmp/sbm_imprimir_pedido__100047424.pdf", "rb") + + merger.append(fileobj=input1) + merger.append(fileobj=input1) + merger.append(fileobj=input1) + merger.write() + merger.close() + + pass + + +def create_zip_docacessorios(mat_pk): + import os + import time + import zipfile + from datetime import datetime + from sapl.settings import MEDIA_ROOT + + materia = MateriaLegislativa.objects.get(id=mat_pk) + docs = materia.documentoacessorio_set.\ + all().values_list('arquivo', flat=True) + + docs_path = [os.path.join(MEDIA_ROOT, i) for i in docs] + zipfilename = '/tmp/mat_{}_{}.zip'.format( + mat_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 = "{}_{}.zip".format(materia.numero, materia.ano) + return external_name, zipfilename + + +def get_zip_docacessorios(request, pk): + import os + external_name, zipfilename = create_zip_docacessorios(pk) + with open(os.path.join('/tmp', zipfilename), 'rb') as f: + data = f.read() + response = HttpResponse(data, content_type='application/zip') + response['Content-Disposition'] = ('attachment; filename="%s"' + % external_name) + return response + diff --git a/sapl/templates/materia/documentoacessorio_list.html b/sapl/templates/materia/documentoacessorio_list.html new file mode 100644 index 000000000..2313e96fd --- /dev/null +++ b/sapl/templates/materia/documentoacessorio_list.html @@ -0,0 +1,8 @@ +{% extends "crud/list.html" %} +{% load i18n %} +{% block base_content %} + {{ block.super }} +
+ {% trans 'Baixar documentos compactados' %} +
+{% endblock %} \ No newline at end of file