Browse Source

Add etiqueta protocolo report

pull/202/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
b3d769fa90
  1. 161
      relatorios/templates/pdf_etiqueta_protocolo_gerar.py
  2. 7
      relatorios/urls.py
  3. 86
      relatorios/views.py

161
relatorios/templates/pdf_etiqueta_protocolo_gerar.py

@ -1,4 +1,4 @@
##parameters=sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro
# parameters=sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro
"""relatorio_protocolo.py
External method para gerar o arquivo rml da etiqueta de protocolo
@ -11,102 +11,116 @@ import time
from trml2pdf import parseString
def cabecalho(inf_basicas_dic,imagem):
def cabecalho(dic_cabecalho, imagem):
"""Gera o codigo rml do cabecalho"""
tmp_data=''
tmp_data+='\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n'
tmp_data+='\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n'
tmp_data+='\t\t\t\t<drawString x="5cm" y="27.2cm">' + dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp_data+='\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n'
tmp_data+='\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Controle do Protocolo</drawString>\n'
tmp_data = ''
tmp_data += '\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + \
imagem + '"/>\n'
tmp_data += '\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n'
tmp_data += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Controle do Protocolo</drawString>\n'
return tmp_data
def rodape(lst_rodape):
"""Gera o codigo rml do rodape"""
tmp_data=''
tmp_data+='\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp_data+='\t\t\t\t<drawString x="2cm" y="3.3cm">' + lst_rodape[2] + '</drawString>\n'
tmp_data+='\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + lst_rodape[0] + '</drawCentredString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + lst_rodape[1] + '</drawCentredString>\n'
tmp_data = ''
tmp_data += '\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp_data += '\t\t\t\t<drawString x="2cm" y="3.3cm">' + \
lst_rodape[2] + '</drawString>\n'
tmp_data += '\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + \
lst_rodape[0] + '</drawCentredString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + \
lst_rodape[1] + '</drawCentredString>\n'
return tmp_data
def paraStyle():
"""Gera o codigo rml que define o estilo dos paragrafos"""
tmp_data=''
tmp_data+='\t<stylesheet>\n'
tmp_data+='\t\t<blockTableStyle id="Standard_Outline">\n'
tmp_data+='\t\t\t<blockAlignment value="LEFT"/>\n'
tmp_data+='\t\t\t<blockValign value="TOP"/>\n'
tmp_data+='\t\t</blockTableStyle>\n'
tmp_data+='\t\t<initialize>\n'
tmp_data+='\t\t\t<paraStyle name="all" alignment="justify"/>\n'
tmp_data+='\t\t</initialize>\n'
tmp_data+='\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="5.0" leading="6" alignment="CENTER"/>\n'
tmp_data+='\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="8.0" leading="9" alignment="CENTER"/>\n'
tmp_data+='\t</stylesheet>\n'
tmp_data = ''
tmp_data += '\t<stylesheet>\n'
tmp_data += '\t\t<blockTableStyle id="Standard_Outline">\n'
tmp_data += '\t\t\t<blockAlignment value="LEFT"/>\n'
tmp_data += '\t\t\t<blockValign value="TOP"/>\n'
tmp_data += '\t\t</blockTableStyle>\n'
tmp_data += '\t\t<initialize>\n'
tmp_data += '\t\t\t<paraStyle name="all" alignment="justify"/>\n'
tmp_data += '\t\t</initialize>\n'
tmp_data += '\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="5.0" leading="6" alignment="CENTER"/>\n'
tmp_data += '\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="8.0" leading="9" alignment="CENTER"/>\n'
tmp_data += '\t</stylesheet>\n'
return tmp_data
def protocolos(lst_protocolos):
def protocolos(lst_protocolos, dic_cabecalho):
"""Gera o codigo rml do conteudo da pesquisa de protocolos"""
tmp_data=''
tmp_data = ''
#inicio do bloco que contem os flowables
tmp_data+='\t<story>\n'
# inicio do bloco que contem os flowables
tmp_data += '\t<story>\n'
for dic in lst_protocolos:
#condicao para a quebra de pagina
tmp_data+='\t\t<condPageBreak height="8mm"/>\n'
#protocolos
if dic['titulo']!=None:
tmp_data+='\t\t<para style="P1">\n'
tmp_data+='\t\t\t<font color="white"> </font>\n'
tmp_data+='\t\t</para>\n'
tmp_data+='\t\t<para style="P2"><b>'+dic_cabecalho['nom_casa']+'</b></para>\n'
tmp_data+='\t\t<para style="P2">\n'
tmp_data+='\t\t\t<font color="white"> </font>\n'
tmp_data+='\t\t</para>\n'
tmp_data+='\t\t<barCode code="Code128" x="0.15cm" barHeight="0.34in" barWidth="0.018in">' +dic['titulo']+ '</barCode>\n'
tmp_data+='\t\t<para style="P2"><b>PROTOCOLO GERAL '+dic['titulo']+'</b></para>\n'
if dic['data']!=None:
tmp_data+='\t\t<para style="P2"><b>'+dic['data']+'</b></para>\n'
tmp_data+='\t\t<para style="P2"><b>'+dic['natureza']+' - '+dic['ident_processo']+'</b></para>\n'
tmp_data+='\t</story>\n'
# condicao para a quebra de pagina
tmp_data += '\t\t<condPageBreak height="8mm"/>\n'
# protocolos
if dic['titulo'] != None:
tmp_data += '\t\t<para style="P1">\n'
tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n'
tmp_data += '\t\t<para style="P2"><b>' + \
dic_cabecalho['nom_casa'] + '</b></para>\n'
tmp_data += '\t\t<para style="P2">\n'
tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n'
tmp_data += '\t\t<barCode code="Code128" x="0.15cm" barHeight="0.34in" barWidth="0.018in">' + \
dic['titulo'] + '</barCode>\n'
tmp_data += '\t\t<para style="P2"><b>PROTOCOLO GERAL ' + \
dic['titulo'] + '</b></para>\n'
if dic['data'] != None:
tmp_data += '\t\t<para style="P2"><b>' + \
dic['data'] + '</b></para>\n'
tmp_data += '\t\t<para style="P2"><b>' + \
dic['natureza'] + ' - ' + dic['ident_processo'] + '</b></para>\n'
tmp_data += '\t</story>\n'
return tmp_data
def principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro={}):
def principal(sessao, imagem, data, lst_protocolos, dic_cabecalho, lst_rodape, dic_filtro={}):
"""Funcao pricipal que gera a estrutura global do arquivo rml"""
arquivoPdf=str(int(time.time()*100))+".pdf"
tmp_data=''
tmp_data+='<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n'
tmp_data+='<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n'
tmp_data+='<document filename="etiquetas.pdf">\n'
tmp_data+='\t<template pageSize="(62mm, 29mm)" title="Etiquetas de Protocolo" author="Luciano De Fazio" allowSplitting="20">\n'
tmp_data+='\t\t<pageTemplate id="first">\n'
tmp_data+='\t\t\t<pageGraphics>\n'
tmp_data+='\t\t\t<frame id="first" x1="0.03cm" y1="0.1cm" width="61mm" height="29mm"/>\n'
tmp_data+='\t\t\t</pageGraphics>\n'
tmp_data+='\t\t</pageTemplate>\n'
tmp_data+='\t</template>\n'
tmp_data+=paraStyle()
tmp_data+=protocolos(lst_protocolos)
tmp_data+='</document>\n'
tmp_pdf=parseString(tmp_data)
arquivoPdf = str(int(time.time() * 100)) + ".pdf"
tmp_data = ''
tmp_data += '<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n'
tmp_data += '<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n'
tmp_data += '<document filename="etiquetas.pdf">\n'
tmp_data += '\t<template pageSize="(62mm, 29mm)" title="Etiquetas de Protocolo" author="Luciano De Fazio" allowSplitting="20">\n'
tmp_data += '\t\t<pageTemplate id="first">\n'
tmp_data += '\t\t\t<pageGraphics>\n'
tmp_data += '\t\t\t<frame id="first" x1="0.03cm" y1="0.1cm" width="61mm" height="29mm"/>\n'
tmp_data += '\t\t\t</pageGraphics>\n'
tmp_data += '\t\t</pageTemplate>\n'
tmp_data += '\t</template>\n'
tmp_data += paraStyle()
tmp_data += protocolos(lst_protocolos, dic_cabecalho)
tmp_data += '</document>\n'
tmp_pdf = parseString(tmp_data)
return tmp_pdf
# if hasattr(context.temp_folder,arquivoPdf):
# context.temp_folder.manage_delObjects(ids=arquivoPdf)
@ -116,4 +130,5 @@ def principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_fil
# return "/temp_folder/"+arquivoPdf
# return principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro)
# return
# principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro)

7
relatorios/urls.py

@ -2,7 +2,8 @@ from django.conf.urls import url
from .views import (relatorio_documento_administrativo, relatorio_materia,
relatorio_ordem_dia, relatorio_processo,
relatorio_protocolo, relatorio_espelho)
relatorio_protocolo, relatorio_espelho,
relatorio_etiqueta_protocolo)
urlpatterns = [
url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'),
@ -16,5 +17,7 @@ urlpatterns = [
url(r'^relatorios/espelho$', relatorio_espelho,
name='relatorio_espelho'),
url(r'^relatorios/protocolo$',
relatorio_protocolo, name='relatorio_protocolo')
relatorio_protocolo, name='relatorio_protocolo'),
url(r'^relatorios/etiqueta_protocolo$',
relatorio_etiqueta_protocolo, name='relatorio_etiqueta_protocolo')
]

86
relatorios/views.py

@ -7,19 +7,21 @@ from base.views import ESTADOS
from comissoes.models import Comissao
from materia.models import (Autor, Autoria, MateriaLegislativa, Numeracao,
Tramitacao, UnidadeTramitacao)
from django.http import HttpResponse
from sessao.models import OrdemDia
from parlamentares.models import Parlamentar
from protocoloadm.models import (DocumentoAdministrativo, Protocolo,
TramitacaoAdministrativo)
from sessao.models import OrdemDia, SessaoPlenaria
from .templates import (pdf_capa_processo_gerar,
pdf_documento_administrativo_gerar,
pdf_espelho_gerar,
pdf_materia_gerar,
pdf_protocolo_gerar)
pdf_protocolo_gerar,
pdf_etiqueta_protocolo_gerar)
def get_cabecalho(casa):
@ -612,3 +614,83 @@ def relatorio_protocolo(request):
response.write(pdf)
return response
def relatorio_etiqueta_protocolo(request):
'''
pdf__etiqueta_protocolo_gerar.py
'''
response = HttpResponse(content_type='application/pdf')
response[
'Content-Disposition'] = 'attachment; filename="relatorio_etiqueta_protocolo.pdf"'
casa = CasaLegislativa.objects.first()
cabecalho = get_cabecalho(casa)
rodape = get_rodape(casa)
imagem = get_imagem(casa)
protocolos = Protocolo.objects.all()[:50]
protocolo_data = get_etiqueta_protocolos(protocolos)
pdf = pdf_etiqueta_protocolo_gerar.principal(None,
imagem,
None,
protocolo_data,
cabecalho,
rodape)
response.write(pdf)
return response
def get_etiqueta_protocolos(prots):
protocolos = []
for p in prots:
dic = {}
dic['titulo'] = str(p.numero) + '/' + str(p.ano)
dic['data'] = p.data.strftime(
"%d/%m/%Y") + ' - <b>Horário:</b>' + p.hora.strftime("%H:%m")
dic['txt_assunto'] = p.assunto_ementa
dic['txt_interessado'] = p.interessado
dic['nom_autor'] = ' '
if p.autor:
if p.autor.parlamentar:
dic['nom_autor'] = p.autor.parlamentar.nome_completo
elif p.autor.comissao:
dic['nom_autor'] = p.autor.comissao.nome
dic['natureza'] = ''
if p.tipo_processo == 0:
dic['natureza'] = 'Administrativo'
if p.tipo_processo == 1:
dic['natureza'] = 'Legislativo'
dic['num_materia'] = ''
for materia in MateriaLegislativa.objects.filter(
numero_protocolo=p.numero, ano=p.ano):
dic['num_materia'] = str(materia)
dic['num_documento'] = ''
for documento in DocumentoAdministrativo.objects.filter(
numero_protocolo=p.numero):
dic['num_documento'] = str(documento)
dic['ident_processo'] = dic['num_materia'] or dic['num_documento']
dic['processo'] = (str(p.tipo_materia) or
str(p.tipo_documento))
dic['anulado'] = ''
if p.anulado:
dic['anulado'] = 'Nulo'
protocolos.append(dic)
return protocolos

Loading…
Cancel
Save