##parameters=imagem, dic_rodape,dic_inf_basicas,dic_orig_externa,lst_mat_anexadas,lst_autoria,lst_des_iniciais,dic_tramitacoes,lst_relatorias,lst_numeracoes,lst_leg_citadas,lst_acessorios,sessao=''
"""relatorio_detalhe_materia.py
External method para gerar o arquivo rml do resultado da pesquisa de uma matéria
Autor: Leandro Gasparotto Valladares
Empresa: Interlegis
versão: 1.0
"""
import time
from cStringIO import StringIO
from trml2pdf import parseString
def cabecalho(dic_inf_basicas,imagem):
"""
Função que gera o código rml do cabeçalho da página
"""
tmp=''
tmp+='\t\t\t\t\n'
tmp+='\t\t\t\t2cm 24.5cm 19cm 24.5cm\n'
if dic_inf_basicas['nom_camara']!="" and dic_inf_basicas['nom_camara']!=None:
tmp+='\t\t\t\t\n'
tmp+='\t\t\t\t' + dic_inf_basicas['nom_camara'] + '\n'
tmp+='\t\t\t\t\n'
tmp+='\t\t\t\tSistema de Apoio ao Processo Legislativo\n'
if str(dic_inf_basicas['nom_projeto']) != "" and str(dic_inf_basicas['nom_projeto']) != None:
tmp+='\t\t\t\t\n'
tmp+='\t\t\t\t' + str(dic_inf_basicas['nom_projeto']) + '\n'
if str(dic_inf_basicas['cod_projeto']) != "" and str(dic_inf_basicas['cod_projeto']) != None:
tmp+='\t\t\t\t\n'
tmp+='\t\t\t\t' + str(dic_inf_basicas['cod_projeto']) + '\n'
return tmp
def rodape(dic_rodape):
"""
Função que gera o codigo rml do rodape da pagina.
"""
tmp=''
linha1 = dic_rodape['end_casa']
if dic_rodape['end_casa']!="" and dic_rodape['end_casa']!=None:
linha1 = linha1 + " - "
if dic_rodape['num_cep']!="" and dic_rodape['num_cep']!=None:
linha1 = linha1 + "CEP " + dic_rodape['num_cep']
if dic_rodape['nom_localidade']!="" and dic_rodape['nom_localidade']!=None:
linha1 = linha1 + " - " + dic_rodape['nom_localidade']
if dic_rodape['sgl_uf']!="" and dic_rodape['sgl_uf']!=None:
inha1 = linha1 + " " + dic_rodape['sgl_uf']
if dic_rodape['num_tel']!="" and dic_rodape['num_tel']!=None:
linha1 = linha1 + " Tel: "+ dic_rodape['num_tel']
if dic_rodape['end_web_casa']!="" and dic_rodape['end_web_casa']!=None:
linha2 = dic_rodape['end_web_casa']
if dic_rodape['end_email_casa']!="" and dic_rodape['end_email_casa']!=None:
linha2 = linha2 + " - E-mail: " + dic_rodape['end_email_casa']
if dic_rodape['data_emissao']!="" and dic_rodape['data_emissao']!=None:
data_emissao = dic_rodape['data_emissao']
tmp+='\t\t\t\t2cm 3.2cm 19cm 3.2cm\n'
tmp+='\t\t\t\t\n'
tmp+='\t\t\t\t' + data_emissao + '\n'
tmp+='\t\t\t\tPágina \n'
tmp+='\t\t\t\t' + linha1 + '\n'
tmp+='\t\t\t\t' + linha2 + '\n'
return tmp
def paraStyle():
"""Função que gera o código rml que define o estilo dos parágrafos"""
tmp=''
tmp+='\t\n'
tmp+='\t\t\n'
tmp+='\t\t\t\n'
tmp+='\t\t\t\n'
tmp+='\t\t\n'
tmp+='\t\t\n'
tmp+='\t\t\t\n'
tmp+='\t\t\n'
#titulo do parágrafo: é por default centralizado
tmp+='\t\t\n'
tmp+='\t\t\n'
tmp+='\t\t\n'
tmp+='\t\t\n'
tmp+='\t\n'
return tmp
def inf_basicas(dic_inf_basicas):
"""
Função que gera o código rml das funções básicas do relatório
"""
tmp=''
#Texto do projeto
texto_projeto = str(dic_inf_basicas['texto_projeto'])
if texto_projeto != "" and texto_projeto != None :
tmp+='\t\t' + texto_projeto.replace('&','&') + '\n'
#inÃcio das informações básicas
tmp+='\t\tInformações Básicas\n'
if str(dic_inf_basicas['apresentada']) != "" and str(dic_inf_basicas['apresentada']) != None:
tmp+='\t\tApresentada em: ' + str(dic_inf_basicas['apresentada']) + '\n'
if str(dic_inf_basicas['formato']) != "" and str(dic_inf_basicas['formato']) != None:
tmp+='\t\tFormato: ' + str(dic_inf_basicas['formato']) + '\n'
if dic_inf_basicas['publicada']==0:
tmp+='\t\tPublicada: Não\n'
else:
tmp+='\t\tPublicada: Sim\n'
if str(dic_inf_basicas['objeto']) != "" and str(dic_inf_basicas['objeto']) != None:
tmp+='\t\tObjeto: ' + str(dic_inf_basicas['objeto']) + '\n'
if dic_inf_basicas['tramitacao']==0:
tmp+='\t\tTramitação: Não\n'
else:
tmp+='\t\tTramitação: Sim\n'
if str(dic_inf_basicas['reg_tramitacao']) != "" and str(dic_inf_basicas['reg_tramitacao']) != None:
tmp+='\t\tRegime: ' + str(dic_inf_basicas['reg_tramitacao']) + '\n'
if str(dic_inf_basicas['prazo']) != "" and str(dic_inf_basicas['prazo']) != None:
tmp+='\t\tDias de prazo: ' + str(dic_inf_basicas['prazo']) + '\n'
if str(dic_inf_basicas['fim_prazo']) != "" and str(dic_inf_basicas['fim_prazo']) != None:
tmp+='\t\tData do fim do prazo: ' + str(dic_inf_basicas['fim_prazo']) + '\n'
if dic_inf_basicas['mat_complementar'] == 0:
tmp+='\t\tMatéria Complementar: Não\n'
else:
tmp+='\t\tMatéria Complementar: Sim\n'
if dic_inf_basicas['polemica'] == 0:
tmp+='\t\tPolêmica: Não\n'
else:
tmp+='\t\tPolêmica: Sim\n'
apelido = dic_inf_basicas['apelido']
if apelido != "" and apelido != None:
tmp+='\t\tApelido: ' + apelido.replace('&','&') + '\n'
indexacao = dic_inf_basicas['indexacao']
if indexacao != "" and indexacao != None:
tmp+='\t\tIndexação: ' + indexacao.replace('&','&') + '\n'
observacao = dic_inf_basicas['observacao']
if observacao != "" and observacao != None:
tmp+='\t\tObservação: ' + observacao.replace('&','&') + '\n'
return tmp
def orig_externa(dic_orig_externa):
"""
Função que gera o código rml da origem externa
"""
tmp=''
tmp+='\t\tOrigem Externa\n'
try:
if dic_orig_externa['local'] != "" and dic_orig_externa['local'] != None:
tmp+='\t\tLocal: ' + dic_orig_externa['local'] + '\n'
if dic_orig_externa['data'] != "" and dic_orig_externa['data'] != None:
tmp+='\t\tData: ' + dic_orig_externa['data'] + '\n'
if dic_orig_externa['tipo'] != "" and dic_orig_externa['tipo'] != None:
tmp+='\t\tTipo: ' + dic_orig_externa['tipo'] + '\n'
if dic_orig_externa['numero_ano'] != "" and dic_orig_externa['numero_ano'] != None:
tmp+='\t\tNúmero/Ano: ' + dic_orig_externa['numero_ano'] + '\n'
except: pass
return tmp
def mat_anexadas(lst_mat_anexadas):
tmp=''
tmp+='\t\tMatérias Anexadas\n'
for dic_mat in lst_mat_anexadas:
if dic_mat['nom_mat']!="" and dic_mat['nom_mat']!= None:
tmp+='\t\tNome da matéria: ' + dic_mat['nom_mat'] + '\n'
tmp+='\t\tData: ' + dic_mat['data'] + '\n'
tmp+='\t\tData final: ' + str(dic_mat['data_fim']) + '\n'
return tmp
def autoria(lst_autoria):
tmp=''
tmp+='\t\tAutores\n'
for dic_autor in lst_autoria:
if dic_autor['nom_autor'] != "" and dic_autor['nom_autor'] != None:
tmp+='\t\tNome do Autor: ' + dic_autor['nom_autor'] + '\n'
if dic_autor['nom_autor'] != "" and dic_autor['cargo'] != None:
tmp+='\t\tCargo: ' + dic_autor['cargo'] + '\n'
if dic_autor['nom_autor'] != "" and dic_autor['tipo'] != None:
tmp+='\t\tTipo: ' + dic_autor['tipo'] + '\n'
return tmp
def despachos_iniciais(lst_des_iniciais):
tmp=''
tmp+='\t\tDespachos Iniciais\n'
for dic_dados in lst_des_iniciais:
if dic_dados['nom_comissao']==None:
dic_dados['nom_comissao']=" "
tmp+='\t\tNome da comissão: ' + dic_dados['nom_comissao'] + '\n'
return tmp
def tramitacoes(dic_tramitacoes):
tmp=''
tmp+='\t\tÚltima Tramitação\n'
try:
tmp+='\t\tData Ação: ' + str(dic_tramitacoes['data']) + '\n'
tmp+='\t\tUnidade Local: ' + dic_tramitacoes['unidade'] + '\n'
tmp+='\t\tEncaminhada em: ' + str(dic_tramitacoes['data_enc']) + '\n'
tmp+='\t\tDestino: ' + dic_tramitacoes['destino'] + '\n'
tmp+='\t\tTurno: ' + dic_tramitacoes['turno'] + '\n'
tmp+='\t\tStatus: ' + dic_tramitacoes['status'] + '\n'
if dic_tramitacoes['urgente']==0:
tmp+='\t\tUrgente: Não\n'
else:
tmp+='\t\tUrgente: Sim\n'
tmp+='\t\tData do fim do prazo: ' + str(dic_tramitacoes['data_fim']) + '\n'
if dic_tramitacoes['texto_acao'] != "" and dic_tramitacoes['texto_acao'] != None :
tmp+='\t\tTexto da Ação: ' + dic_tramitacoes['texto_acao'].replace('&','&') + '\n'
except: pass
return tmp
def relatorias(lst_relatorias):
tmp=''
tmp+='\t\tRelatorias\n'
for dic_comissao in lst_relatorias:
tmp+='\t\tComissão: ' + dic_comissao['nom_comissao'] + '\n'
tmp+='\t\tData Designação: ' + str(dic_comissao['data_desig']) + '\n'
tmp+='\t\tParlamentar: ' + dic_comissao['parlamentar'] + '\n'
tmp+='\t\tData Destituição: ' + str(dic_comissao['data_dest']) + '\n'
tmp+='\t\tMotivo Fim Relatoria: ' + dic_comissao['motivo'] + '\n'
return tmp
def numeracoes(lst_numeracoes):
tmp=''
tmp+='\t\tNumerações\n'
for dic_dados in lst_numeracoes:
tmp+='\t\tNome: ' + dic_dados['nome'] + '\n'
tmp+='\t\tAno: ' + str(dic_dados['ano']) + '\n'
return tmp
def legislacoes_citadas(lst_leg_citadas):
tmp=''
tmp+='\t\tLegislações Citadas\n'
for dic_dados in lst_leg_citadas:
tmp+='\t\tTipo Norma: ' + str(dic_dados['nome_lei']) + '\n'
tmp+='\t\tDisposição: ' + str(dic_dados['disposicao']) + '\n'
tmp+='\t\tParte: ' + str(dic_dados['parte']) + '\n'
tmp+='\t\tLivro: ' + str(dic_dados['livro']) + '\n'
tmp+='\t\tTítulo: ' + str(dic_dados['titulo']) + '\n'
tmp+='\t\tCapítulo: ' + str(dic_dados['capitulo']) + '\n'
tmp+='\t\tSeção: ' + str(dic_dados['secao']) + '\n'
tmp+='\t\tSubseção: ' + str(dic_dados['subsecao']) + '\n'
tmp+='\t\tArtigo: ' + str(dic_dados['artigo']) + '\n'
tmp+='\t\tParágrafo: ' + str(dic_dados['paragrafo']) + '\n'
tmp+='\t\tInciso: ' + str(dic_dados['inciso']) + '\n'
tmp+='\t\tAlínea: ' + str(dic_dados['alinea']) + '\n'
tmp+='\t\tItem: ' + str(dic_dados['item']) + '\n'
return tmp
def documentos_acessorios(lst_acessorios):
tmp=''
tmp+='\t\tDocumentos Acessórios\n'
for dic_dados in lst_acessorios:
if dic_dados['tipo']!=None:
tmp+='\t\tTipo: ' + dic_dados['tipo'] + '\n'
if dic_dados['nome']!=None:
tmp+='\t\tNome: ' + dic_dados['nome'] + '\n'
tmp+='\t\tData: ' + dic_dados['data'] + '\n'
if dic_dados['autor']!=None:
tmp+='\t\tAutor: ' + dic_dados['autor'] + '\n'
if dic_dados['ementa']!=None:
tmp+='\t\tEmenta: ' + dic_dados['ementa'].replace('&','&') + '\n'
if dic_dados['indexacao']!=None:
tmp+='\t\tEmenta: ' + dic_dados['indexacao'].replace('&','&') + '\n'
return tmp
def principal(imagem, dic_rodape,dic_inf_basicas,dic_orig_externa,lst_mat_anexadas,lst_autoria,lst_des_iniciais,
dic_tramitacoes,lst_relatorias,lst_numeracoes,lst_leg_citadas,lst_acessorios,sessao=''):
"""
Função principal responsável por chamar as funções que irão gerar o código rml apropriado
"""
arquivoPdf=str(int(time.time()*100))+".pdf"
tmp=''
tmp+='\n'
tmp+='\n'
tmp+='\n'
tmp+='\t\n'
tmp+='\t\t\n'
tmp+='\t\t\t\n'
tmp+=cabecalho(dic_inf_basicas,imagem)
tmp+=rodape(dic_rodape)
tmp+='\t\t\t\n'
tmp+='\t\t\t\n'
tmp+='\t\t\n'
tmp+='\t\n'
tmp+=paraStyle()
tmp+='\t\n'
tmp+=inf_basicas(dic_inf_basicas)
tmp+=orig_externa(dic_orig_externa)
tmp+=mat_anexadas(lst_mat_anexadas)
tmp+=autoria(lst_autoria)
tmp+=despachos_iniciais(lst_des_iniciais)
tmp+=tramitacoes(dic_tramitacoes)
tmp+=relatorias(lst_relatorias)
tmp+=numeracoes(lst_numeracoes)
tmp+=legislacoes_citadas(lst_leg_citadas)
tmp+=documentos_acessorios(lst_acessorios)
tmp+='\t\n'
tmp+='\n'
tmp_pdf=parseString(tmp)
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 temporário.',filedata=tmp_pdf,content_type='application/pdf')
# try:
# tmp_pdf=parseString(unicode(tmp, 'utf-8'))
# except:
# tmp_pdf=parseString(unicode(tmp, 'utf-8'))
return "/temp_folder/"+arquivoPdf
return principal(imagem, dic_rodape,dic_inf_basicas,dic_orig_externa,lst_mat_anexadas,lst_autoria,lst_des_iniciais,
dic_tramitacoes,lst_relatorias,lst_numeracoes,lst_leg_citadas,lst_acessorios,sessao)