##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 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 += 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) 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 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)