##parameters=rodape_dic, sessao='', imagem, inf_basicas_dic, lst_mesa, lst_presenca_sessao, lst_expedientes, lst_expediente_materia, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_oradores
""" Script para geração do PDF das sessoes plenarias
Autor : Gustavo Lepri
Atualizado por Luciano De Fázio - 22 / 03 / 2012
versão : 1.0
"""
import time
from trml2pdf import parseString
def cabecalho ( inf_basicas_dic , imagem ) :
"""
"""
tmp = ' '
tmp + = ' \t \t \t \t <image x= " 2.1cm " y= " 25.7cm " width= " 59 " height= " 62 " file= " ' + \
imagem + ' " /> \n '
tmp + = ' \t \t \t \t <lines>2cm 25.4cm 19cm 25.4cm</lines> \n '
tmp + = ' \t \t \t \t <setFont name= " Helvetica-Bold " size= " 16 " /> \n '
tmp + = ' \t \t \t \t <drawString x= " 5cm " y= " 27.1cm " > ' + \
str ( inf_basicas_dic [ " nom_camara " ] ) + ' </drawString> \n '
tmp + = ' \t \t \t \t <setFont name= " Helvetica " size= " 12 " /> \n '
tmp + = ' \t \t \t \t <drawString x= " 5cm " y= " 26.6cm " >Sistema de Apoio ao Processo Legislativo</drawString> \n '
tmp + = ' \t \t \t \t <setFont name= " Helvetica-Bold " size= " 12 " /> \n '
tmp + = ' \t \t \t \t <drawString x= " 2.2cm " y= " 24.6cm " >Resumo da ' + str ( inf_basicas_dic [ ' num_sessao_plen ' ] ) + ' ª Reunião ' + str ( inf_basicas_dic [ ' nom_sessao ' ] ) + ' da ' + str (
inf_basicas_dic [ ' num_sessao_leg ' ] ) + ' ª Sessão Legislativa da ' + str ( inf_basicas_dic [ ' num_legislatura ' ] ) + ' ª Legislatura </drawString> \n '
return tmp
def rodape ( rodape_dic ) :
tmp = ' '
tmp + = ' \t \t \t \t <lines>2cm 3.2cm 19cm 3.2cm</lines> \n '
tmp + = ' \t \t \t \t <setFont name= " Helvetica " size= " 8 " /> \n '
tmp + = ' \t \t \t \t <drawString x= " 2cm " y= " 3.3cm " > ' + \
rodape_dic [ 2 ] + ' </drawString> \n '
tmp + = ' \t \t \t \t <drawString x= " 17.9cm " y= " 3.3cm " >Página <pageNumber/></drawString> \n '
tmp + = ' \t \t \t \t <drawCentredString x= " 10.5cm " y= " 2.7cm " > ' + \
rodape_dic [ 0 ] + ' </drawCentredString> \n '
tmp + = ' \t \t \t \t <drawCentredString x= " 10.5cm " y= " 2.3cm " > ' + \
rodape_dic [ 1 ] + ' </drawCentredString> \n '
return tmp
def paraStyle ( ) :
"""
"""
tmp = ' '
tmp + = ' \t <stylesheet> \n '
tmp + = ' \t \t <blockTableStyle id= " repeater " spaceBefore= " 12 " > \n '
tmp + = ' \t \t \t <lineStyle kind= " OUTLINE " colorName= " black " thickness= " 0.5 " /> \n '
tmp + = ' \t \t \t <lineStyle kind= " GRID " colorName= " gray " thickness= " 0.25 " /> \n '
tmp + = ' \t \t \t <blockFont name= " Helvetica-Bold " size= " 8 " leading= " 8 " start= " 0,0 " stop= " -1,0 " /> \n '
tmp + = ' \t \t \t <blockBottomPadding length= " 1 " /> \n '
tmp + = ' \t \t \t <blockBackground colorName= " silver " start= " 0,0 " stop= " -1,0 " /> \n '
tmp + = ' \t \t \t <lineStyle kind= " LINEBELOW " colorName= " black " start= " 0,0 " stop= " -1,0 " thickness= " 0.5 " /> \n '
tmp + = ' \t \t \t <!--body section--> \n '
tmp + = ' \t \t \t <blockFont name= " Helvetica " size= " 8 " leading= " 9 " start= " 0,1 " stop= " -1,-1 " /> \n '
tmp + = ' \t \t \t <blockTopPadding length= " 1 " start= " 0,1 " stop= " -1,-1 " /> \n '
tmp + = ' \t \t \t <blockAlignment value= " LEFT " start= " 1,1 " stop= " -1,-1 " /> \n '
tmp + = ' \t \t \t <blockValign value= " TOP " /> \n '
tmp + = ' \t \t </blockTableStyle> \n '
tmp + = ' \t \t <blockTableStyle id= " votacao " > \n '
tmp + = ' \t \t \t <blockFont name= " Helvetica " size= " 8 " leading= " 9 " start= " 0,0 " stop= " -1,0 " /> \n '
tmp + = ' \t \t \t <blockBackground colorName= " silver " start= " 0,0 " stop= " 3,0 " /> \n '
tmp + = ' \t \t \t <lineStyle kind= " GRID " colorName= " silver " /> \n '
tmp + = ' \t \t \t <lineStyle kind= " LINEBELOW " colorName= " black " start= " 0,0 " stop= " -1,0 " thickness= " 0.5 " /> \n '
tmp + = ' \t \t \t <blockAlignment value= " LEFT " /> \n '
tmp + = ' \t \t \t <blockValign value= " TOP " /> \n '
tmp + = ' \t \t </blockTableStyle> \n '
tmp + = ' \t \t <initialize> \n '
tmp + = ' \t \t \t <paraStyle name= " all " alignment= " justify " /> \n '
tmp + = ' \t \t </initialize> \n '
tmp + = ' \t \t <paraStyle name= " style.Title " fontName= " Helvetica " fontSize= " 11 " leading= " 13 " alignment= " RIGHT " /> \n '
tmp + = ' \t \t <paraStyle name= " P1 " fontName= " Helvetica-Bold " fontSize= " 12.0 " textColor= " gray " leading= " 14 " spaceBefore= " 12 " alignment= " LEFT " /> \n '
tmp + = ' \t \t <paraStyle name= " P2 " fontName= " Helvetica " fontSize= " 10.0 " leading= " 10 " alignment= " JUSTIFY " /> \n '
tmp + = ' \t \t <paraStyle name= " P3 " fontName= " Helvetica " fontSize= " 9 " leading= " 10 " spaceAfter= " 3 " alignment= " LEFT " /> \n '
tmp + = ' \t \t <paraStyle name= " P4 " fontName= " Helvetica " fontSize= " 8 " leading= " 9 " spaceAfter= " 3 " alignment= " JUSTIFY " /> \n '
tmp + = ' \t \t <paraStyle name= " texto_projeto " fontName= " Helvetica " fontSize= " 12.0 " leading= " 12 " spaceAfter= " 10 " alignment= " JUSTIFY " /> \n '
tmp + = ' \t \t <paraStyle name= " numOrdem " alignment= " CENTER " /> \n '
tmp + = ' \t </stylesheet> \n '
return tmp
def inf_basicas ( inf_basicas_dic ) :
"""
"""
tmp = " "
nom_sessao = inf_basicas_dic [ ' nom_sessao ' ]
num_sessao_plen = inf_basicas_dic [ " num_sessao_plen " ]
num_sessao_leg = inf_basicas_dic [ " num_sessao_leg " ]
num_legislatura = inf_basicas_dic [ " num_legislatura " ]
dat_inicio_sessao = inf_basicas_dic [ " dat_inicio_sessao " ]
hr_inicio_sessao = inf_basicas_dic [ " hr_inicio_sessao " ]
dat_fim_sessao = inf_basicas_dic [ " dat_fim_sessao " ]
hr_fim_sessao = inf_basicas_dic [ " hr_fim_sessao " ]
if hr_fim_sessao is None :
hr_fim_sessao = ' '
tmp + = ' \t \t <para style= " P1 " >Informações Básicas</para> \n '
tmp + = ' \t \t <para style= " P2 " > \n '
tmp + = ' \t \t \t <font color= " white " > </font> \n '
tmp + = ' \t \t </para> \n '
tmp + = ' \t \t <para style= " P2 " spaceAfter= " 5 " ><b>Tipo da Sessão: </b> ' + \
nom_sessao + ' </para> \n '
tmp + = ' \t \t <para style= " P2 " spaceAfter= " 5 " ><b>Abertura: </b> ' + \
dat_inicio_sessao + ' <b>- </b> ' + hr_inicio_sessao + ' </para> \n '
tmp + = ' \t \t <para style= " P2 " spaceAfter= " 5 " ><b>Encerramento: </b> ' + \
dat_fim_sessao + ' <b>- </b> ' + hr_fim_sessao + ' </para> \n '
return tmp
def mesa ( lst_mesa ) :
"""
"""
tmp = ' '
tmp + = ' \t \t <para style= " P1 " >Mesa Diretora</para> \n '
tmp + = ' \t \t <para style= " P2 " > \n '
tmp + = ' \t \t \t <font color= " white " > </font> \n '
tmp + = ' \t \t </para> \n '
for mesa in lst_mesa :
tmp + = ' \t \t <para style= " P2 " spaceAfter= " 5 " ><b> ' + \
str ( mesa [ ' des_cargo ' ] ) + ' :</b> ' + str ( mesa [ ' nom_parlamentar ' ]
) + ' / ' + str ( mesa [ ' sgl_partido ' ] ) + ' </para> \n '
return tmp
def presenca ( lst_presenca_sessao ) :
"""
"""
tmp = ' '
tmp + = ' \t \t <para style= " P1 " >Lista de Presença da Sessão</para> \n '
tmp + = ' \t \t <para style= " P2 " > \n '
tmp + = ' \t \t \t <font color= " white " > </font> \n '
tmp + = ' \t \t </para> \n '
for presenca in lst_presenca_sessao :
tmp + = ' \t \t <para style= " P2 " spaceAfter= " 5 " > ' + \
str ( presenca [ ' nom_parlamentar ' ] ) + ' / ' + \
str ( presenca [ ' sgl_partido ' ] ) + ' </para> \n '
return tmp
def expedientes ( lst_expedientes ) :
"""
"""
tmp = ' '
tmp + = ' \t \t <para style= " P1 " >Expedientes</para> \n '
tmp + = ' \t \t <para style= " P2 " > \n '
tmp + = ' \t \t \t <font color= " white " > </font> \n '
tmp + = ' \t \t </para> \n '
for expediente in lst_expedientes :
tmp + = ' \t \t <para style= " P2 " ><b> ' + \
expediente [ ' nom_expediente ' ] + ' : </b></para> \n ' + \
' <para style= " P2 " > ' + \
expediente [ ' txt_expediente ' ] + ' </para> \n '
tmp + = ' \t \t <para style= " P2 " > \n '
tmp + = ' \t \t \t <font color= " white " > </font> \n '
tmp + = ' \t \t </para> \n '
return tmp
def expediente_materia ( lst_expediente_materia ) :
"""
"""
tmp = ' '
tmp + = ' \t \t <para style= " P1 " >Matérias do Expediente</para> \n \n '
tmp + = ' \t \t <para style= " P2 " > \n '
tmp + = ' \t \t \t <font color= " white " > </font> \n '
tmp + = ' \t \t </para> \n '
tmp + = ' <blockTable style= " repeater " repeatRows= " 1 " > \n '
tmp + = ' <tr><td >Matéria</td><td>Ementa</td><td>Resultado da Votação</td></tr> \n '
for expediente_materia in lst_expediente_materia :
tmp + = ' <tr><td><para style= " P3 " ><b> ' + str ( expediente_materia [ ' num_ordem ' ] ) + ' </b> - ' + expediente_materia [ ' id_materia ' ] + ' </para> \n ' + ' <para style= " P3 " ><b>Turno: </b> ' + expediente_materia [
' des_turno ' ] + ' </para> \n ' + ' <para style= " P3 " ><b>Autor: </b> ' + expediente_materia [ ' nom_autor ' ] + ' </para></td> \n '
txt_ementa = expediente_materia [ ' txt_ementa ' ] . replace ( ' & ' , ' & ' )
tmp + = ' <td><para style= " P4 " > ' + txt_ementa + ' </para></td> \n '
tmp + = ' <td><para style= " P3 " ><b> ' + \
expediente_materia [ ' nom_resultado ' ] + ' </b></para> \n ' + ' <para style= " P3 " > ' + \
expediente_materia [ ' votacao_observacao ' ] + ' </para></td></tr> \n '
tmp + = ' \t \t </blockTable> \n '
return tmp
def oradores_expediente ( lst_oradores_expediente ) :
"""
"""
tmp = ' '
tmp + = ' \t \t <para style= " P1 " >Oradores do Expediente</para> \n '
tmp + = ' \t \t <para style= " P2 " > \n '
tmp + = ' \t \t \t <font color= " white " > </font> \n '
tmp + = ' \t \t </para> \n '
for orador_expediente in lst_oradores_expediente :
tmp + = ' \t \t <para style= " P2 " spaceAfter= " 5 " ><b> ' + str ( orador_expediente [ ' num_ordem ' ] ) + ' </b> - ' + orador_expediente [
' nom_parlamentar ' ] + ' / ' + str ( orador_expediente [ ' sgl_partido ' ] ) + ' </para> \n '
return tmp
def presenca_ordem_dia ( lst_presenca_ordem_dia ) :
"""
"""
tmp = ' '
tmp + = ' \t \t <para style= " P1 " >Lista de Presença da Ordem do Dia</para> \n '
tmp + = ' \t \t <para style= " P2 " > \n '
tmp + = ' \t \t \t <font color= " white " > </font> \n '
tmp + = ' \t \t </para> \n '
for presenca_ordem_dia in lst_presenca_ordem_dia :
tmp + = ' \t \t <para style= " P2 " spaceAfter= " 5 " > ' + \
str ( presenca_ordem_dia [ ' nom_parlamentar ' ] ) + ' / ' + \
str ( presenca_ordem_dia [ ' sgl_partido ' ] ) + ' </para> \n '
return tmp
def votacao ( lst_votacao ) :
"""
"""
tmp = ' '
tmp + = ' <para style= " P1 " >Matérias da Ordem do Dia</para> \n \n '
tmp + = ' \t \t <para style= " P2 " > \n '
tmp + = ' \t \t \t <font color= " white " > </font> \n '
tmp + = ' \t \t </para> \n '
tmp + = ' <blockTable style= " repeater " repeatRows= " 1 " > \n '
tmp + = ' <tr><td >Matéria</td><td>Ementa</td><td>Resultado da Votação</td></tr> \n '
for votacao in lst_votacao :
tmp + = ' <tr><td><para style= " P3 " ><b> ' + str ( votacao [ ' num_ordem ' ] ) + ' </b> - ' + votacao [ ' id_materia ' ] + ' </para> \n ' + ' <para style= " P3 " ><b>Turno:</b> ' + votacao [
' des_turno ' ] + ' </para> \n ' + ' <para style= " P3 " ><b>Autor: </b> ' + votacao [ ' nom_autor ' ] + ' </para></td> \n '
txt_ementa = votacao [ ' txt_ementa ' ] . replace ( ' & ' , ' & ' )
tmp + = ' <td><para style= " P4 " > ' + txt_ementa + ' </para></td> \n '
tmp + = ' <td><para style= " P3 " ><b> ' + \
votacao [ ' nom_resultado ' ] + ' </b></para> \n ' + ' <para style= " P3 " > ' + \
votacao [ ' votacao_observacao ' ] + ' </para></td></tr> \n '
tmp + = ' \t \t </blockTable> \n '
return tmp
def oradores ( lst_oradores ) :
"""
"""
tmp = ' '
tmp + = ' \t \t <para style= " P1 " >Oradores das Explicações Pessoais</para> \n '
tmp + = ' \t \t <para style= " P2 " > \n '
tmp + = ' \t \t \t <font color= " white " > </font> \n '
tmp + = ' \t \t </para> \n '
for orador in lst_oradores :
tmp + = ' \t \t <para style= " P2 " spaceAfter= " 5 " ><b> ' + \
str ( orador [ ' num_ordem ' ] ) + ' </b> - ' + orador [ ' nom_parlamentar ' ] + \
' / ' + str ( orador [ ' sgl_partido ' ] ) + ' </para> \n '
return tmp
def principal ( cabecalho_dic , rodape_dic , imagem , sessao , inf_basicas_dic , lst_mesa , lst_presenca_sessao , lst_expedientes , lst_expediente_materia , lst_oradores_expediente , lst_presenca_ordem_dia , lst_votacao , lst_oradores ) :
"""
"""
arquivoPdf = str ( int ( time . time ( ) * 100 ) ) + " .pdf "
tmp = ' '
tmp + = ' <?xml version= " 1.0 " encoding= " utf-8 " standalone= " no " ?> \n '
tmp + = ' <!DOCTYPE document SYSTEM " rml_1_0.dtd " > \n '
tmp + = ' <document filename= " relatorio.pdf " > \n '
tmp + = ' \t <template pageSize= " (21cm, 29.7cm) " title= " Sessao Plenaria " author= " Interlegis " allowSplitting= " 20 " > \n '
tmp + = ' \t \t <pageTemplate id= " first " > \n '
tmp + = ' \t \t \t <pageGraphics> \n '
tmp + = cabecalho ( inf_basicas_dic , imagem )
tmp + = rodape ( rodape_dic )
tmp + = ' \t \t \t </pageGraphics> \n '
tmp + = ' \t \t \t <frame id= " first " x1= " 2cm " y1= " 4cm " width= " 17cm " height= " 20.5cm " /> \n '
tmp + = ' \t \t </pageTemplate> \n '
tmp + = ' \t </template> \n '
tmp + = paraStyle ( )
tmp + = ' \t <story> \n '
tmp + = inf_basicas ( inf_basicas_dic )
tmp + = mesa ( lst_mesa )
tmp + = presenca ( lst_presenca_sessao )
tmp + = expedientes ( lst_expedientes )
tmp + = expediente_materia ( lst_expediente_materia )
tmp + = oradores_expediente ( lst_oradores_expediente )
tmp + = presenca_ordem_dia ( lst_presenca_ordem_dia )
tmp + = votacao ( lst_votacao )
tmp + = oradores ( lst_oradores )
tmp + = ' \t </story> \n '
tmp + = ' </document> \n '
tmp_pdf = parseString ( tmp )
return tmp_pdf
# if hasattr(context.temp_folder,arquivoPdf):
# context.temp_folder.manage_delObjects(ids=arquivoPdf)
# context.temp_folder.manage_addFile(arquivoPdf)
# arq=context.temp_folder[arquivoPdf]
# arq.manage_edit(title='Arquivo PDF temporario.',filedata=tmp_pdf,content_type='application/pdf')
# return "/temp_folder/"+arquivoPdf
# return principal(cabecalho, rodape, sessao, imagem, inf_basicas_dic)