Browse Source

Add etiqueta protocolo report

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

159
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 """relatorio_protocolo.py
External method para gerar o arquivo rml da etiqueta de protocolo External method para gerar o arquivo rml da etiqueta de protocolo
@ -11,101 +11,115 @@ import time
from trml2pdf import parseString from trml2pdf import parseString
def cabecalho(inf_basicas_dic,imagem): def cabecalho(dic_cabecalho, imagem):
"""Gera o codigo rml do cabecalho""" """Gera o codigo rml do cabecalho"""
tmp_data='' 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<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + \
tmp_data+='\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n' imagem + '"/>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n' tmp_data += '\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\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-Bold" size="15"/>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="12"/>\n' tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
tmp_data+='\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n' dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n' tmp_data += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp_data+='\t\t\t\t<drawString x="2.2cm" y="24.6cm">Relatório de Controle do Protocolo</drawString>\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 return tmp_data
def rodape(lst_rodape): def rodape(lst_rodape):
"""Gera o codigo rml do rodape""" """Gera o codigo rml do rodape"""
tmp_data='' tmp_data = ''
tmp_data+='\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n' 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<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="2cm" y="3.3cm">' + \
tmp_data+='\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n' lst_rodape[2] + '</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<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + lst_rodape[1] + '</drawCentredString>\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 return tmp_data
def paraStyle(): def paraStyle():
"""Gera o codigo rml que define o estilo dos paragrafos""" """Gera o codigo rml que define o estilo dos paragrafos"""
tmp_data='' tmp_data = ''
tmp_data+='\t<stylesheet>\n' tmp_data += '\t<stylesheet>\n'
tmp_data+='\t\t<blockTableStyle id="Standard_Outline">\n' tmp_data += '\t\t<blockTableStyle id="Standard_Outline">\n'
tmp_data+='\t\t\t<blockAlignment value="LEFT"/>\n' tmp_data += '\t\t\t<blockAlignment value="LEFT"/>\n'
tmp_data+='\t\t\t<blockValign value="TOP"/>\n' tmp_data += '\t\t\t<blockValign value="TOP"/>\n'
tmp_data+='\t\t</blockTableStyle>\n' tmp_data += '\t\t</blockTableStyle>\n'
tmp_data+='\t\t<initialize>\n' tmp_data += '\t\t<initialize>\n'
tmp_data+='\t\t\t<paraStyle name="all" alignment="justify"/>\n' tmp_data += '\t\t\t<paraStyle name="all" alignment="justify"/>\n'
tmp_data+='\t\t</initialize>\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="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\t<paraStyle name="P2" fontName="Helvetica" fontSize="8.0" leading="9" alignment="CENTER"/>\n'
tmp_data+='\t</stylesheet>\n' tmp_data += '\t</stylesheet>\n'
return tmp_data return tmp_data
def protocolos(lst_protocolos):
def protocolos(lst_protocolos, dic_cabecalho):
"""Gera o codigo rml do conteudo da pesquisa de protocolos""" """Gera o codigo rml do conteudo da pesquisa de protocolos"""
tmp_data='' tmp_data = ''
#inicio do bloco que contem os flowables # inicio do bloco que contem os flowables
tmp_data+='\t<story>\n' tmp_data += '\t<story>\n'
for dic in lst_protocolos: for dic in lst_protocolos:
#condicao para a quebra de pagina # condicao para a quebra de pagina
tmp_data+='\t\t<condPageBreak height="8mm"/>\n' tmp_data += '\t\t<condPageBreak height="8mm"/>\n'
#protocolos # protocolos
if dic['titulo']!=None: if dic['titulo'] != None:
tmp_data+='\t\t<para style="P1">\n' tmp_data += '\t\t<para style="P1">\n'
tmp_data+='\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data+='\t\t</para>\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"><b>' + \
tmp_data+='\t\t<para style="P2">\n' dic_cabecalho['nom_casa'] + '</b></para>\n'
tmp_data+='\t\t\t<font color="white"> </font>\n' tmp_data += '\t\t<para style="P2">\n'
tmp_data+='\t\t</para>\n' tmp_data += '\t\t\t<font color="white"> </font>\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>\n'
tmp_data+='\t\t<para style="P2"><b>PROTOCOLO GERAL '+dic['titulo']+'</b></para>\n' tmp_data += '\t\t<barCode code="Code128" x="0.15cm" barHeight="0.34in" barWidth="0.018in">' + \
if dic['data']!=None: dic['titulo'] + '</barCode>\n'
tmp_data+='\t\t<para style="P2"><b>'+dic['data']+'</b></para>\n' tmp_data += '\t\t<para style="P2"><b>PROTOCOLO GERAL ' + \
tmp_data+='\t\t<para style="P2"><b>'+dic['natureza']+' - '+dic['ident_processo']+'</b></para>\n' dic['titulo'] + '</b></para>\n'
if dic['data'] != None:
tmp_data+='\t</story>\n' 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 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""" """Funcao pricipal que gera a estrutura global do arquivo rml"""
arquivoPdf=str(int(time.time()*100))+".pdf" arquivoPdf = str(int(time.time() * 100)) + ".pdf"
tmp_data='' tmp_data = ''
tmp_data+='<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n' tmp_data += '<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n'
tmp_data+='<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n' tmp_data += '<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n'
tmp_data+='<document filename="etiquetas.pdf">\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<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<pageTemplate id="first">\n'
tmp_data+='\t\t\t<pageGraphics>\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<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\t</pageGraphics>\n'
tmp_data+='\t\t</pageTemplate>\n' tmp_data += '\t\t</pageTemplate>\n'
tmp_data+='\t</template>\n' tmp_data += '\t</template>\n'
tmp_data+=paraStyle() tmp_data += paraStyle()
tmp_data+=protocolos(lst_protocolos) tmp_data += protocolos(lst_protocolos, dic_cabecalho)
tmp_data+='</document>\n' tmp_data += '</document>\n'
tmp_pdf=parseString(tmp_data) tmp_pdf = parseString(tmp_data)
return tmp_pdf return tmp_pdf
# if hasattr(context.temp_folder,arquivoPdf): # if hasattr(context.temp_folder,arquivoPdf):
@ -116,4 +130,5 @@ def principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_fil
# return "/temp_folder/"+arquivoPdf # 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, from .views import (relatorio_documento_administrativo, relatorio_materia,
relatorio_ordem_dia, relatorio_processo, relatorio_ordem_dia, relatorio_processo,
relatorio_protocolo, relatorio_espelho) relatorio_protocolo, relatorio_espelho,
relatorio_etiqueta_protocolo)
urlpatterns = [ urlpatterns = [
url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'), url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'),
@ -16,5 +17,7 @@ urlpatterns = [
url(r'^relatorios/espelho$', relatorio_espelho, url(r'^relatorios/espelho$', relatorio_espelho,
name='relatorio_espelho'), name='relatorio_espelho'),
url(r'^relatorios/protocolo$', 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 comissoes.models import Comissao
from materia.models import (Autor, Autoria, MateriaLegislativa, Numeracao, from materia.models import (Autor, Autoria, MateriaLegislativa, Numeracao,
Tramitacao, UnidadeTramitacao) Tramitacao, UnidadeTramitacao)
from django.http import HttpResponse from django.http import HttpResponse
from sessao.models import OrdemDia
from parlamentares.models import Parlamentar from parlamentares.models import Parlamentar
from protocoloadm.models import (DocumentoAdministrativo, Protocolo, from protocoloadm.models import (DocumentoAdministrativo, Protocolo,
TramitacaoAdministrativo) TramitacaoAdministrativo)
from sessao.models import OrdemDia, SessaoPlenaria from sessao.models import OrdemDia, SessaoPlenaria
from .templates import (pdf_capa_processo_gerar, from .templates import (pdf_capa_processo_gerar,
pdf_documento_administrativo_gerar, pdf_documento_administrativo_gerar,
pdf_espelho_gerar, pdf_espelho_gerar,
pdf_materia_gerar, pdf_materia_gerar,
pdf_protocolo_gerar) pdf_protocolo_gerar,
pdf_etiqueta_protocolo_gerar)
def get_cabecalho(casa): def get_cabecalho(casa):
@ -612,3 +614,83 @@ def relatorio_protocolo(request):
response.write(pdf) response.write(pdf)
return response 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