# #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 os import time import logging from xml.sax.saxutils import escape from django.template.defaultfilters import safe from django.utils.html import strip_tags from trml2pdf import parseString from sapl.sessao.models import ResumoOrdenacao def cabecalho(inf_basicas_dic, imagem): """ """ tmp = '' if os.path.isfile(imagem): tmp += '\t\t\t\t\n' tmp += '\t\t\t\t2cm 25.4cm 19cm 25.4cm\n' tmp += '\t\t\t\t\n' tmp += '\t\t\t\t' + \ str(inf_basicas_dic["nom_camara"]) + '\n' tmp += '\t\t\t\t\n' tmp += '\t\t\t\tSistema de Apoio ao Processo Legislativo\n' tmp += '\t\t\t\t\n' tmp += '\t\t\t\tResumo 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 \n' tmp += '\t\t\t\t' + \ str(inf_basicas_dic['num_legislatura']) + \ ' Legislatura \n' return tmp def rodape(rodape_dic): tmp = '' tmp += '\t\t\t\t2cm 3.2cm 19cm 3.2cm\n' tmp += '\t\t\t\t\n' tmp += '\t\t\t\t' + \ rodape_dic[2] + '\n' tmp += '\t\t\t\tPágina \n' tmp += '\t\t\t\t' + \ rodape_dic[0] + '\n' tmp += '\t\t\t\t' + \ rodape_dic[1] + '\n' return tmp def paraStyle(): """ """ tmp = '' tmp += '\t\n' tmp += '\t\t\n' tmp += '\t\t\t\n' tmp += '\t\t\t\n' tmp += '\t\t\t\n' tmp += '\t\t\t\n' tmp += '\t\t\t\n' tmp += '\t\t\t\n' tmp += '\t\t\t\n' tmp += '\t\t\t\n' tmp += '\t\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\t\n' tmp += '\t\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\t\n' tmp += '\t\t\n' tmp += '\t\t\n' tmp += '\t\t\t\n' tmp += '\t\t\n' tmp += '\t\t\n' tmp += '\t\t\n' tmp += '\t\t\n' tmp += '\t\t\n' tmp += '\t\t\n' tmp += '\t\t\n' tmp += '\t\t\n' tmp += '\t\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 = '' if nom_sessao or dat_inicio_sessao or hr_inicio_sessao \ or dat_fim_sessao or hr_fim_sessao: tmp += '\t\tInformações Básicas\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' if nom_sessao: tmp += '\t\tTipo da Sessão: ' + \ nom_sessao + '\n' if hr_inicio_sessao: tmp += '\t\tAbertura: ' + \ dat_inicio_sessao + ' - ' + hr_inicio_sessao + '\n' if dat_fim_sessao or hr_fim_sessao: tmp += '\t\tEncerramento: ' + \ dat_fim_sessao + ' - ' + hr_fim_sessao + '\n' if inf_basicas_dic.get('tema_solene'): tmp += '\t\tTema da Sessão Solene: ' + \ inf_basicas_dic['tema_solene'] + '\n' return tmp def multimidia(cont_mult_dic): """ """ tmp = "" mul_audio = cont_mult_dic['multimidia_audio'] mul_video = cont_mult_dic['multimidia_video'] if mul_audio or mul_video: tmp += '\t\tConteúdo Multimídia\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' if mul_audio: tmp += '\t\tAudio: ' + mul_audio + '\n' if mul_video: tmp += '\t\tVideo: ' + mul_video + '\n' return tmp def mesa(lst_mesa): tmp = '' if lst_mesa: tmp += '\t\tMesa Diretora\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' for mesa in lst_mesa: tmp += '\t\t' + \ str(mesa['des_cargo']) + ': ' + str(mesa['nom_parlamentar'] ) + '/' + str(mesa['sgl_partido']) + '\n' return tmp def presenca(lst_presenca_sessao, lst_ausencia_sessao): tmp = '' if lst_presenca_sessao or lst_ausencia_sessao: if lst_ausencia_sessao: tmp += '\t\tLista de Presença da Sessão\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' for presenca in lst_presenca_sessao: tmp += '\t\t' + \ str(presenca['nom_parlamentar']) + '/' + \ str(presenca['sgl_partido']) + '\n' if lst_ausencia_sessao: tmp += '\t\tJustificativas de Ausência da Sessão\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' tmp += '\n' tmp += 'ParlamentarJustificativaAusente em\n' for ausencia in lst_ausencia_sessao: tmp += '' + \ str(ausencia['parlamentar']) + ' ' + \ str(ausencia['justificativa']) + '' + \ str(ausencia['tipo']) + '\n' tmp += '' return tmp def correspondencias(lst_correspondencias): tmp = '' if lst_correspondencias: tmp += '\t\tCorrespondências\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' tmp += '\n' tmp += 'TipoDocumentoInteressadoAssunto\n' for c in lst_correspondencias: tmp += '' tmp += '' + \ escape(str(c['tipo'])) + '\n' tmp += '' + escape(str(c['epigrafe'])) + \ ' - ' + escape(str(c['data'])) + '\n' tmp += '' + \ escape(str(c['interessado'] or '')) + '\n' tmp += '' + \ escape(str(c['assunto'] or '')) + '\n' tmp += '\n' tmp += '\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' return tmp def expedientes(lst_expedientes): tmp = '' if lst_expedientes: tmp += '\t\tExpedientes\n' tmp += '\t\t\n' tmp += '\t\t\t \n' tmp += '\t\t\n' for expediente in lst_expedientes: if expediente['txt_expediente']: tmp += '\t\t' + '
' + \ expediente['nom_expediente'] + ':
\n' + \ '' + \ expediente['txt_expediente'] + '\n' tmp += '\t\t\n' tmp += '\t\t\t \n' tmp += '\t\t\n' return tmp def expediente_materia(lst_expediente_materia): tmp = '' if lst_expediente_materia: tmp += '\t\tMatérias do Expediente\n\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' tmp += '>\n' tmp += 'MatériaEmentaResultado da Votação\n' for expediente_materia in lst_expediente_materia: tmp += '' + str(expediente_materia['num_ordem']) + ' - ' + expediente_materia['id_materia'] + '\n' + 'Turno: ' + expediente_materia[ 'des_turno'] + '\n' + '' + expediente_materia['num_autores'] + ': ' + str(expediente_materia['nom_autor']) + '\n' txt_ementa = expediente_materia['txt_ementa'].replace('&', '&') # txt_ementa = dont_break_out(expediente_materia['txt_ementa']) # if len(txt_ementa) > 800: # txt_ementa = txt_ementa[:800] + "..." tmp += '' + txt_ementa + '' + '' + expediente_materia['ordem_observacao'] + '\n' tmp += '' + \ str(expediente_materia['nom_resultado']) + \ '\n' + '' if expediente_materia['votacao_observacao'] != txt_ementa: tmp += str(expediente_materia['votacao_observacao']) else: tmp += ' ' tmp += '\n' tmp += '\t\t\n' return tmp def expediente_materia_vot_nom(lst_expediente_materia_vot_nom): tmp = '' if lst_expediente_materia_vot_nom: tmp += '\t\tVotações Nominais - Matérias do Expediente\n\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' tmp += '\n' tmp += 'MatériaVotos\n' for expediente_materia_vot_nom in lst_expediente_materia_vot_nom: tmp += '' + str(expediente_materia_vot_nom['titulo']) + '' if expediente_materia_vot_nom['votos']: tmp += '' for v in expediente_materia_vot_nom['votos']: tmp += '' + str(v.parlamentar) + ' - ' + v.voto + '' tmp += '' else: tmp += 'Matéria não votada' tmp += '\n' tmp += '\t\t\n' return tmp def oradores_expediente(lst_oradores_expediente): tmp = '' if lst_oradores_expediente: tmp += '\t\tOradores do Expediente\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' for orador_expediente in lst_oradores_expediente: tmp += '\t\t' + str(orador_expediente[ 'num_ordem']) + ' - ' + orador_expediente[ 'nom_parlamentar'] + '/' + str(orador_expediente[ 'sgl_partido']) + ' - ' + str(orador_expediente[ 'observacao']) + '\n' return tmp def presenca_ordem_dia(lst_presenca_ordem_dia): tmp = '' if lst_presenca_ordem_dia: tmp += '\t\tLista de Presença da Ordem do Dia\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' for presenca_ordem_dia in lst_presenca_ordem_dia: tmp += '\t\t' + \ str(presenca_ordem_dia['nom_parlamentar']) + '/' + \ str(presenca_ordem_dia['sgl_partido']) + '\n' return tmp def votacao(lst_votacao): tmp = '' if lst_votacao: tmp += 'Matérias da Ordem do Dia\n\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' tmp += '\n' tmp += 'MatériaEmentaResultado da Votação\n' for votacao in lst_votacao: tmp += '' + str(votacao['num_ordem']) + ' - ' + votacao['id_materia'] + '\n' + 'Turno: ' + votacao[ 'des_turno'] + '\n' + '' + votacao['num_autores'] + ': ' + str(votacao['nom_autor']) + '\n' txt_ementa = votacao['txt_ementa'].replace('&', '&') if len(txt_ementa) > 1000: txt_ementa = txt_ementa[:1000] + "..." tmp += '' + txt_ementa + '' + '' + votacao['ordem_observacao'] + '\n' tmp += '' + \ str(votacao['nom_resultado']) + \ '\n' + '' if votacao['votacao_observacao'] != txt_ementa: tmp += str(votacao['votacao_observacao']) else: tmp += ' ' tmp += '\n' tmp += '\t\t\n' return tmp def votacao_vot_nom(lst_votacao_vot_nom): tmp = '' if lst_votacao_vot_nom: tmp += '\t\tVotações Nominais - Matérias da Ordem do Dia\n\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' tmp += '\n' tmp += 'MatériaVotos\n' for votacao_vot_nom in lst_votacao_vot_nom: tmp += '' + str(votacao_vot_nom['titulo']) + '' if votacao_vot_nom['votos']: tmp += '' for v in votacao_vot_nom['votos']: tmp += '' + str(v.parlamentar) + ' - ' + v.voto + '' tmp += '' else: tmp += 'Matéria não votada' tmp += '\n' tmp += '\t\t\n' return tmp def oradores_ordemdia(lst_oradores_ordemdia): tmp = '' if lst_oradores_ordemdia: tmp += '\t\tOradores da Ordem do Dia\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' for orador_ordemdia in lst_oradores_ordemdia: tmp += '\t\t' + \ str(orador_ordemdia['num_ordem']) + ' - ' + \ orador_ordemdia['nome_parlamentar'] + '/' + \ str(orador_ordemdia['sigla']) + ' - ' + \ str(orador_ordemdia['observacao']) + '\n' return tmp def oradores(lst_oradores): tmp = '' if lst_oradores: tmp += '\t\tOradores das Explicações Pessoais\n' tmp += '\t\t\n' tmp += '\t\t\t
\n' tmp += '\t\t
\n' for orador in lst_oradores: tmp += '\t\t' + \ str(orador['num_ordem']) + ' - ' + orador['nom_parlamentar'] + \ '/' + str(orador['sgl_partido']) + '\n' return tmp def ocorrencias(lst_ocorrencias): tmp = '' if lst_ocorrencias: tmp += '\t\tOcorrências da Sessão\n' tmp += '\t\t\n' tmp += '\t\t\t \n' tmp += '\t\t\n' for ocorrencia in lst_ocorrencias: tmp += '\t\t' + \ str(ocorrencia.conteudo) + '\n' tmp += '\t\t\n' tmp += '\t\t\t \n' tmp += '\t\t\n' return tmp def consideracoes(lst_consideracoes): tmp = '' if lst_consideracoes: tmp += '\t\tConsideracoes Finais\n' tmp += '\t\t\n' tmp += '\t\t\t \n' tmp += '\t\t\n' for consideracoes in lst_consideracoes: tmp += '\t\t' + \ str(consideracoes.conteudo) + '\n' tmp += '\t\t\n' tmp += '\t\t\t \n' tmp += '\t\t\n' return tmp def principal(rodape_dic, imagem, inf_basicas_dic, cont_mult_dic, lst_mesa, lst_presenca_sessao, lst_ausencia_sessao, lst_correspondencias, lst_expedientes, lst_expediente_materia, lst_expediente_materia_vot_nom, lst_oradores_expediente, lst_presenca_ordem_dia, lst_votacao, lst_votacao_vot_nom, lst_oradores_ordemdia, lst_oradores, lst_ocorrencias, lst_consideracoes): """ """ arquivoPdf = str(int(time.time() * 100)) + ".pdf" logger = logging.getLogger(__name__) tmp = '' tmp += '\n' tmp += '\n' tmp += '\n' tmp += '\t\n' tmp += paraStyle() tmp += '\t\n' ordenacao = ResumoOrdenacao.objects.first() dict_ord_template = { 'cont_mult': multimidia(cont_mult_dic), 'correspondencia': correspondencias(lst_correspondencias), 'exp': expedientes(lst_expedientes), 'id_basica': inf_basicas(inf_basicas_dic), 'lista_p': presenca(lst_presenca_sessao, lst_ausencia_sessao), 'lista_p_o_d': presenca_ordem_dia(lst_presenca_ordem_dia), 'mat_exp': expediente_materia(lst_expediente_materia), 'v_n_mat_exp': expediente_materia_vot_nom(lst_expediente_materia_vot_nom), 'mat_o_d': votacao(lst_votacao), 'v_n_mat_o_d': votacao_vot_nom(lst_votacao_vot_nom), 'mesa_d': mesa(lst_mesa), 'oradores_exped': oradores_expediente(lst_oradores_expediente), 'oradores_o_d': oradores_ordemdia(lst_oradores_ordemdia), 'oradores_expli': oradores(lst_oradores), 'ocorr_sessao': ocorrencias(lst_ocorrencias), 'cons_finais': consideracoes(lst_consideracoes) } if ordenacao: try: tmp += dict_ord_template[ordenacao.primeiro] tmp += dict_ord_template[ordenacao.segundo] tmp += dict_ord_template[ordenacao.terceiro] tmp += dict_ord_template[ordenacao.quarto] tmp += dict_ord_template[ordenacao.quinto] tmp += dict_ord_template[ordenacao.sexto] tmp += dict_ord_template[ordenacao.setimo] tmp += dict_ord_template[ordenacao.oitavo] tmp += dict_ord_template[ordenacao.nono] tmp += dict_ord_template[ordenacao.decimo] tmp += dict_ord_template[ordenacao.decimo_primeiro] tmp += dict_ord_template[ordenacao.decimo_segundo] tmp += dict_ord_template[ordenacao.decimo_terceiro] tmp += dict_ord_template[ordenacao.decimo_quarto] tmp += dict_ord_template[ordenacao.decimo_quinto] tmp += dict_ord_template[ordenacao.decimo_sexto] except KeyError as e: logger.error("KeyError: " + str(e) + ". Erro ao tentar utilizar " "configuração de ordenação. Utilizando ordenação padrão.") tmp += inf_basicas(inf_basicas_dic) tmp += multimidia(cont_mult_dic) tmp += mesa(lst_mesa) tmp += presenca(lst_presenca_sessao, lst_ausencia_sessao) tmp += correspondencias(lst_correspondencias) tmp += expedientes(lst_expedientes) tmp += expediente_materia(lst_expediente_materia) tmp += expediente_materia_vot_nom(lst_expediente_materia_vot_nom) tmp += oradores_expediente(lst_oradores_expediente) tmp += presenca_ordem_dia(lst_presenca_ordem_dia) tmp += votacao(lst_votacao) tmp += votacao_vot_nom(lst_votacao_vot_nom) tmp += oradores_ordemdia(lst_oradores_ordemdia) tmp += oradores(lst_oradores) tmp += ocorrencias(lst_ocorrencias) tmp += consideracoes(lst_consideracoes) else: tmp += inf_basicas(inf_basicas_dic) tmp += multimidia(cont_mult_dic) tmp += mesa(lst_mesa) tmp += presenca(lst_presenca_sessao, lst_ausencia_sessao) tmp += correspondencias(lst_correspondencias) tmp += expedientes(lst_expedientes) tmp += expediente_materia(lst_expediente_materia) tmp += expediente_materia_vot_nom(lst_expediente_materia_vot_nom) tmp += oradores_expediente(lst_oradores_expediente) tmp += presenca_ordem_dia(lst_presenca_ordem_dia) tmp += votacao(lst_votacao) tmp += votacao_vot_nom(lst_votacao_vot_nom) tmp += oradores_ordemdia(lst_oradores_ordemdia) tmp += oradores(lst_oradores) tmp += ocorrencias(lst_ocorrencias) tmp += consideracoes(lst_consideracoes) 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 temporario.',filedata=tmp_pdf,content_type='application/pdf') # return "/temp_folder/"+arquivoPdf # return principal(cabecalho, rodape, sessao, imagem, inf_basicas_dic)