Browse Source

Fix #3127

pull/3139/head
eribeiro 6 years ago
parent
commit
953b989146
  1. 4
      sapl/materia/urls.py
  2. 51
      sapl/materia/views.py
  3. 8
      sapl/templates/materia/documentoacessorio_list.html

4
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<pk>\d+)$', get_zip_docacessorios,
name='compress_docacessorios')
]

51
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

8
sapl/templates/materia/documentoacessorio_list.html

@ -0,0 +1,8 @@
{% extends "crud/list.html" %}
{% load i18n %}
{% block base_content %}
{{ block.super }}
<div class="actions btn-group float-right" role="group">
<a href="{% url 'sapl.materia:compress_docacessorios' root_pk %}" class="btn btn-outline-primary">{% trans 'Baixar documentos compactados' %}</a>
</div>
{% endblock %}
Loading…
Cancel
Save