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 redis>=2.10.5,<2.11
django-celery-results==1.0.4 django-celery-results==1.0.4
Whoosh==2.7.4 Whoosh==2.7.4
pdf2image==1.9.0
PyMuPDF==1.16.5
pysolr==3.6.0 pysolr==3.6.0

30
sapl/materia/forms.py

@ -53,6 +53,12 @@ from .models import (AcompanhamentoMateria, Anexada, Autoria,
DespachoInicial, DocumentoAcessorio, Numeracao, DespachoInicial, DocumentoAcessorio, Numeracao,
Proposicao, Relatoria, TipoMateriaLegislativa, Proposicao, Relatoria, TipoMateriaLegislativa,
Tramitacao, UnidadeTramitacao) 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(): def CHOICE_TRAMITACAO():
@ -260,6 +266,8 @@ class MateriaLegislativaForm(FileFieldCheckMixin, ModelForm):
return cleaned_data return cleaned_data
def save(self, commit=False): def save(self, commit=False):
from sapl.relatorios.views import gera_etiqueta_protocolo
if not self.instance.pk: if not self.instance.pk:
primeiro_autor = True primeiro_autor = True
else: else:
@ -268,6 +276,28 @@ class MateriaLegislativaForm(FileFieldCheckMixin, ModelForm):
materia = super(MateriaLegislativaForm, self).save(commit) materia = super(MateriaLegislativaForm, self).save(commit)
materia.save() 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']: if self.cleaned_data['autor']:
autoria = Autoria() autoria = Autoria()
autoria.primeiro_autor = primeiro_autor autoria.primeiro_autor = primeiro_autor

26
sapl/relatorios/views.py

@ -1055,17 +1055,7 @@ def relatorio_protocolo(request):
return response return response
def gera_etiqueta_protocolo(nro, ano):
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"')
casa = CasaLegislativa.objects.first() casa = CasaLegislativa.objects.first()
cabecalho = get_cabecalho(casa) cabecalho = get_cabecalho(casa)
@ -1081,6 +1071,20 @@ def relatorio_etiqueta_protocolo(request, nro, ano):
cabecalho, cabecalho,
rodape) 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) response.write(pdf)
return response return response

Loading…
Cancel
Save