Browse Source

Add relatorio espelho

pull/202/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
c52e0054ce
  1. 187
      relatorios/templates/pdf_espelho_gerar.py
  2. 4
      relatorios/urls.py
  3. 94
      relatorios/views.py

187
relatorios/templates/pdf_espelho_gerar.py

@ -1,4 +1,4 @@
##parameters=sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro
# parameters=sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro
"""relatorio_materia.py
External method para gerar o arquivo rml do resultado de uma pesquisa de matérias
@ -11,55 +11,64 @@ import time
from trml2pdf import parseString
def cabecalho(dic_cabecalho,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 25cm 19cm 25cm</lines>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="18"/>\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="16"/>\n'
tmp_data+='\t\t\t\t<drawString x="07cm" y="26.5cm">' + dic_cabecalho['nom_estado'] + '</drawString>\n'
tmp_data+='\t\t\t\t<setFont name="Helvetica" size="15"/>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="25.2cm">SECRETARIA</drawCentredString>\n'
return 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<lines>2cm 25cm 19cm 25cm</lines>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="18"/>\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="16"/>\n'
tmp_data += '\t\t\t\t<drawString x="07cm" y="26.5cm">' + \
dic_cabecalho['nom_estado'] + '</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="15"/>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="25.2cm">SECRETARIA</drawCentredString>\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<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
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<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="10.0" leading="10" alignment="CENTER"/>\n'
tmp_data+='\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="13.0" leading="13" alignment="LEFT"/>\n'
tmp_data+='\t</stylesheet>\n'
return tmp_data
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="10.0" leading="10" alignment="CENTER"/>\n'
tmp_data += '\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="13.0" leading="13" alignment="LEFT"/>\n'
tmp_data += '\t</stylesheet>\n'
return tmp_data
def materias(lst_materias):
"""Gera o codigo rml do conteudo da pesquisa de materias"""
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_materias:
#espaco inicial
# espaco inicial
# tmp_data+='\t\t<para style="P2">\n'
# tmp_data+='\t\t\t<font color="white"> </font>\n'
# tmp_data+='\t\t</para>\n'
@ -67,74 +76,78 @@ def materias(lst_materias):
# tmp_data+='\t\t\t<font color="white"> </font>\n'
# tmp_data+='\t\t</para>\n'
#condicao para a quebra de pagina
tmp_data+='\t\t<condPageBreak height="16cm"/>\n'
# condicao para a quebra de pagina
tmp_data += '\t\t<condPageBreak height="16cm"/>\n'
#materias
# materias
# if dic['titulo']!=None:
# tmp_data+='\t\t<para style="P1">' + dic['titulo'] + '</para>\n'
# tmp_data+='\t\t<para style="P1">\n'
# tmp_data+='\t\t\t<font color="white"> </font>\n'
# tmp_data+='\t\t</para>\n'
if dic['materia']!=None:
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<para style="P2"><b>INDICAÇÃO:</b> ' + dic['materia'] + '</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'
if dic['materia'] != None:
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<para style="P2"><b>INDICAÇÃO:</b> ' + \
dic['materia'] + '</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'
if dic['dat_apresentacao']!=None:
tmp_data+='\t\t<para style="P2"><b>DATA DE ENTRADA:</b> ' + dic['dat_apresentacao'] + '</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'
if dic['nom_autor']!=None:
tmp_data+='\t\t<para style="P2"><b>AUTOR:</b> ' + dic['nom_autor'] + '</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'
if dic['txt_ementa']!=None:
txt_ementa = dic['txt_ementa'].replace('&','&amp;')
tmp_data+='\t\t<para style="P2"><b>EMENTA:</b> ' + dic['txt_ementa'] + '</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'
if dic['dat_apresentacao'] != None:
tmp_data += '\t\t<para style="P2"><b>DATA DE ENTRADA:</b> ' + \
dic['dat_apresentacao'] + '</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'
if dic['nom_autor'] != None:
tmp_data += '\t\t<para style="P2"><b>AUTOR:</b> ' + \
dic['nom_autor'] + '</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'
if dic['txt_ementa'] != None:
txt_ementa = dic['txt_ementa'].replace('&', '&amp;')
tmp_data += '\t\t<para style="P2"><b>EMENTA:</b> ' + \
dic['txt_ementa'] + '</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</story>\n'
return tmp_data
tmp_data += '\t</story>\n'
return tmp_data
def principal(sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro={}):
def principal(sessao, imagem, data, lst_materias, dic_cabecalho, lst_rodape, dic_filtro={}):
"""Funcao pricipal que gera a estrutura global do arquivo rml"""
# if sessao:
# arquivoPdf=sessao+".pdf"
# else:
# arquivoPdf=str(int(time.time()*100))+".pdf"
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="relatorio.pdf">\n'
tmp_data+='\t<template pageSize="(21cm, 29.7cm)" title="Relatorio de Materias" author="Interlegis" allowSplitting="20">\n'
tmp_data+='\t\t<pageTemplate id="first">\n'
tmp_data+='\t\t\t<pageGraphics>\n'
tmp_data+=cabecalho(dic_cabecalho,imagem)
tmp_data+=rodape(lst_rodape)
tmp_data+='\t\t\t</pageGraphics>\n'
tmp_data+='\t\t\t<frame id="first" x1="2cm" y1="4cm" width="17cm" height="21cm"/>\n'
tmp_data+='\t\t</pageTemplate>\n'
tmp_data+='\t</template>\n'
tmp_data+=paraStyle()
tmp_data+=materias(lst_materias)
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="relatorio.pdf">\n'
tmp_data += '\t<template pageSize="(21cm, 29.7cm)" title="Relatorio de Materias" author="Interlegis" allowSplitting="20">\n'
tmp_data += '\t\t<pageTemplate id="first">\n'
tmp_data += '\t\t\t<pageGraphics>\n'
tmp_data += cabecalho(dic_cabecalho, imagem)
tmp_data += rodape(lst_rodape)
tmp_data += '\t\t\t</pageGraphics>\n'
tmp_data += '\t\t\t<frame id="first" x1="2cm" y1="4cm" width="17cm" height="21cm"/>\n'
tmp_data += '\t\t</pageTemplate>\n'
tmp_data += '\t</template>\n'
tmp_data += paraStyle()
tmp_data += materias(lst_materias)
tmp_data += '</document>\n'
tmp_pdf = parseString(tmp_data)
return tmp_pdf
# try:

4
relatorios/urls.py

@ -1,7 +1,7 @@
from django.conf.urls import url
from .views import (relatorio_documento_administrativo, relatorio_materia,
relatorio_ordem_dia, relatorio_processo)
relatorio_ordem_dia, relatorio_processo, relatorio_espelho)
urlpatterns = [
url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'),
@ -12,5 +12,7 @@ urlpatterns = [
url(r'^relatorios/relatorio_documento_administrativo$',
relatorio_documento_administrativo,
name='relatorio_documento_administrativo'),
url(r'^relatorios/espelho$', relatorio_espelho,
name='relatorio_espelho'),
]

94
relatorios/views.py

@ -13,7 +13,8 @@ from protocoloadm.models import (DocumentoAdministrativo, Protocolo,
from sessao.models import OrdemDia, SessaoPlenaria
from .templates import (pdf_capa_processo_gerar,
pdf_documento_administrativo_gerar, pdf_materia_gerar)
pdf_documento_administrativo_gerar, pdf_espelho_gerar,
pdf_materia_gerar)
def get_cabecalho(casa):
@ -434,3 +435,94 @@ def get_documento_administrativo(docs):
documentos.append(dic)
return documentos
def relatorio_espelho(request):
'''
pdf_espelho_gerar.py
'''
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="somefilename.pdf"'
casa = CasaLegislativa.objects.first()
cabecalho = get_cabecalho(casa)
rodape = get_rodape(casa)
imagem = get_imagem(casa)
mats = MateriaLegislativa.objects.all()[:50]
mat_pdf = get_espelho(mats)
pdf = pdf_espelho_gerar.principal(
None,
imagem,
None,
mat_pdf,
cabecalho,
rodape)
response.write(pdf)
return response
def get_espelho(mats):
materias = []
for m in mats:
dic = {}
dic['titulo'] = str(m)
dic['materia'] = str(m.numero) + '/' + str(m.ano)
dic['dat_apresentacao'] = str(m.data_apresentacao)
dic['txt_ementa'] = m.ementa
dic['nom_autor'] = ' '
for autoria in Autoria.objects.filter(materia=m, primeiro_autor=True):
for autor in Autor.objects.filter(id=autoria.autor.id):
if autor.tipo == 'Parlamentar':
for parlamentar in Parlamentar.objects.filter(
id=autor.parlamentar.id):
dic['nom_autor'] = parlamentar.nome_completo
elif autor.tipo == 'Comissao':
for comissao in Comissao.objects.filter(
id=autor.comissao.id):
dic['nom_autor'] = str(comissao)
else:
dic['nom_autor'] = autor.nome
des_status = ''
txt_tramitacao = ''
data_ultima_acao = ''
dic['localizacao_atual'] = " "
for tramitacao in Tramitacao.objects.filter(materia=m):
if tramitacao.unidade_tramitacao_destino:
cod_unid_tram = tramitacao.unidade_tramitacao_destino
else:
cod_unid_tram = tramitacao.unidade_tramitacao_local
for unidade_tramitacao in UnidadeTramitacao.objects.filter(
id=cod_unid_tram.id):
if unidade_tramitacao.orgao:
dic['localizacao_atual'] = unidade_tramitacao.orgao
elif unidade_tramitacao.parlamentar:
dic['localizacao_atual'] = unidade_tramitacao.parlamentar
else:
dic['localizacao_atual'] = unidade_tramitacao.comissao
des_status = tramitacao.status
txt_tramitacao = tramitacao.texto
data_ultima_acao = tramitacao.data_tramitacao
dic['des_situacao'] = des_status
dic['ultima_acao'] = txt_tramitacao
dic['data_ultima_acao'] = data_ultima_acao
dic['norma_juridica_vinculada'] = 'Não há nenhuma\
norma jurídica vinculada'
# TODO
# for norma in context.zsql.materia_buscar_norma_juridica_zsql(cod_materia=materia.cod_materia):
# dic['norma_juridica_vinculada'] = norma.des_norma + " " + \
# str(norma.num_norma) + "/" + str(norma.ano_norma)
materias.append(dic)
return materias

Loading…
Cancel
Save