Browse Source

Colocando etiqueta de protocolo em texto original de materia legisativa Fix #2997

pull/3024/head
ulyssesBML 6 years ago
parent
commit
fc99763286
  1. 3
      requirements/requirements.txt
  2. 30
      sapl/materia/forms.py
  3. 26
      sapl/relatorios/views.py

3
requirements/requirements.txt

@ -34,7 +34,8 @@ celery-haystack==0.10
redis>=2.10.5,<2.11
django-celery-results==1.0.4
Whoosh==2.7.4
pdf2image==1.9.0
PyMuPDF==1.16.5
pysolr==3.6.0

30
sapl/materia/forms.py

@ -53,6 +53,12 @@ from .models import (AcompanhamentoMateria, Anexada, Autoria,
DespachoInicial, DocumentoAcessorio, Numeracao,
Proposicao, Relatoria, TipoMateriaLegislativa,
Tramitacao, UnidadeTramitacao)
from shutil import move
import fitz
from pdf2image import convert_from_bytes
from io import BytesIO
import tempfile
from PIL.Image import FLIP_TOP_BOTTOM
def CHOICE_TRAMITACAO():
@ -260,6 +266,8 @@ class MateriaLegislativaForm(FileFieldCheckMixin, ModelForm):
return cleaned_data
def save(self, commit=False):
from sapl.relatorios.views import gera_etiqueta_protocolo
if not self.instance.pk:
primeiro_autor = True
else:
@ -268,6 +276,28 @@ class MateriaLegislativaForm(FileFieldCheckMixin, ModelForm):
materia = super(MateriaLegislativaForm, self).save(commit)
materia.save()
if self.instance.numero_protocolo and self.instance.texto_original:
with tempfile.TemporaryDirectory() as tmp_dir:
input_file = self.instance.texto_original.path[:-4]+"_original.pdf"
output_file = "{}/{}.pdf".format(tmp_dir, self.instance.id)
move(self.instance.texto_original.path, input_file)
etiqueta = gera_etiqueta_protocolo(self.instance.numero_protocolo, self.instance.ano)
img = convert_from_bytes(etiqueta)
aux_binary = BytesIO()
barcode_file = img[0].transpose(FLIP_TOP_BOTTOM).save(aux_binary,format="JPEG")
image_rectangle = fitz.Rect(500,600,800,900)
file_handle = fitz.open(input_file)
first_page = file_handle[0]
first_page.insertImage(image_rectangle, stream=aux_binary.getvalue(),rotate=270,keep_proportion=False)
file_handle.save(output_file)
move(output_file, self.instance.texto_original.path)
if self.cleaned_data['autor']:
autoria = Autoria()
autoria.primeiro_autor = primeiro_autor

26
sapl/relatorios/views.py

@ -1055,17 +1055,7 @@ def relatorio_protocolo(request):
return response
def relatorio_etiqueta_protocolo(request, nro, ano):
'''
pdf_etiqueta_protocolo_gerar.py
'''
response = HttpResponse(content_type='application/pdf')
response[
'Content-Disposition'] = (
'inline; filename="relatorio_etiqueta_protocolo.pdf"')
def gera_etiqueta_protocolo(nro, ano):
casa = CasaLegislativa.objects.first()
cabecalho = get_cabecalho(casa)
@ -1080,6 +1070,20 @@ def relatorio_etiqueta_protocolo(request, nro, ano):
protocolo_data,
cabecalho,
rodape)
return pdf
def relatorio_etiqueta_protocolo(request, nro, ano):
'''
pdf_etiqueta_protocolo_gerar.py
'''
response = HttpResponse(content_type='application/pdf')
response[
'Content-Disposition'] = (
'inline; filename="relatorio_etiqueta_protocolo.pdf"')
pdf = gera_etiqueta_protocolo(nro,ano)
response.write(pdf)

Loading…
Cancel
Save