diff --git a/relatorios/templates/pdf_sessao_plenaria_gerar.py b/relatorios/templates/pdf_sessao_plenaria_gerar.py index 2cbf2d745..13b3ae8c5 100644 --- a/relatorios/templates/pdf_sessao_plenaria_gerar.py +++ b/relatorios/templates/pdf_sessao_plenaria_gerar.py @@ -9,272 +9,287 @@ import time from trml2pdf import parseString -def cabecalho(inf_basicas_dic,imagem): +def cabecalho(inf_basicas_dic, imagem): """ """ - tmp='' - 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 ' + str(inf_basicas_dic['num_legislatura']) + 'ª Legislatura \n' + tmp = '' + 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 ' + str(inf_basicas_dic['num_legislatura']) + 'ª Legislatura \n' return tmp -def rodape(rodape_dic): - """ - """ - tmp='' - linha1 = rodape_dic['end_casa'] - linha2 = '' - if rodape_dic['end_casa']!="" and rodape_dic['end_casa']!=None: - linha1 = linha1 + " - " - if rodape_dic['num_cep']!="" and rodape_dic['num_cep']!=None: - linha1 = linha1 + "CEP " + rodape_dic['num_cep'] - if rodape_dic['nom_localidade']!="" and rodape_dic['nom_localidade']!=None: - linha1 = linha1 + " - " + rodape_dic['nom_localidade'] - if rodape_dic['sgl_uf']!="" and rodape_dic['sgl_uf']!=None: - linha1 = linha1 + " " + rodape_dic['sgl_uf'] - if rodape_dic['num_tel']!="" and rodape_dic['num_tel']!=None: - linha1 = linha1 + " Tel: "+ rodape_dic['num_tel'] - if rodape_dic['end_web_casa']!="" and rodape_dic['end_web_casa']!=None: - linha2 = rodape_dic['end_web_casa'] - if rodape_dic['end_email_casa']!="" and rodape_dic['end_email_casa']!=None: - linha2 = linha2 + " - E-mail: " + rodape_dic['end_email_casa'] - if rodape_dic['data_emissao']!="" and rodape_dic['data_emissao']!=None: - data_emissao = rodape_dic['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' +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\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' + 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\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="" + 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"] + 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\tInformações Básicas\n' - tmp+='\t\t\n' - tmp+='\t\t\t \n' - tmp+='\t\t\n' - tmp+='\t\tTipo da Sessão: ' + nom_sessao + '\n' - tmp+='\t\tAbertura: ' + dat_inicio_sessao + ' - ' + hr_inicio_sessao + '\n' - tmp+='\t\tEncerramento: ' + dat_fim_sessao + ' - ' + hr_fim_sessao + '\n' - + tmp += '\t\tInformações Básicas\n' + tmp += '\t\t\n' + tmp += '\t\t\t \n' + tmp += '\t\t\n' + tmp += '\t\tTipo da Sessão: ' + \ + nom_sessao + '\n' + tmp += '\t\tAbertura: ' + \ + dat_inicio_sessao + ' - ' + hr_inicio_sessao + '\n' + tmp += '\t\tEncerramento: ' + \ + dat_fim_sessao + ' - ' + hr_fim_sessao + '\n' + return tmp + def mesa(lst_mesa): """ - + """ - tmp='' - tmp+='\t\tMesa Diretora\n' - tmp+='\t\t\n' - tmp+='\t\t\t \n' - tmp+='\t\t\n' + tmp = '' + 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' + tmp += '\t\t' + \ + str(mesa['des_cargo']) + ': ' + str(mesa['nom_parlamentar'] + ) + '/' + str(mesa['sgl_partido']) + '\n' return tmp + def presenca(lst_presenca_sessao): """ - + """ tmp = '' - tmp+='\t\tLista de Presença da Sessão\n' - tmp+='\t\t\n' - tmp+='\t\t\t \n' - tmp+='\t\t\n' + 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' + tmp += '\t\t' + \ + str(presenca['nom_parlamentar']) + '/' + \ + str(presenca['sgl_partido']) + '\n' return tmp + def expedientes(lst_expedientes): """ - + """ tmp = '' - tmp+='\t\tExpedientes\n' - tmp+='\t\t\n' - tmp+='\t\t\t \n' - tmp+='\t\t\n' + tmp += '\t\tExpedientes\n' + tmp += '\t\t\n' + tmp += '\t\t\t \n' + tmp += '\t\t\n' for expediente in lst_expedientes: - tmp+='\t\t' + expediente['nom_expediente'] +': \n' + '' + str(expediente['txt_expediente']) +'\n' - tmp+='\t\t\n' - tmp+='\t\t\t \n' - tmp+='\t\t\n' + 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 = '' - 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' + 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' + 'Autor: ' + expediente_materia['nom_autor'] +'\n' - txt_ementa = expediente_materia['txt_ementa'].replace('&','&') - tmp+='' + txt_ementa + '\n' - tmp+='' + expediente_materia['nom_resultado'] + '\n' + '' + expediente_materia['votacao_observacao'] + '\n' + tmp += '' + str(expediente_materia['num_ordem']) + ' - ' + expediente_materia['id_materia'] + '\n' + 'Turno: ' + expediente_materia[ + 'des_turno'] + '\n' + 'Autor: ' + expediente_materia['nom_autor'] + '\n' + txt_ementa = expediente_materia['txt_ementa'].replace('&', '&') + tmp += '' + txt_ementa + '\n' + tmp += '' + \ + expediente_materia['nom_resultado'] + '\n' + '' + \ + expediente_materia['votacao_observacao'] + '\n' - tmp+='\t\t\n' + tmp += '\t\t\n' return tmp + def oradores_expediente(lst_oradores_expediente): """ - + """ tmp = '' - tmp+='\t\tOradores do Expediente\n' - tmp+='\t\t\n' - tmp+='\t\t\t \n' - tmp+='\t\t\n' + 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']) +'\n' + tmp += '\t\t' + str(orador_expediente['num_ordem']) + ' - ' + orador_expediente[ + 'nom_parlamentar'] + '/' + str(orador_expediente['sgl_partido']) + '\n' return tmp + def presenca_ordem_dia(lst_presenca_ordem_dia): """ - + """ tmp = '' - tmp+='\t\tLista de Presença da Ordem do Dia\n' - tmp+='\t\t\n' - tmp+='\t\t\t \n' - tmp+='\t\t\n' + 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' + tmp += '\t\t' + \ + str(presenca_ordem_dia['nom_parlamentar']) + '/' + \ + str(presenca_ordem_dia['sgl_partido']) + '\n' return tmp + def votacao(lst_votacao): """ """ tmp = '' - 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' + 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' + 'Autor: ' + votacao['nom_autor'] +'\n' - txt_ementa = votacao['txt_ementa'].replace('&','&') - tmp+='' + txt_ementa + '\n' - tmp+='' + votacao['nom_resultado'] + '\n' + '' + votacao['votacao_observacao'] + '\n' + tmp += '' + str(votacao['num_ordem']) + ' - ' + votacao['id_materia'] + '\n' + 'Turno: ' + votacao[ + 'des_turno'] + '\n' + 'Autor: ' + votacao['nom_autor'] + '\n' + txt_ementa = votacao['txt_ementa'].replace('&', '&') + tmp += '' + txt_ementa + '\n' + tmp += '' + \ + votacao['nom_resultado'] + '\n' + '' + \ + votacao['votacao_observacao'] + '\n' - tmp+='\t\t\n' + tmp += '\t\t\n' return tmp + def oradores(lst_oradores): """ - + """ tmp = '' - tmp+='\t\tOradores das Explicações Pessoais\n' - tmp+='\t\t\n' - tmp+='\t\t\t \n' - tmp+='\t\t\n' + 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' + tmp += '\t\t' + \ + str(orador['num_ordem']) + ' - ' + orador['nom_parlamentar'] + \ + '/' + str(orador['sgl_partido']) + '\n' return tmp -def principal(cabecalho, rodape, sessao, imagem, inf_basicas_dic): + +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" - 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(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\n' - tmp+='\n' - tmp_pdf=parseString(tmp) - + tmp = '' + tmp += '\n' + tmp += '\n' + tmp += '\n' + tmp += '\t\n' + tmp += paraStyle() + tmp += '\t\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\n' + tmp += '\n' + tmp_pdf = parseString(tmp) return tmp_pdf # if hasattr(context.temp_folder,arquivoPdf): # context.temp_folder.manage_delObjects(ids=arquivoPdf) diff --git a/relatorios/urls.py b/relatorios/urls.py index bc4b6d22f..658607d20 100644 --- a/relatorios/urls.py +++ b/relatorios/urls.py @@ -5,7 +5,7 @@ from .views import (relatorio_documento_administrativo, relatorio_materia, relatorio_protocolo, relatorio_espelho, relatorio_etiqueta_protocolo, relatorio_pauta_sessao, - relatorio_sessao_plenaria) + relatorio_sessao_plenaria,) urlpatterns = [ url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'), diff --git a/relatorios/views.py b/relatorios/views.py index 6e9d0a532..63b1a8c9c 100644 --- a/relatorios/views.py +++ b/relatorios/views.py @@ -8,11 +8,16 @@ from comissoes.models import Comissao from materia.models import (Autor, Autoria, MateriaLegislativa, Numeracao, Tramitacao, UnidadeTramitacao) -from parlamentares.models import Parlamentar +from parlamentares.models import (Parlamentar, ComposicaoMesa, + CargoMesa, Filiacao) from protocoloadm.models import (DocumentoAdministrativo, Protocolo, TramitacaoAdministrativo) -from sessao.models import (ExpedienteMateria, OrdemDia, SessaoPlenaria) +from sessao.models import (OrdemDia, SessaoPlenaria, + SessaoPlenariaPresenca, + TipoExpediente, ExpedienteSessao, ExpedienteMateria, + RegistroVotacao, + OradorExpediente, PresencaOrdemDia, Orador) from .templates import (pdf_capa_processo_gerar, pdf_documento_administrativo_gerar, @@ -20,8 +25,10 @@ from .templates import (pdf_capa_processo_gerar, pdf_materia_gerar, pdf_protocolo_gerar, pdf_etiqueta_protocolo_gerar, - pdf_pauta_sessao_gerar) + pdf_pauta_sessao_gerar, + pdf_sessao_plenaria_gerar) +from bs4 import BeautifulSoup def get_cabecalho(casa): @@ -539,211 +546,271 @@ def get_espelho(mats): materias.append(dic) return materias -def get_sessao_plenaria(sessao): - pass -# if context.REQUEST['data']!='': -# dat_inicio_sessao = context.REQUEST['data'] -# pauta = [] # lista contendo a pauta da ordem do dia a ser impressa -# data = context.pysc.data_converter_pysc(dat_inicio_sessao) # converte data para formato yyyy/mm/dd -# codigo = context.REQUEST['cod_sessao_plen'] - -# # seleciona as matérias que compõem a pauta na data escolhida -# for sessao in context.zsql.sessao_plenaria_obter_zsql(dat_inicio_sessao=data, cod_sessao_plen=codigo, ind_excluido=0): -# inf_basicas_dic = {} # dicionário que armazenará as informacoes basicas da sessao plenaria -# # seleciona o tipo da sessao plenaria -# tipo_sessao = context.zsql.tipo_sessao_plenaria_obter_zsql(tip_sessao=sessao.tip_sessao,ind_excluido=0)[0] -# inf_basicas_dic["num_sessao_plen"] = sessao.num_sessao_plen -# inf_basicas_dic["nom_sessao"] = tipo_sessao.nom_sessao -# inf_basicas_dic["num_legislatura"] = sessao.num_legislatura -# inf_basicas_dic["num_sessao_leg"] = sessao.num_sessao_leg -# inf_basicas_dic["dat_inicio_sessao"] = sessao.dat_inicio_sessao -# inf_basicas_dic["hr_inicio_sessao"] = sessao.hr_inicio_sessao -# inf_basicas_dic["dat_fim_sessao"] = sessao.dat_fim_sessao -# inf_basicas_dic["hr_fim_sessao"] = sessao.hr_fim_sessao - -# # Lista da composicao da mesa diretora -# lst_mesa = [] -# for composicao in context.zsql.composicao_mesa_sessao_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen,ind_excluido=0): -# for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=composicao.cod_parlamentar,ind_excluido=0): -# for cargo in context.zsql.cargo_mesa_obter_zsql(cod_cargo=composicao.cod_cargo, ind_excluido=0): -# dic_mesa = {} -# dic_mesa['nom_parlamentar'] = parlamentar.nom_parlamentar -# dic_mesa['sgl_partido'] = parlamentar.sgl_partido -# dic_mesa['des_cargo'] = cargo.des_cargo -# lst_mesa.append(dic_mesa) - -# # Lista de presença na sessão -# lst_presenca_sessao = [] -# for presenca in context.zsql.presenca_sessao_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0): -# for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=presenca.cod_parlamentar,ind_excluido=0): -# dic_presenca = {} -# dic_presenca["nom_parlamentar"] = parlamentar.nom_parlamentar -# dic_presenca['sgl_partido'] = parlamentar.sgl_partido -# lst_presenca_sessao.append(dic_presenca) - -# # Exibe os Expedientes -# lst_expedientes = [] -# dic_expedientes = None -# for tip_expediente in context.zsql.tipo_expediente_obter_zsql(): -# for expediente in context.zsql.expediente_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen,cod_expediente=tip_expediente.cod_expediente, ind_excluido=0): -# dic_expedientes = {} -# dic_expedientes["nom_expediente"] = tip_expediente.nom_expediente -# dic_expedientes["txt_expediente"] = expediente.txt_expediente - -# if dic_expedientes: -# lst_expedientes.append(dic_expedientes) - -# # Lista das matérias do Expediente, incluindo o resultado das votacoes -# lst_expediente_materia=[] -# for expediente_materia in context.zsql.votacao_expediente_materia_obter_zsql(dat_ordem = data, cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0): - -# # seleciona os detalhes de uma matéria -# materia = context.zsql.materia_obter_zsql(cod_materia=expediente_materia.cod_materia)[0] - -# dic_expediente_materia = {} -# dic_expediente_materia["num_ordem"] = expediente_materia.num_ordem -# dic_expediente_materia["id_materia"] = materia.sgl_tipo_materia+" "+materia.des_tipo_materia+" "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica) -# dic_expediente_materia["des_numeracao"]="" - -# numeracao = context.zsql.numeracao_obter_zsql(cod_materia=expediente_materia.cod_materia) -# if len(numeracao): -# numeracao = numeracao[0] -# dic_expediente_materia["des_numeracao"] = str(numeracao.num_materia)+"/"+str(numeracao.ano_materia) - -# tram = context.zsql.tramitacao_turno_obter_zsql(cod_materia=materia.cod_materia, dat_inicio_sessao=data) -# dic_expediente_materia["des_turno"]="" -# if len(tram): -# tram_turno = tram[0] -# if tram_turno.sgl_turno != "": -# for turno in [("P","Primeiro"), ("S","Segundo"), ("U","Único"), ("L","Suplementar"), ("A","Votação Única em Regime de Urgência"), ("B","1ª Votação"), ("C","2ª e 3ª Votações"), ("F", "Final")]: -# if tram_turno.sgl_turno == turno[0]: -# dic_expediente_materia["des_turno"] = turno[1] - -# dic_expediente_materia["txt_ementa"] = materia.txt_ementa -# dic_expediente_materia["ordem_observacao"] = expediente_materia.ordem_observacao -# dic_expediente_materia["nom_autor"] = "" -# autoria = context.zsql.autoria_obter_zsql(cod_materia=expediente_materia.cod_materia, ind_primeiro_autor=1) -# if len(autoria) > 0: # se existe autor -# autoria = autoria[0] -# autor = context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor) -# if len(autor) > 0: -# autor = autor[0] -# try: -# if autor.des_tipo_autor == "Parlamentar": -# parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar)[0] -# dic_expediente_materia["nom_autor"] = parlamentar.nom_parlamentar -# elif autor.des_tipo_autor == "Comissao": -# comissao = context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao)[0] -# dic_expediente_materia["nom_autor"] = comissao.nom_comissao -# elif autor.nom_autor != "": -# dic_expediente_materia["nom_autor"] = autor.nom_autor -# else: -# dic_expediente_materia["nom_autor"] = autor.des_tipo_autor -# except: -# dic_expediente_materia["nom_autor"] = "NC-em" - -# dic_expediente_materia["votacao_observacao"]="" -# if expediente_materia.tip_resultado_votacao: -# resultado = context.zsql.tipo_resultado_votacao_obter_zsql(tip_resultado_votacao=expediente_materia.tip_resultado_votacao, ind_excluido=0) -# for i in resultado: -# dic_expediente_materia["nom_resultado"] = i.nom_resultado -# if expediente_materia.votacao_observacao: -# dic_expediente_materia["votacao_observacao"] = expediente_materia.votacao_observacao -# else: -# dic_expediente_materia["nom_resultado"] = "Matéria não votada" -# dic_expediente_materia["votacao_observacao"] = "Vazio" -# lst_expediente_materia.append(dic_expediente_materia) - -# # Lista dos oradores do Expediente -# lst_oradores_expediente = [] -# for orador_expediente in context.zsql.oradores_expediente_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0): -# for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=orador_expediente.cod_parlamentar,ind_excluido=0): -# dic_oradores_expediente = {} -# dic_oradores_expediente["num_ordem"] = orador_expediente.num_ordem -# dic_oradores_expediente["nom_parlamentar"] = parlamentar.nom_parlamentar -# dic_oradores_expediente['sgl_partido'] = parlamentar.sgl_partido -# lst_oradores_expediente.append(dic_oradores_expediente) - -# # Lista presença na ordem do dia -# lst_presenca_ordem_dia = [] -# for presenca_ordem_dia in context.zsql.presenca_ordem_dia_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen,ind_excluido=0): -# for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=presenca_ordem_dia.cod_parlamentar,ind_excluido=0): -# dic_presenca_ordem_dia = {} -# dic_presenca_ordem_dia['nom_parlamentar'] = parlamentar.nom_parlamentar -# dic_presenca_ordem_dia['sgl_partido'] = parlamentar.sgl_partido -# lst_presenca_ordem_dia.append(dic_presenca_ordem_dia) - -# # Lista das matérias da Ordem do Dia, incluindo o resultado das votacoes -# lst_votacao=[] -# for votacao in context.zsql.votacao_ordem_dia_obter_zsql(dat_ordem = data, cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0): - -# # seleciona os detalhes de uma matéria -# materia = context.zsql.materia_obter_zsql(cod_materia=votacao.cod_materia)[0] - -# dic_votacao = {} -# dic_votacao["num_ordem"] = votacao.num_ordem -# dic_votacao["id_materia"] = materia.sgl_tipo_materia+" "+materia.des_tipo_materia+" "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica) -# dic_votacao["des_numeracao"]="" -# numeracao = context.zsql.numeracao_obter_zsql(cod_materia=votacao.cod_materia) -# if len(numeracao): -# numeracao = numeracao[0] -# dic_votacao["des_numeracao"] = str(numeracao.num_materia)+"/"+str(numeracao.ano_materia) -# dic_votacao["des_turno"]="" -# tramitacao = context.zsql.tramitacao_obter_zsql(cod_materia=materia.cod_materia, ind_ult_tramitacao=1) -# if len(tramitacao): -# tramitacao = tramitacao[0] -# tram = context.zsql.tramitacao_turno_obter_zsql(cod_materia=materia.cod_materia, dat_inicio_sessao=data) -# if len(tram): -# tram_turno = tram[0] -# if tram_turno.sgl_turno != "": -# for turno in [("P","Primeiro"), ("S","Segundo"), ("U","Único"), ("L","Suplementar"), ("F","Final"), ("A","Votação Única em Regime de Urgência"), ("B","1ª Votação"), ("C","2ª e 3ª Votações")]: -# if tram_turno.sgl_turno == turno[0]: -# dic_votacao["des_turno"] = turno[1] -# dic_votacao["txt_ementa"] = materia.txt_ementa -# dic_votacao["ordem_observacao"] = votacao.ordem_observacao -# dic_votacao["nom_autor"] = "" -# autoria = context.zsql.autoria_obter_zsql(cod_materia=votacao.cod_materia, ind_primeiro_autor=1) -# if len(autoria) > 0: # se existe autor -# autoria = autoria[0] -# autor = context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor) -# if len(autor) > 0: -# autor = autor[0] -# try: -# if autor.des_tipo_autor == "Parlamentar": -# parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar)[0] -# dic_votacao["nom_autor"] = parlamentar.nom_parlamentar -# elif autor.des_tipo_autor == "Comissao": -# comissao = context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao)[0] -# dic_votacao["nom_autor"] = comissao.nom_comissao -# elif autor.nom_autor != "": -# dic_votacao["nom_autor"] = autor.nom_autor -# else: -# dic_votacao["nom_autor"] = autor.des_tipo_autor -# except: -# dic_votacao["nom_autor"] = "NC-od" - -# dic_votacao["votacao_observacao"]="" -# if votacao.tip_resultado_votacao: -# resultado = context.zsql.tipo_resultado_votacao_obter_zsql(tip_resultado_votacao=votacao.tip_resultado_votacao, ind_excluido=0) -# for i in resultado: -# dic_votacao["nom_resultado"] = i.nom_resultado -# if votacao.votacao_observacao: -# dic_votacao["votacao_observacao"] = votacao.votacao_observacao -# else: -# dic_votacao["nom_resultado"] = "Matéria não votada" -# dic_votacao["votacao_observacao"] = "Vazio" -# lst_votacao.append(dic_votacao) - -# # Lista dos oradores nas Explicações Pessoais -# lst_oradores = [] -# for orador in context.zsql.oradores_obter_zsql(cod_sessao_plen=sessao.cod_sessao_plen, ind_excluido=0): -# for parlamentar in context.zsql.parlamentar_obter_zsql(cod_parlamentar=orador.cod_parlamentar,ind_excluido=0): -# dic_oradores = {} -# dic_oradores["num_ordem"] = orador.num_ordem -# dic_oradores["nom_parlamentar"] = parlamentar.nom_parlamentar -# dic_oradores['sgl_partido'] = parlamentar.sgl_partido -# lst_oradores.append(dic_oradores) +def get_sessao_plenaria(sessao, casa): + + inf_basicas_dic = {} + inf_basicas_dic["num_sessao_plen"] = str(sessao.numero) + inf_basicas_dic["nom_sessao"] = sessao.tipo.nome + inf_basicas_dic["num_legislatura"] = str(sessao.legislatura) + inf_basicas_dic["num_sessao_leg"] = sessao.sessao_legislativa.numero + inf_basicas_dic["dat_inicio_sessao"] = sessao.data_inicio.strftime( + "%d/%m/%Y") + inf_basicas_dic["hr_inicio_sessao"] = sessao.hora_inicio + inf_basicas_dic["dat_fim_sessao"] = sessao.data_fim.strftime("%d/%m/%Y") + inf_basicas_dic["hr_fim_sessao"] = sessao.hora_fim + inf_basicas_dic["nom_camara"] = casa.nome + + # Lista da composicao da mesa diretora + lst_mesa = [] + for composicao in ComposicaoMesa.objects.filter( + sessao_legislativa=sessao.sessao_legislativa): + for parlamentar in Parlamentar.objects.filter( + id=composicao.parlamentar.id): + for cargo in CargoMesa.objects.filter(id=composicao.cargo.id): + dic_mesa = {} + dic_mesa['nom_parlamentar'] = parlamentar.nome_parlamentar + dic_mesa['sgl_partido'] = Filiacao.objects.filter( + parlamentar=parlamentar).first().partido.sigla + dic_mesa['des_cargo'] = cargo.descricao + lst_mesa.append(dic_mesa) + + # Lista de presença na sessão + lst_presenca_sessao = [] + for presenca in SessaoPlenariaPresenca.objects.filter( + sessao_plenaria=sessao): + for parlamentar in Parlamentar.objects.filter( + id=presenca.parlamentar.id): + dic_presenca = {} + dic_presenca["nom_parlamentar"] = parlamentar.nome_parlamentar + dic_presenca['sgl_partido'] = Filiacao.objects.filter( + parlamentar=parlamentar).first().partido.sigla + lst_presenca_sessao.append(dic_presenca) + + # Exibe os Expedientes + lst_expedientes = [] + for tip_expediente in TipoExpediente.objects.all(): + for expediente in ExpedienteSessao.objects.filter( + sessao_plenaria=sessao, tipo=tip_expediente): + dic_expedientes = {} + dic_expedientes["nom_expediente"] = str(tip_expediente) + dic_expedientes["txt_expediente"] = ( + BeautifulSoup(expediente.conteudo).text) + if dic_expedientes: + lst_expedientes.append(dic_expedientes) + + # Lista das matérias do Expediente, incluindo o resultado das votacoes + lst_expediente_materia = [] + for expediente_materia in ExpedienteMateria.objects.filter( + sessao_plenaria=sessao): + # seleciona os detalhes de uma matéria + materia = MateriaLegislativa.objects.filter( + id=expediente_materia.materia.id).first() + + dic_expediente_materia = {} + dic_expediente_materia["num_ordem"] = expediente_materia.numero_ordem + dic_expediente_materia["id_materia"] = (materia.tipo.sigla + ' ' + + materia.tipo.descricao + ' ' + + str(materia.numero) + '/' + + str(materia.ano)) + dic_expediente_materia["des_numeracao"] = ' ' + + numeracao = Numeracao.objects.filter( + materia=expediente_materia.materia).first() + if numeracao is not None: + dic_expediente_materia["des_numeracao"] = ( + str(numeracao.numero) + '/' + str(numeracao.ano)) + + dic_expediente_materia["des_turno"] = ' ' + tram = Tramitacao.objects.filter( + materia=materia).first() + if tram is not None: + if tram.turno != '': + for turno in [("P", "Primeiro"), + ("S", "Segundo"), + ("U", "Único"), + ("L", "Suplementar"), + ("A", "Votação Única em Regime de Urgência"), + ("B", "1ª Votação"), + ("C", "2ª e 3ª Votações"), + ("F", "Final")]: + if tram.turno == turno[0]: + dic_expediente_materia["des_turno"] = turno[1] + + dic_expediente_materia["txt_ementa"] = str(materia.ementa) + dic_expediente_materia["ordem_observacao"] = ' ' # TODO + dic_expediente_materia["nom_autor"] = ' ' + + autoria = Autoria.objects.filter( + materia=materia, primeiro_autor=True).first() + + if autoria is not None: + autor = Autor.objects.filter(id=autoria.autor.id) + + if autor is not None: + autor = autor.first() + + if autor.tipo == 'Parlamentar': + parlamentar = Parlamentar.objects.filter( + id=autor.parlamentar.id) + dic_expediente_materia["nom_autor"] = str( + parlamentar.nome_completo) + elif autor.tipo == 'Comissao': + comissao = Comissao.objects.filter(id=autor.comissao.id) + dic_expediente_materia["nom_autor"] = str(comissao) + else: + dic_expediente_materia["nom_autor"] = str(autor.nome) + elif autoria is None: + dic_expediente_materia["nom_autor"] = 'Desconhecido' + + dic_expediente_materia["votacao_observacao"] = ' ' + if not expediente_materia.resultado: + resultado = RegistroVotacao.objects.filter( + tipo_resultado_votacao=expediente_materia.tipo_votacao) + + for i in resultado: + dic_expediente_materia["nom_resultado"] = ( + i.tipo_resultado_votacao.nome) + dic_expediente_materia["votacao_observacao"] = ( + expediente_materia.observacao) + else: + dic_expediente_materia["nom_resultado"] = "Matéria não votada" + dic_expediente_materia["votacao_observacao"] = "Vazio" + lst_expediente_materia.append(dic_expediente_materia) + + # Lista dos oradores do Expediente + lst_oradores_expediente = [] + for orador_expediente in OradorExpediente.objects.filter( + sessao_plenaria=sessao): + for parlamentar in Parlamentar.objects.filter( + id=orador_expediente.parlamentar.id): + dic_oradores_expediente = {} + dic_oradores_expediente["num_ordem"] = ( + orador_expediente.numero_ordem) + dic_oradores_expediente["nom_parlamentar"] = ( + parlamentar.nome_parlamentar) + dic_oradores_expediente['sgl_partido'] = ( + Filiacao.objects.filter( + parlamentar=parlamentar).first().partido.sigla) + lst_oradores_expediente.append(dic_oradores_expediente) + + # Lista presença na ordem do dia + lst_presenca_ordem_dia = [] + for presenca_ordem_dia in PresencaOrdemDia.objects.filter( + sessao_plenaria=sessao): + for parlamentar in Parlamentar.objects.filter( + id=presenca_ordem_dia.parlamentar.id): + dic_presenca_ordem_dia = {} + dic_presenca_ordem_dia['nom_parlamentar'] = ( + parlamentar.nome_parlamentar) + dic_presenca_ordem_dia['sgl_partido'] = ( + Filiacao.objects.filter( + parlamentar=parlamentar).first().partido.sigla) + lst_oradores_expediente.append(dic_oradores_expediente) + lst_presenca_ordem_dia.append(dic_presenca_ordem_dia) + + # Lista das matérias da Ordem do Dia, incluindo o resultado das votacoes + lst_votacao = [] + for votacao in OrdemDia.objects.filter( + sessao_plenaria=sessao): + # seleciona os detalhes de uma matéria + materia = MateriaLegislativa.objects.filter( + id=votacao.materia.id).first() + + dic_votacao = {} + dic_votacao["num_ordem"] = votacao.numero_ordem + dic_votacao["id_materia"] = ( + materia.tipo.sigla + ' ' + + materia.tipo.descricao + ' ' + + str(materia.numero) + '/' + + str(materia.ano)) + dic_votacao["des_numeracao"] = ' ' + + numeracao = Numeracao.objects.filter( + materia=votacao.materia).first() + if numeracao is not None: + dic_votacao["des_numeracao"] = ( + str(numeracao.numero) + + '/' + + str(numeracao.ano)) + dic_votacao["des_turno"] = ' ' + + tramitacao = Tramitacao.objects.filter( + materia=materia).first() + if tramitacao is not None: + if not tramitacao.turno: + for turno in [("P", "Primeiro"), + ("S", "Segundo"), + ("U", "Único"), + ("L", "Suplementar"), + ("F", "Final"), + ("A", "Votação Única em Regime de Urgência"), + ("B", "1ª Votação"), + ("C", "2ª e 3ª Votações")]: + if tramitacao.turno == turno[0]: + dic_votacao["des_turno"] = turno[1] + + dic_votacao["txt_ementa"] = materia.ementa + dic_votacao["ordem_observacao"] = votacao.observacao + + dic_votacao["nom_autor"] = ' ' + autoria = Autoria.objects.filter( + materia=materia, primeiro_autor=True).first() + + if autoria is not None: + autor = Autor.objects.filter(id=autoria.autor.id) + if autor is not None: + autor = autor.first() + + if autor.tipo == 'Parlamentar': + parlamentar = Parlamentar.objects.filter( + id=autor.parlamentar.id) + dic_votacao["nom_autor"] = str(parlamentar.nome_completo) + elif autor.tipo == 'Comissao': + comissao = Comissao.objects.filter( + id=autor.comissao.id) + dic_votacao["nom_autor"] = str(comissao) + else: + dic_votacao["nom_autor"] = str(autor.nome) + elif autoria is None: + dic_votacao["nom_autor"] = 'Desconhecido' + + dic_votacao["votacao_observacao"] = ' ' + if not votacao.resultado: + resultado = RegistroVotacao.objects.filter( + tipo_resultado_votacao=votacao.tipo_votacao) + for i in resultado: + dic_votacao["nom_resultado"] = i.tipo_resultado_votacao.nome + if votacao.observacao: + dic_votacao["votacao_observacao"] = votacao.observacao + else: + dic_votacao["nom_resultado"] = "Matéria não votada" + dic_votacao["votacao_observacao"] = "Vazio" + lst_votacao.append(dic_votacao) + + # Lista dos oradores nas Explicações Pessoais + lst_oradores = [] + for orador in Orador.objects.filter( + sessao_plenaria=sessao): + for parlamentar in Parlamentar.objects.filter( + id=orador.parlamentar.id): + dic_oradores = {} + dic_oradores["num_ordem"] = orador.numero_ordem + dic_oradores["nom_parlamentar"] = parlamentar.nome_parlamentar + dic_oradores['sgl_partido'] = ( + Filiacao.objects.filter( + parlamentar=parlamentar).first().partido.sigla) + lst_oradores.append(dic_oradores) + + return (inf_basicas_dic, + lst_mesa, + lst_presenca_sessao, + lst_expedientes, + lst_expediente_materia, + lst_oradores_expediente, + lst_presenca_ordem_dia, + lst_votacao, + lst_oradores) def relatorio_sessao_plenaria(request): @@ -752,7 +819,8 @@ def relatorio_sessao_plenaria(request): ''' response = HttpResponse(content_type='application/pdf') - response['Content-Disposition'] = 'attachment; filename="relatorio_protocolo.pdf"' + response['Content-Disposition'] = ( + 'attachment; filename="relatorio_protocolo.pdf"') casa = CasaLegislativa.objects.first() @@ -761,19 +829,35 @@ def relatorio_sessao_plenaria(request): imagem = get_imagem(casa) # protocolos = Protocolo.objects.all()[:50] - - sessao_data = get_sessao_plenaria(sessao) - - pdf = pdf_sessao_plenaria_gerar.principal(None, - imagem, - None, - sessao_data, - cabecalho, - rodape) + sessao = SessaoPlenaria.objects.first() + (inf_basicas_dic, + lst_mesa, + lst_presenca_sessao, + lst_expedientes, + lst_expediente_materia, + lst_oradores_expediente, + lst_presenca_ordem_dia, + lst_votacao, + lst_oradores) = get_sessao_plenaria(sessao, casa) + + pdf = pdf_sessao_plenaria_gerar.principal( + cabecalho, + rodape, + imagem, + None, + inf_basicas_dic, + lst_mesa, + lst_presenca_sessao, + lst_expedientes, + lst_expediente_materia, + lst_oradores_expediente, + lst_presenca_ordem_dia, + lst_votacao, + lst_oradores) response.write(pdf) + return response - return response def get_protocolos(prots):