source: publico/il.sapl/trunk/il/sapl/skins/relatorios/pdf_sessao_plenaria_gerar.py @ 7875

Última Alteração nesse arquivo desde 7875 foi 7875, incluída por gustavolepri, 5 anos atrás

ignorando alguns arquivos

File size: 13.2 KB
Linha 
1## Script (Python) "pdf_sessao_plenaria_gerar"
2##bind container=container
3##bind context=context
4##bind namespace=
5##bind script=script
6##bind subpath=traverse_subpath
7##parameters=rodape_dic, 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, sessao=''
8"""Script para geração do PDF das sessoes plenarias
9   Autor: Gustavo Lepri
10   Atualizado por Luciano De Fázio - 22/03/2012
11   versão: 1.0
12"""
13from trml2pdf import parseString
14from cStringIO import StringIO
15import time
16
17def cabecalho(inf_basicas_dic,imagem):
18    """
19    """
20    tmp=''
21    tmp+='\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n'
22    tmp+='\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n'
23    tmp+='\t\t\t\t<setFont name="Helvetica-Bold" size="16"/>\n'
24    tmp+='\t\t\t\t<drawString x="5cm" y="27.1cm">' + str(inf_basicas_dic["nom_camara"]) + '</drawString>\n'
25    tmp+='\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
26    tmp+='\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
27    tmp+='\t\t\t\t<setFont name="Helvetica-Bold" size="12"/>\n'
28    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'
29    return tmp
30
31def rodape(rodape_dic):
32    """
33    """
34    tmp=''
35    linha1 = rodape_dic['end_casa']
36    linha2 = ''
37    if rodape_dic['end_casa']!="" and rodape_dic['end_casa']!=None:
38        linha1 = linha1 + " - "
39    if rodape_dic['num_cep']!="" and rodape_dic['num_cep']!=None:
40        linha1 = linha1 + "CEP " + rodape_dic['num_cep']
41    if rodape_dic['nom_localidade']!="" and rodape_dic['nom_localidade']!=None:
42        linha1 = linha1 + " - " + rodape_dic['nom_localidade']
43    if rodape_dic['sgl_uf']!="" and rodape_dic['sgl_uf']!=None:
44        linha1 = linha1 + " " + rodape_dic['sgl_uf']
45    if rodape_dic['num_tel']!="" and rodape_dic['num_tel']!=None:
46        linha1 = linha1 + " Tel: "+ rodape_dic['num_tel']
47    if rodape_dic['end_web_casa']!="" and rodape_dic['end_web_casa']!=None:
48        linha2 = rodape_dic['end_web_casa']
49    if rodape_dic['end_email_casa']!="" and rodape_dic['end_email_casa']!=None:
50        linha2 = linha2 + " - E-mail: " + rodape_dic['end_email_casa']
51    if rodape_dic['data_emissao']!="" and rodape_dic['data_emissao']!=None:
52        data_emissao = rodape_dic['data_emissao']
53
54    tmp+='\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
55    tmp+='\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
56    tmp+='\t\t\t\t<drawString x="2cm" y="3.3cm">' + data_emissao + '</drawString>\n'
57    tmp+='\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
58    tmp+='\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + linha1 + '</drawCentredString>\n'
59    tmp+='\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + linha2 + '</drawCentredString>\n'
60
61    return tmp
62
63def paraStyle():
64    """
65    """
66    tmp=''
67    tmp+='\t<stylesheet>\n'
68    tmp+='\t\t<blockTableStyle id="repeater" spaceBefore="12">\n'
69    tmp+='\t\t\t<lineStyle kind="OUTLINE" colorName="black" thickness="0.5"/>\n'
70    tmp+='\t\t\t<lineStyle kind="GRID" colorName="gray" thickness="0.25"/>\n'
71    tmp+='\t\t\t<blockFont name="Helvetica-Bold" size="8" leading="8" start="0,0" stop="-1,0"/>\n'
72    tmp+='\t\t\t<blockBottomPadding length="1"/>\n'
73    tmp+='\t\t\t<blockBackground colorName="silver" start="0,0" stop="-1,0"/>\n'
74    tmp+='\t\t\t<lineStyle kind="LINEBELOW" colorName="black" start="0,0" stop="-1,0" thickness="0.5"/>\n'
75    tmp+='\t\t\t<!--body section-->\n'
76    tmp+='\t\t\t<blockFont name="Helvetica" size="8" leading="9" start="0,1" stop="-1,-1"/>\n'
77    tmp+='\t\t\t<blockTopPadding length="1" start="0,1" stop="-1,-1"/>\n'
78    tmp+='\t\t\t<blockAlignment value="LEFT" start="1,1" stop="-1,-1"/>\n'
79    tmp+='\t\t\t<blockValign value="TOP"/>\n'
80    tmp+='\t\t</blockTableStyle>\n'
81
82    tmp+='\t\t<blockTableStyle id="votacao">\n'
83    tmp+='\t\t\t<blockFont name="Helvetica" size="8" leading="9" start="0,0" stop="-1,0"/>\n'
84    tmp+='\t\t\t<blockBackground colorName="silver" start="0,0" stop="3,0" />\n'
85    tmp+='\t\t\t<lineStyle kind="GRID" colorName="silver" />\n'
86    tmp+='\t\t\t<lineStyle kind="LINEBELOW" colorName="black" start="0,0" stop="-1,0" thickness="0.5"/>\n'
87    tmp +='\t\t\t<blockAlignment value="LEFT"/>\n'
88    tmp+='\t\t\t<blockValign value="TOP"/>\n'
89    tmp+='\t\t</blockTableStyle>\n'
90    tmp+='\t\t<initialize>\n'
91    tmp+='\t\t\t<paraStyle name="all" alignment="justify"/>\n'
92    tmp+='\t\t</initialize>\n'
93    tmp+='\t\t<paraStyle name="style.Title" fontName="Helvetica" fontSize="11" leading="13" alignment="RIGHT"/>\n'
94    tmp+='\t\t<paraStyle name="P1" fontName="Helvetica-Bold" fontSize="12.0" textColor="gray" leading="14" spaceBefore="12" alignment="LEFT"/>\n'
95    tmp+='\t\t<paraStyle name="P2" fontName="Helvetica" fontSize="10.0" leading="10" alignment="JUSTIFY"/>\n'
96    tmp+='\t\t<paraStyle name="P3" fontName="Helvetica" fontSize="9" leading="10" spaceAfter="3" alignment="LEFT"/>\n'
97    tmp+='\t\t<paraStyle name="P4" fontName="Helvetica" fontSize="8" leading="9" spaceAfter="3" alignment="JUSTIFY"/>\n'
98    tmp+='\t\t<paraStyle name="texto_projeto" fontName="Helvetica" fontSize="12.0" leading="12" spaceAfter="10" alignment="JUSTIFY"/>\n'
99    tmp+='\t\t<paraStyle name="numOrdem" alignment="CENTER"/>\n'
100    tmp+='\t</stylesheet>\n'
101
102    return tmp
103
104def inf_basicas(inf_basicas_dic):
105    """
106    """
107    tmp=""
108    nom_sessao = inf_basicas_dic['nom_sessao']
109    num_sessao_plen = inf_basicas_dic["num_sessao_plen"]
110    num_sessao_leg = inf_basicas_dic["num_sessao_leg"]
111    num_legislatura = inf_basicas_dic["num_legislatura"]
112    dat_inicio_sessao = inf_basicas_dic["dat_inicio_sessao"]
113    hr_inicio_sessao =  inf_basicas_dic["hr_inicio_sessao"]
114    dat_fim_sessao = inf_basicas_dic["dat_fim_sessao"]
115    hr_fim_sessao = inf_basicas_dic["hr_fim_sessao"]
116    if hr_fim_sessao is None:
117        hr_fim_sessao = ''
118
119    tmp+='\t\t<para style="P1">Informações Básicas</para>\n'
120    tmp+='\t\t<para style="P2">\n'
121    tmp+='\t\t\t<font color="white"> </font>\n'
122    tmp+='\t\t</para>\n'
123    tmp+='\t\t<para style="P2" spaceAfter="5"><b>Tipo da Sessão: </b> ' + nom_sessao + '</para>\n'
124    tmp+='\t\t<para style="P2" spaceAfter="5"><b>Abertura: </b> ' + dat_inicio_sessao + ' <b>- </b> ' + hr_inicio_sessao + '</para>\n'
125    tmp+='\t\t<para style="P2" spaceAfter="5"><b>Encerramento: </b> ' + dat_fim_sessao + ' <b>- </b> ' + hr_fim_sessao + '</para>\n'
126
127    return tmp
128
129def mesa(lst_mesa):
130    """
131
132    """
133    tmp=''
134    tmp+='\t\t<para style="P1">Mesa Diretora</para>\n'
135    tmp+='\t\t<para style="P2">\n'
136    tmp+='\t\t\t<font color="white"> </font>\n'
137    tmp+='\t\t</para>\n'
138    for mesa in lst_mesa:
139        tmp+='\t\t<para style="P2" spaceAfter="5"><b>'+ str(mesa['des_cargo']) +':</b> ' + str(mesa['nom_parlamentar']) + '/' + str(mesa['sgl_partido']) +'</para>\n'
140    return tmp
141
142def presenca(lst_presenca_sessao):
143    """
144
145    """
146    tmp = ''
147    tmp+='\t\t<para style="P1">Lista de Presença da Sessão</para>\n'
148    tmp+='\t\t<para style="P2">\n'
149    tmp+='\t\t\t<font color="white"> </font>\n'
150    tmp+='\t\t</para>\n'
151    for presenca in lst_presenca_sessao:
152        tmp+='\t\t<para style="P2" spaceAfter="5">'+ str(presenca['nom_parlamentar']) + '/' + str(presenca['sgl_partido']) +'</para>\n'
153    return tmp
154
155def expedientes(lst_expedientes):
156    """
157
158    """
159    tmp = ''
160    tmp+='\t\t<para style="P1">Expedientes</para>\n'
161    tmp+='\t\t<para style="P2">\n'
162    tmp+='\t\t\t<font color="white"> </font>\n'
163    tmp+='\t\t</para>\n'
164    for expediente in lst_expedientes:
165        tmp+='\t\t<para style="P2"><b>' + expediente['nom_expediente'] +': </b></para>\n' + '<para style="P2">'  + str(expediente['txt_expediente']) +'</para>\n'
166        tmp+='\t\t<para style="P2">\n'
167        tmp+='\t\t\t<font color="white"> </font>\n'
168        tmp+='\t\t</para>\n'
169    return tmp
170
171def expediente_materia(lst_expediente_materia):
172    """
173    """
174    tmp = ''
175    tmp+='\t\t<para style="P1">Matérias do Expediente</para>\n\n'
176    tmp+='\t\t<para style="P2">\n'
177    tmp+='\t\t\t<font color="white"> </font>\n'
178    tmp+='\t\t</para>\n'
179    tmp+='<blockTable style="repeater" repeatRows="1">\n'
180    tmp+='<tr><td >Matéria</td><td>Ementa</td><td>Resultado da Votação</td></tr>\n'
181    for expediente_materia in lst_expediente_materia:
182        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'
183        txt_ementa = expediente_materia['txt_ementa'].replace('&','&amp;')
184        tmp+='<td><para style="P4">' + txt_ementa + '</para></td>\n'
185        tmp+='<td><para style="P3"><b>' + expediente_materia['nom_resultado'] + '</b></para>\n' + '<para style="P3">' +  expediente_materia['votacao_observacao'] + '</para></td></tr>\n'
186
187    tmp+='\t\t</blockTable>\n'
188    return tmp
189
190def oradores_expediente(lst_oradores_expediente):
191    """
192
193    """
194    tmp = ''
195    tmp+='\t\t<para style="P1">Oradores do Expediente</para>\n'
196    tmp+='\t\t<para style="P2">\n'
197    tmp+='\t\t\t<font color="white"> </font>\n'
198    tmp+='\t\t</para>\n'
199    for orador_expediente in lst_oradores_expediente:
200        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'
201    return tmp
202
203def presenca_ordem_dia(lst_presenca_ordem_dia):
204    """
205
206    """
207    tmp = ''
208    tmp+='\t\t<para style="P1">Lista de Presença da Ordem do Dia</para>\n'
209    tmp+='\t\t<para style="P2">\n'
210    tmp+='\t\t\t<font color="white"> </font>\n'
211    tmp+='\t\t</para>\n'
212    for presenca_ordem_dia in lst_presenca_ordem_dia:
213        tmp+='\t\t<para style="P2" spaceAfter="5">'+ str(presenca_ordem_dia['nom_parlamentar']) + '/' + str(presenca_ordem_dia['sgl_partido']) +'</para>\n'
214    return tmp
215
216def votacao(lst_votacao):
217    """
218    """
219
220    tmp = ''
221    tmp+='<para style="P1">Matérias da Ordem do Dia</para>\n\n'
222    tmp+='\t\t<para style="P2">\n'
223    tmp+='\t\t\t<font color="white"> </font>\n'
224    tmp+='\t\t</para>\n'
225    tmp+='<blockTable style="repeater" repeatRows="1">\n'
226    tmp+='<tr><td >Matéria</td><td>Ementa</td><td>Resultado da Votação</td></tr>\n'
227    for votacao in lst_votacao:
228        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'
229        txt_ementa = votacao['txt_ementa'].replace('&','&amp;')
230        tmp+='<td><para style="P4">' + txt_ementa + '</para></td>\n'
231        tmp+='<td><para style="P3"><b>' + votacao['nom_resultado'] + '</b></para>\n' + '<para style="P3">' +  votacao['votacao_observacao'] + '</para></td></tr>\n'
232
233    tmp+='\t\t</blockTable>\n'
234    return tmp
235
236def oradores(lst_oradores):
237    """
238
239    """
240    tmp = ''
241    tmp+='\t\t<para style="P1">Oradores das Explicações Pessoais</para>\n'
242    tmp+='\t\t<para style="P2">\n'
243    tmp+='\t\t\t<font color="white"> </font>\n'
244    tmp+='\t\t</para>\n'
245    for orador in lst_oradores:
246        tmp+='\t\t<para style="P2" spaceAfter="5"><b>'+ str(orador['num_ordem']) +'</b> - ' + orador['nom_parlamentar'] + '/' + str(orador['sgl_partido']) +'</para>\n'
247    return tmp
248
249def principal(cabecalho, rodape, sessao, imagem, inf_basicas_dic):
250    """
251    """
252
253    arquivoPdf=str(int(time.time()*100))+".pdf"
254
255    tmp=''
256    tmp+='<?xml version="1.0" encoding="utf-8" standalone="no" ?>\n'
257    tmp+='<!DOCTYPE document SYSTEM "rml_1_0.dtd">\n'
258    tmp+='<document filename="relatorio.pdf">\n'
259    tmp+='\t<template pageSize="(21cm, 29.7cm)" title="Sessao Plenaria" author="Interlegis" allowSplitting="20">\n'
260    tmp+='\t\t<pageTemplate id="first">\n'
261    tmp+='\t\t\t<pageGraphics>\n'
262    tmp+=cabecalho(inf_basicas_dic,imagem)
263    tmp+=rodape(rodape_dic)
264    tmp+='\t\t\t</pageGraphics>\n'
265    tmp+='\t\t\t<frame id="first" x1="2cm" y1="4cm" width="17cm" height="20.5cm"/>\n'
266    tmp+='\t\t</pageTemplate>\n'
267    tmp+='\t</template>\n'
268    tmp+=paraStyle()
269    tmp+='\t<story>\n'
270    tmp+=inf_basicas(inf_basicas_dic)
271    tmp+=mesa(lst_mesa)
272    tmp+=presenca(lst_presenca_sessao)
273    tmp+=expedientes(lst_expedientes)
274    tmp+=expediente_materia(lst_expediente_materia)
275    tmp+=oradores_expediente(lst_oradores_expediente)
276    tmp+=presenca_ordem_dia(lst_presenca_ordem_dia)
277    tmp+=votacao(lst_votacao)
278    tmp+=oradores(lst_oradores)
279    tmp+='\t</story>\n'
280    tmp+='</document>\n'
281    tmp_pdf=parseString(tmp)
282
283    if hasattr(context.temp_folder,arquivoPdf):
284        context.temp_folder.manage_delObjects(ids=arquivoPdf)
285    context.temp_folder.manage_addFile(arquivoPdf)
286    arq=context.temp_folder[arquivoPdf]
287    arq.manage_edit(title='Arquivo PDF temporario.',filedata=tmp_pdf,content_type='application/pdf')
288
289    return "/temp_folder/"+arquivoPdf
290
291return principal(cabecalho, rodape, sessao, imagem, inf_basicas_dic)
Note: Veja TracBrowser para ajuda no uso do navegador do trac.
 

The contents and data of this website are published under license:
Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual.