diff --git a/materia/views.py b/materia/views.py index 13b90e6bb..61d18a199 100644 --- a/materia/views.py +++ b/materia/views.py @@ -2023,6 +2023,18 @@ class MateriaLegislativaPesquisaView(FormMixin, GenericView): if request.POST['assunto']: kwargs['ementa'] = request.POST['assunto'] + if request.POST['autor']: + kwargs['autoria'] = request.POST['autor'] + + # if request.POST['relator']: + # kwargs['relatoria'] = request.POST['relator'] + + if request.POST['localizacao']: + kwargs['local_origem_externa'] = request.POST['localizacao'] + + if request.POST['situacao']: + kwargs['tipo_id'] = request.POST['situacao'] + request.session['kwargs'] = kwargs return redirect('pesquisar_materia_list') diff --git a/painel/views.py b/painel/views.py index d338a77db..65088386b 100644 --- a/painel/views.py +++ b/painel/views.py @@ -8,9 +8,9 @@ from django.utils.translation import ugettext_lazy as _ from painel.models import Painel from parlamentares.models import Filiacao from sapl.crud import build_crud -from sessao.models import (OrdemDia, PresencaOrdemDia, RegistroVotacao, - SessaoPlenaria, SessaoPlenariaPresenca, - VotoParlamentar) +from sessao.models import (ExpedienteMateria, OrdemDia, PresencaOrdemDia, + RegistroVotacao, SessaoPlenaria, + SessaoPlenariaPresenca, VotoParlamentar) from .models import Cronometro @@ -72,11 +72,13 @@ def get_cronometro_status(request, name): cronometro = '' return cronometro +# ##############################ORDEM DO DIA################################## + def get_materia_aberta(pk): try: materia = OrdemDia.objects.filter( - sessao_plenaria_id=pk, votacao_aberta=True).first() + sessao_plenaria_id=pk, votacao_aberta=True).last() return materia except ObjectDoesNotExist: return False @@ -85,7 +87,7 @@ def get_materia_aberta(pk): def get_last_materia(pk): try: materia = OrdemDia.objects.filter( - sessao_plenaria_id=pk).order_by('-data_ordem').first() + sessao_plenaria_id=pk).last() return materia except ObjectDoesNotExist: return None @@ -150,6 +152,88 @@ def get_presentes(pk, response, materia): return response +# ########################EXPEDIENTE############################################ + + +def get_materia_expediente_aberta(pk): + try: + materia = ExpedienteMateria.objects.filter( + sessao_plenaria_id=pk, votacao_aberta=True).last() + return materia + except ObjectDoesNotExist: + return False + + +def get_last_materia_expediente(pk): + try: + materia = ExpedienteMateria.objects.filter( + sessao_plenaria_id=pk).last() + return materia + except ObjectDoesNotExist: + return None + + +def get_presentes_expediente(pk, response, materia): + filiacao = Filiacao.objects.filter( + data_desfiliacao__isnull=True, parlamentar__ativo=True) + parlamentar_partido = {} + for f in filiacao: + parlamentar_partido[ + f.parlamentar.nome_parlamentar] = f.partido.sigla + + sessao_plenaria_presenca = SessaoPlenariaPresenca.objects.filter( + sessao_plenaria_id=pk) + presentes_sessao_plenaria = [ + p.parlamentar.nome_parlamentar for p in sessao_plenaria_presenca] + num_presentes_sessao_plen = len(presentes_sessao_plenaria) + + presenca_expediente = SessaoPlenariaPresenca.objects.filter( + sessao_plenaria_id=pk) + presentes_expediente = [] + for p in presenca_expediente: + nome_parlamentar = p.parlamentar.nome_parlamentar + + try: + parlamentar_partido[nome_parlamentar] + except KeyError: + presentes_expediente.append( + {'id': p.id, + 'nome': nome_parlamentar, + 'partido': 'Sem Registro', + }) + else: + presentes_expediente.append( + {'id': p.id, + 'nome': nome_parlamentar, + 'partido': parlamentar_partido[nome_parlamentar], + }) + num_presentes_expediente = len(presentes_expediente) + + if materia.tipo_votacao == 1: + tipo_votacao = 'Simbólica' + elif materia.tipo_votacao == 2: + tipo_votacao = 'Nominal' + elif materia.tipo_votacao == 3: + tipo_votacao = 'Secreta' + + response.update({ + 'presentes_expediente': presentes_expediente, + 'num_presentes_expediente': num_presentes_expediente, + 'presentes_sessao_plenaria': presentes_sessao_plenaria, + 'num_presentes_sessao_plenaria': num_presentes_sessao_plen, + 'status_painel': 'ABERTO', + 'msg_painel': 'Votação aberta!', + 'numero_votos_sim': 0, + 'numero_votos_nao': 0, + 'numero_abstencoes': 0, + 'total_votos': 0, + 'tipo_resultado': tipo_votacao}) + + return response + + +# ##########################GENERAL FUNCTIONS############################# + def response_null_materia(response): response.update({ 'status_painel': 'FECHADO', @@ -159,6 +243,14 @@ def response_null_materia(response): def get_votos(response, materia): + + if materia.tipo_votacao == 1: + tipo_votacao = 'Simbólica' + elif materia.tipo_votacao == 2: + tipo_votacao = 'Nominal' + elif materia.tipo_votacao == 3: + tipo_votacao = 'Secreta' + registro = RegistroVotacao.objects.filter( ordem=materia, materia=materia.materia).last() total = (registro.numero_votos_sim + @@ -169,6 +261,7 @@ def get_votos(response, materia): 'numero_votos_nao': registro.numero_votos_nao, 'numero_abstencoes': registro.numero_abstencoes, 'total_votos': total, + 'tipo_votacao': tipo_votacao, 'tipo_resultado': registro.tipo_resultado_votacao.nome }) return response @@ -177,17 +270,41 @@ def get_votos(response, materia): def get_votos_nominal(response, materia): votos = {} + if materia.tipo_votacao == 1: + tipo_votacao = 'Simbólica' + elif materia.tipo_votacao == 2: + tipo_votacao = 'Nominal' + elif materia.tipo_votacao == 3: + tipo_votacao = 'Secreta' + registro = RegistroVotacao.objects.get( ordem=materia, materia=materia.materia) votos_parlamentares = VotoParlamentar.objects.filter( votacao_id=registro.id) + filiacao = Filiacao.objects.filter( + data_desfiliacao__isnull=True, parlamentar__ativo=True) + parlamentar_partido = {} + for f in filiacao: + parlamentar_partido[ + f.parlamentar.nome_parlamentar] = f.partido.sigla + for v in votos_parlamentares: - votos.update({v.parlamentar.id: { - 'parlamentar': v.parlamentar.nome_parlamentar, - 'voto': str(v.voto) - }}) + try: + parlamentar_partido[v.parlamentar.nome_parlamentar] + except KeyError: + votos.update({v.parlamentar.id: { + 'parlamentar': v.parlamentar.nome_parlamentar, + 'voto': str(v.voto), + 'partido': 'Sem Registro' + }}) + else: + votos.update({v.parlamentar.id: { + 'parlamentar': v.parlamentar.nome_parlamentar, + 'voto': str(v.voto), + 'partido': parlamentar_partido[v.parlamentar.nome_parlamentar] + }}) total = (registro.numero_votos_sim + registro.numero_votos_nao + @@ -198,6 +315,7 @@ def get_votos_nominal(response, materia): 'numero_votos_nao': registro.numero_votos_nao, 'numero_abstencoes': registro.numero_abstencoes, 'total_votos': total, + 'tipo_votacao': tipo_votacao, 'tipo_resultado': registro.tipo_resultado_votacao.nome, 'votos': votos }) @@ -220,22 +338,45 @@ def get_dados_painel(request, pk): "cronometro_ordem": cronometro_ordem, } - materia = get_materia_aberta(pk) - if materia: - return JsonResponse(get_presentes(pk, response, materia)) - else: - materia = get_last_materia(pk) - if materia: - if materia.resultado: - if materia.tipo_votacao in [1, 3]: - return JsonResponse( - get_votos(get_presentes( - pk, response, materia), materia)) - elif materia.tipo_votacao == 2: - return JsonResponse( - get_votos_nominal(get_presentes( - pk, response, materia), materia)) - else: - return JsonResponse(get_presentes(pk, response, materia)) + ordem_dia = get_materia_aberta(pk) + expediente = get_materia_expediente_aberta(pk) + + if ordem_dia: + return JsonResponse(get_presentes(pk, response, ordem_dia)) + elif expediente: + return JsonResponse(get_presentes_expediente(pk, response, expediente)) + + ultima_ordem = get_last_materia(pk) + + if ultima_ordem: + if ultima_ordem.resultado: + if ultima_ordem.tipo_votacao in [1, 3]: + return JsonResponse( + get_votos(get_presentes( + pk, response, ultima_ordem), ultima_ordem)) + elif ultima_ordem.tipo_votacao == 2: + return JsonResponse( + get_votos_nominal(get_presentes( + pk, response, ultima_ordem), ultima_ordem)) else: - return response_null_materia(response) + return JsonResponse(get_presentes(pk, response, ultima_ordem)) + + ultimo_expediente = get_last_materia_expediente(pk) + + if ultimo_expediente: + if ultimo_expediente.resultado: + if ultimo_expediente.tipo_votacao in [1, 3]: + return JsonResponse( + get_votos(get_presentes( + pk, response, ultimo_expediente), + ultimo_expediente)) + elif ultimo_expediente.tipo_votacao == 2: + return JsonResponse( + get_votos_nominal(get_presentes( + pk, response, ultimo_expediente), + ultimo_expediente)) + else: + return JsonResponse(get_presentes(pk, response, + ultimo_expediente)) + else: + return response_null_materia(response) diff --git a/parlamentares/views.py b/parlamentares/views.py index 57391226d..e43b28a1b 100644 --- a/parlamentares/views.py +++ b/parlamentares/views.py @@ -158,7 +158,6 @@ class ParlamentaresView(GenericView): def get(self, request, *args, **kwargs): form = ParlamentaresListForm() - # import ipdb; ipdb.set_trace() if not Legislatura.objects.all(): mensagem = "Cadastre alguma Legislatura antes\ de cadastrar algum Parlamentar" diff --git a/protocoloadm/views.py b/protocoloadm/views.py index 250d76ff6..14280c374 100644 --- a/protocoloadm/views.py +++ b/protocoloadm/views.py @@ -1050,7 +1050,6 @@ class TramitacaoAdmEditView(FormMixin, GenericView): def post(self, request, *args, **kwargs): pk = kwargs['pk'] - print(kwargs) tramitacao = TramitacaoAdministrativo.objects.get(id=pk) form = TramitacaoAdmForm(request.POST, instance=tramitacao) diff --git a/relatorios/templates/pdf_capa_processo_gerar.py b/relatorios/templates/pdf_capa_processo_gerar.py index 32b06ca8e..b64c58d7e 100755 --- a/relatorios/templates/pdf_capa_processo_gerar.py +++ b/relatorios/templates/pdf_capa_processo_gerar.py @@ -8,6 +8,8 @@ """ import time +from sapl.utils import xstr + from trml2pdf import parseString @@ -60,13 +62,13 @@ def protocolos(lst_protocolos): tmp_data += '\t\t\t \n' tmp_data += '\t\t\n' tmp_data += '\t\tEmenta: ' + \ - dic['txt_assunto'] + '\n' + xstr(dic['txt_assunto']) + '\n' tmp_data += '\t\n' return tmp_data -def principal(sessao, imagem, data, lst_protocolos, dic_cabecalho, lst_rodape, dic_filtro={}): +def principal(imagem, lst_protocolos, dic_cabecalho, lst_rodape): """Funcao pricipal que gera a estrutura global do arquivo rml""" arquivoPdf = str(int(time.time() * 100)) + ".pdf" diff --git a/relatorios/templates/pdf_documento_administrativo_gerar.py b/relatorios/templates/pdf_documento_administrativo_gerar.py index 372658d2a..b102322ab 100755 --- a/relatorios/templates/pdf_documento_administrativo_gerar.py +++ b/relatorios/templates/pdf_documento_administrativo_gerar.py @@ -112,7 +112,7 @@ def documentos(lst_documentos): return tmp_data -def principal(sessao, imagem, data, lst_documentos, dic_cabecalho, lst_rodape, dic_filtro={}): +def principal(imagem, lst_documentos, dic_cabecalho, lst_rodape): """Funcao pricipal que gera a estrutura global do arquivo rml""" arquivoPdf = str(int(time.time() * 100)) + ".pdf" diff --git a/relatorios/templates/pdf_espelho_gerar.py b/relatorios/templates/pdf_espelho_gerar.py index 81744bcf9..1242f8040 100644 --- a/relatorios/templates/pdf_espelho_gerar.py +++ b/relatorios/templates/pdf_espelho_gerar.py @@ -122,7 +122,7 @@ def materias(lst_materias): return tmp_data -def principal(sessao, imagem, data, lst_materias, dic_cabecalho, lst_rodape, dic_filtro={}): +def principal(imagem, lst_materias, dic_cabecalho, lst_rodape): """Funcao pricipal que gera a estrutura global do arquivo rml""" # if sessao: diff --git a/relatorios/templates/pdf_etiqueta_protocolo_gerar.py b/relatorios/templates/pdf_etiqueta_protocolo_gerar.py index 6b17b06e1..96b5bf1e3 100755 --- a/relatorios/templates/pdf_etiqueta_protocolo_gerar.py +++ b/relatorios/templates/pdf_etiqueta_protocolo_gerar.py @@ -1,4 +1,4 @@ -##parameters=sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro +# parameters=sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro """relatorio_protocolo.py External method para gerar o arquivo rml da etiqueta de protocolo @@ -11,102 +11,116 @@ import time from trml2pdf import parseString -def cabecalho(inf_basicas_dic,imagem): +def cabecalho(dic_cabecalho, imagem): """Gera o codigo rml do cabecalho""" - tmp_data='' - tmp_data+='\t\t\t\t\n' - tmp_data+='\t\t\t\t2cm 25.4cm 19cm 25.4cm\n' - tmp_data+='\t\t\t\t\n' - tmp_data+='\t\t\t\t' + dic_cabecalho['nom_casa'] + '\n' - tmp_data+='\t\t\t\t\n' - tmp_data+='\t\t\t\tSistema de Apoio ao Processo Legislativo\n' - tmp_data+='\t\t\t\t\n' - tmp_data+='\t\t\t\tRelatório de Controle do Protocolo\n' + tmp_data = '' + tmp_data += '\t\t\t\t\n' + tmp_data += '\t\t\t\t2cm 25.4cm 19cm 25.4cm\n' + tmp_data += '\t\t\t\t\n' + tmp_data += '\t\t\t\t' + \ + dic_cabecalho['nom_casa'] + '\n' + tmp_data += '\t\t\t\t\n' + tmp_data += '\t\t\t\tSistema de Apoio ao Processo Legislativo\n' + tmp_data += '\t\t\t\t\n' + tmp_data += '\t\t\t\tRelatório de Controle do Protocolo\n' return tmp_data + def rodape(lst_rodape): """Gera o codigo rml do rodape""" - tmp_data='' - tmp_data+='\t\t\t\t2cm 3.2cm 19cm 3.2cm\n' - tmp_data+='\t\t\t\t\n' - tmp_data+='\t\t\t\t' + lst_rodape[2] + '\n' - tmp_data+='\t\t\t\tPágina \n' - tmp_data+='\t\t\t\t' + lst_rodape[0] + '\n' - tmp_data+='\t\t\t\t' + lst_rodape[1] + '\n' + tmp_data = '' + tmp_data += '\t\t\t\t2cm 3.2cm 19cm 3.2cm\n' + tmp_data += '\t\t\t\t\n' + tmp_data += '\t\t\t\t' + \ + lst_rodape[2] + '\n' + tmp_data += '\t\t\t\tPágina \n' + tmp_data += '\t\t\t\t' + \ + lst_rodape[0] + '\n' + tmp_data += '\t\t\t\t' + \ + lst_rodape[1] + '\n' return tmp_data + def paraStyle(): """Gera o codigo rml que define o estilo dos paragrafos""" - tmp_data='' - tmp_data+='\t\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\t\n' - tmp_data+='\t\t\t\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\t\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\n' - tmp_data+='\t\n' + tmp_data = '' + tmp_data += '\t\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\t\n' + tmp_data += '\t\t\t\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\t\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\n' + tmp_data += '\t\n' return tmp_data -def protocolos(lst_protocolos): + +def protocolos(lst_protocolos, dic_cabecalho): """Gera o codigo rml do conteudo da pesquisa de protocolos""" - tmp_data='' + tmp_data = '' - #inicio do bloco que contem os flowables - tmp_data+='\t\n' + # inicio do bloco que contem os flowables + tmp_data += '\t\n' for dic in lst_protocolos: - #condicao para a quebra de pagina - tmp_data+='\t\t\n' - - #protocolos - if dic['titulo']!=None: - tmp_data+='\t\t\n' - tmp_data+='\t\t\t \n' - tmp_data+='\t\t\n' - tmp_data+='\t\t'+dic_cabecalho['nom_casa']+'\n' - tmp_data+='\t\t\n' - tmp_data+='\t\t\t \n' - tmp_data+='\t\t\n' - tmp_data+='\t\t' +dic['titulo']+ '\n' - tmp_data+='\t\tPROTOCOLO GERAL '+dic['titulo']+'\n' - if dic['data']!=None: - tmp_data+='\t\t'+dic['data']+'\n' - tmp_data+='\t\t'+dic['natureza']+' - '+dic['ident_processo']+'\n' - - tmp_data+='\t\n' + # condicao para a quebra de pagina + tmp_data += '\t\t\n' + + # protocolos + if dic['titulo'] != None: + tmp_data += '\t\t\n' + tmp_data += '\t\t\t \n' + tmp_data += '\t\t\n' + tmp_data += '\t\t' + \ + dic_cabecalho['nom_casa'] + '\n' + tmp_data += '\t\t\n' + tmp_data += '\t\t\t \n' + tmp_data += '\t\t\n' + tmp_data += '\t\t' + \ + dic['titulo'] + '\n' + tmp_data += '\t\tPROTOCOLO GERAL ' + \ + dic['titulo'] + '\n' + if dic['data'] != None: + tmp_data += '\t\t' + \ + dic['data'] + '\n' + tmp_data += '\t\t' + \ + dic['natureza'] + ' - ' + dic['ident_processo'] + '\n' + + tmp_data += '\t\n' return tmp_data -def principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro={}): + +def principal(imagem, lst_protocolos, dic_cabecalho, lst_rodape): """Funcao pricipal que gera a estrutura global do arquivo rml""" - arquivoPdf=str(int(time.time()*100))+".pdf" - - tmp_data='' - tmp_data+='\n' - tmp_data+='\n' - tmp_data+='\n' - tmp_data+='\t\n' - tmp_data+=paraStyle() - tmp_data+=protocolos(lst_protocolos) - tmp_data+='\n' - tmp_pdf=parseString(tmp_data) - + arquivoPdf = str(int(time.time() * 100)) + ".pdf" + + tmp_data = '' + tmp_data += '\n' + tmp_data += '\n' + tmp_data += '\n' + tmp_data += '\t\n' + tmp_data += paraStyle() + tmp_data += protocolos(lst_protocolos, dic_cabecalho) + tmp_data += '\n' + tmp_pdf = parseString(tmp_data) + return tmp_pdf # if hasattr(context.temp_folder,arquivoPdf): # context.temp_folder.manage_delObjects(ids=arquivoPdf) @@ -116,4 +130,5 @@ def principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_fil # return "/temp_folder/"+arquivoPdf -# return principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro) +# return +# principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro) diff --git a/relatorios/templates/pdf_materia_gerar.py b/relatorios/templates/pdf_materia_gerar.py index c629c46e9..7df5d766a 100755 --- a/relatorios/templates/pdf_materia_gerar.py +++ b/relatorios/templates/pdf_materia_gerar.py @@ -83,7 +83,7 @@ def materias(lst_materias): tmp_data+='\t\n' return tmp_data -def principal(sessao,imagem,data,lst_materias,dic_cabecalho,lst_rodape,dic_filtro={}): +def principal(imagem, lst_materias, dic_cabecalho, lst_rodape): """Funcao pricipal que gera a estrutura global do arquivo rml""" arquivoPdf=str(int(time.time()*100))+".pdf" diff --git a/relatorios/templates/pdf_norma_gerar.py b/relatorios/templates/pdf_norma_gerar.py index 3ad87babb..47136b848 100755 --- a/relatorios/templates/pdf_norma_gerar.py +++ b/relatorios/templates/pdf_norma_gerar.py @@ -91,7 +91,7 @@ def normas(lst_normas): tmp_data+='\t\n' return tmp_data -def principal(sessao,imagem,data,lst_normas,dic_cabecalho,lst_rodape,dic_filtro={}): +def principal(imagem, lst_normas, dic_cabecalho, lst_rodape): """Funcao pricipal que gera a estrutura global do arquivo rml""" arquivoPdf=str(int(time.time()*100))+".pdf" diff --git a/relatorios/templates/pdf_ordem_dia_gerar.py b/relatorios/templates/pdf_ordem_dia_gerar.py index 732f8eb39..559a2d979 100755 --- a/relatorios/templates/pdf_ordem_dia_gerar.py +++ b/relatorios/templates/pdf_ordem_dia_gerar.py @@ -177,7 +177,7 @@ def pauta(lst_splen, lst_pauta): return tmp -def principal(sessao, imagem, dat_ordem, lst_splen, lst_pauta, dic_cabecalho, lst_rodape): +def principal(imagem, lst_splen, lst_pauta, dic_cabecalho, lst_rodape): """Funcao principal que gera a estrutura global do arquivo rml contendo o relatorio de uma ordem do dia. ordem_dia_[data da ordem do dia do relatório].pdf Retorna: diff --git a/relatorios/templates/pdf_pauta_sessao_gerar.py b/relatorios/templates/pdf_pauta_sessao_gerar.py index d28340542..31910156f 100755 --- a/relatorios/templates/pdf_pauta_sessao_gerar.py +++ b/relatorios/templates/pdf_pauta_sessao_gerar.py @@ -8,113 +8,103 @@ 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\tPauta 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\tPauta 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: - linha1 = 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' - return tmp +def rodape(lst_rodape): + """Gera o codigo rml do rodape""" + tmp_data = '' + tmp_data += '\t\t\t\t2cm 3.2cm 19cm 3.2cm\n' + tmp_data += '\t\t\t\t\n' + tmp_data += '\t\t\t\t' + \ + lst_rodape[2] + '\n' + tmp_data += '\t\t\t\t' + \ + lst_rodape[0] + '\n' + tmp_data += '\t\t\t\t' + \ + lst_rodape[1] + '\n' + return tmp_data + 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"] - 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\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.strftime( + "%d/%m/%Y") + ' - ' + hr_inicio_sessao + '\n' + return tmp @@ -122,67 +112,75 @@ def expediente_materia(lst_expediente_materia): """ """ tmp = '' - tmp+='Matérias do Expediente\n\n' - tmp+='\t\t\n' - tmp+='\t\t\t \n' - tmp+='\t\t\n' - tmp+='\n' - tmp+='MatériaEmentaSituação\n' + tmp += 'Matérias do Expediente\n\n' + tmp += '\t\t\n' + tmp += '\t\t\t \n' + tmp += '\t\t\n' + tmp += '\n' + tmp += 'MatériaEmentaSituação\n' for expediente_materia in lst_expediente_materia: - tmp+= '' + str(expediente_materia['num_ordem']) + ' - ' + expediente_materia['id_materia'] + '\n' + 'Autor: ' + expediente_materia['nom_autor'] +'\n' - txt_ementa = expediente_materia['txt_ementa'].replace('&','&') - tmp+='' + txt_ementa + '\n' - tmp+='' + expediente_materia['des_situacao'] + '\n' - - tmp+='\t\t\n' + tmp += '' + str(expediente_materia['num_ordem']) + ' - ' + expediente_materia[ + 'id_materia'] + '\n' + 'Autor: ' + expediente_materia['nom_autor'] + '\n' + txt_ementa = expediente_materia['txt_ementa'].replace('&', '&') + tmp += '' + txt_ementa + '\n' + tmp += '' + \ + str(expediente_materia['des_situacao']) + '\n' + + tmp += '\t\t\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ériaEmentaSituaçã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ériaEmentaSituação\n' for votacao in lst_votacao: - tmp+= '' + str(votacao['num_ordem']) + ' - ' + votacao['id_materia'] + '\n' + 'Processo: ' + votacao['des_numeracao'] + '\n' + 'Turno: ' + votacao['des_turno'] + '\n' + 'Autor: ' + votacao['nom_autor'] + '\n' - tmp+='' + votacao['txt_ementa'] + '\n' - tmp+='' + votacao['des_situacao'] + '\n' - - tmp+='\t\t\n' + tmp += '' + str(votacao['num_ordem']) + ' - ' + votacao['id_materia'] + '\n' + 'Processo: ' + votacao[ + 'des_numeracao'] + '\n' + 'Turno: ' + votacao['des_turno'] + '\n' + 'Autor: ' + votacao['nom_autor'] + '\n' + tmp += '' + \ + votacao['txt_ementa'] + '\n' + tmp += '' + \ + str(votacao['des_situacao']) + '\n' + + tmp += '\t\t\n' return tmp -def principal(cabecalho, rodape, sessao, imagem, inf_basicas_dic): + +def principal(cabecalho_dic, rodape_dic, sessao, imagem, inf_basicas_dic, lst_expediente_materia, lst_votacao): """ """ - 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+=expediente_materia(lst_expediente_materia) - tmp+=votacao(lst_votacao) - tmp+='\t\n' - tmp+='\n' - tmp_pdf=parseString(tmp) + 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 += expediente_materia(lst_expediente_materia) + tmp += votacao(lst_votacao) + tmp += '\t\n' + tmp += '\n' + + tmp_pdf = parseString(tmp) return tmp_pdf # if hasattr(context.temp_folder,arquivoPdf): diff --git a/relatorios/templates/pdf_protocolo_gerar.py b/relatorios/templates/pdf_protocolo_gerar.py index 0433aad93..114dc05d4 100755 --- a/relatorios/templates/pdf_protocolo_gerar.py +++ b/relatorios/templates/pdf_protocolo_gerar.py @@ -101,7 +101,7 @@ def protocolos(lst_protocolos): tmp_data+='\t\n' return tmp_data -def principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_filtro={}): +def principal(imagem, lst_protocolos, dic_cabecalho, lst_rodape): """Funcao pricipal que gera a estrutura global do arquivo rml""" arquivoPdf=str(int(time.time()*100))+".pdf" 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 d31a73f6c..4dc4b9ce6 100644 --- a/relatorios/urls.py +++ b/relatorios/urls.py @@ -1,13 +1,15 @@ from django.conf.urls import url -from .views import (relatorio_documento_administrativo, relatorio_materia, - relatorio_ordem_dia, relatorio_processo, - relatorio_protocolo, relatorio_espelho) +from .views import (relatorio_capa_processo, + relatorio_documento_administrativo, relatorio_espelho, + relatorio_etiqueta_protocolo, relatorio_materia, + relatorio_ordem_dia, relatorio_pauta_sessao, + relatorio_protocolo, relatorio_sessao_plenaria) urlpatterns = [ url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'), - url(r'^relatorios/cap_processo$', - relatorio_processo, name='relatorio_cap_processo'), + url(r'^relatorios/capa_processo$', + relatorio_capa_processo, name='relatorio_capa_processo'), url(r'^relatorios/ordem_dia$', relatorio_ordem_dia, name='relatorio_ordem_dia'), url(r'^relatorios/relatorio_documento_administrativo$', @@ -15,6 +17,12 @@ urlpatterns = [ name='relatorio_documento_administrativo'), url(r'^relatorios/espelho$', relatorio_espelho, name='relatorio_espelho'), + url(r'^relatorios/(?P\d+)/sessao_plenaria$', + relatorio_sessao_plenaria, name='relatorio_sessao_plenaria'), url(r'^relatorios/protocolo$', - relatorio_protocolo, name='relatorio_protocolo') + relatorio_protocolo, name='relatorio_protocolo'), + url(r'^relatorios/etiqueta_protocolo$', + relatorio_etiqueta_protocolo, name='relatorio_etiqueta_protocolo'), + url(r'^relatorios/pauta_sessao$', + relatorio_pauta_sessao, name='relatorio_pauta_sessao'), ] diff --git a/relatorios/views.py b/relatorios/views.py index d20f478ad..9d16e48fb 100644 --- a/relatorios/views.py +++ b/relatorios/views.py @@ -1,5 +1,6 @@ from datetime import datetime +from bs4 import BeautifulSoup from django.http import HttpResponse from base.models import CasaLegislativa @@ -7,16 +8,32 @@ from base.views import ESTADOS from comissoes.models import Comissao from materia.models import (Autor, Autoria, MateriaLegislativa, Numeracao, Tramitacao, UnidadeTramitacao) -from parlamentares.models import Parlamentar +from parlamentares.models import (CargoMesa, ComposicaoMesa, Filiacao, + Parlamentar) from protocoloadm.models import (DocumentoAdministrativo, Protocolo, TramitacaoAdministrativo) -from sessao.models import OrdemDia, SessaoPlenaria +from sessao.models import (ExpedienteMateria, ExpedienteSessao, Orador, + OradorExpediente, OrdemDia, PresencaOrdemDia, + RegistroVotacao, SessaoPlenaria, + SessaoPlenariaPresenca, TipoExpediente) from .templates import (pdf_capa_processo_gerar, - pdf_documento_administrativo_gerar, - pdf_espelho_gerar, - pdf_materia_gerar, - pdf_protocolo_gerar) + pdf_documento_administrativo_gerar, pdf_espelho_gerar, + pdf_etiqueta_protocolo_gerar, pdf_materia_gerar, + pdf_ordem_dia_gerar, pdf_pauta_sessao_gerar, + pdf_protocolo_gerar, pdf_sessao_plenaria_gerar) + + +def get_kwargs_params(request, fields): + kwargs = {} + for i in fields: + if '__icontains' in i: + x = i[:-11] # remove '__icontains' + else: + x = i + if x in request.GET: + kwargs[i] = request.GET[x] + return kwargs def get_cabecalho(casa): @@ -141,7 +158,8 @@ def relatorio_materia(request): ''' response = HttpResponse(content_type='application/pdf') - response['Content-Disposition'] = 'attachment; filename="relatorio_materia.pdf"' + response[ + 'Content-Disposition'] = 'attachment; filename="relatorio_materia.pdf"' casa = CasaLegislativa.objects.first() @@ -149,14 +167,19 @@ def relatorio_materia(request): rodape = get_rodape(casa) imagem = get_imagem(casa) - # TODO pesquisar baseado em filtros - mats = MateriaLegislativa.objects.all()[:50] + kwargs = get_kwargs_params(request, ['numero', + 'ano', + 'autor', + 'tipo_autor', + 'relator', + 'interessado__icontains' + ]) + + mats = MateriaLegislativa.objects.filter(**kwargs) materias = get_materias(mats) - pdf = pdf_materia_gerar.principal(None, - imagem, - None, + pdf = pdf_materia_gerar.principal(imagem, materias, cabecalho, rodape) @@ -231,13 +254,15 @@ def get_capa_processo(prot): return protocolos -def relatorio_processo(request): +def relatorio_capa_processo(request): ''' pdf_capa_processo_gerar.py ''' response = HttpResponse(content_type='application/pdf') - response['Content-Disposition'] = 'attachment; filename="relatorio_processo.pdf"' + response[ + 'Content-Disposition'] = ( + 'attachment; filename="relatorio_processo.pdf"') casa = CasaLegislativa.objects.first() @@ -245,12 +270,16 @@ def relatorio_processo(request): rodape = get_rodape(casa) imagem = get_imagem(casa) - protocolos = Protocolo.objects.all()[:50] + kwargs = get_kwargs_params(request, ['numero', + 'ano', + 'tipo_protocolo', + 'tipo_processo', + 'assunto__icontains', + # 'interessado__icontains' + ]) + protocolos = Protocolo.objects.filter(**kwargs) protocolos_pdf = get_capa_processo(protocolos) - - pdf = pdf_capa_processo_gerar.principal(None, - imagem, - None, + pdf = pdf_capa_processo_gerar.principal(imagem, protocolos_pdf, cabecalho, rodape) @@ -261,85 +290,9 @@ def relatorio_processo(request): def get_ordem_dia(ordem, sessao): - pass - # splen = [] - # pauta = [] - # data = '' - - # for dat_sessao in SessaoPlenaria.objects.filter(id=sessao.id): - # data = dat_sessao.data_inicio - # dat_ordem = dat_sessao.data_inicio - - # seleciona dados da sessão plenária - # for sp in context.zsql.sessao_plenaria_obter_zsql(dat_inicio_sessao=data, ind_excluido=0): - # dicsp = {} # dicionário que armazenará os dados a serem impressos de uma sessão plenária - # ts = context.zsql.tipo_sessao_plenaria_obter_zsql(tip_sessao=sp.tip_sessao)[0] - # dicsp["sessao"] = str(sp.num_sessao_plen)+"ª Sessao "+ts.nom_sessao+" da "+str(sp.num_sessao_leg)+"ª Sessao Legislativa da "+str(sp.num_legislatura)+"ª Legislatura" - # dia = context.pysc.data_converter_por_extenso_pysc(data=sp.dat_inicio_sessao) - # hora = context.pysc.hora_formatar_pysc(hora=sp.hr_inicio_sessao) - # dicsp["datasessao"] = "Dia "+str(dia)+" ("+str(sp.dia_sessao)+") - Inicio as "+hora - # splen.append(dicsp) - # seleciona as matérias que compõem a pauta na data escolhida - # for ordem in context.zsql.ordem_dia_obter_zsql(dat_ordem=data, ind_excluido=0): - # seleciona os detalhes de uma matéria - # materia = context.zsql.materia_obter_zsql(cod_materia=ordem.cod_materia)[0] - # dic = {} # dicionário que armazenará os dados a serem impressos de uma matéria - # dic["num_ordem"] = ordem.num_ordem - # dic["id_materia"] = materia.des_tipo_materia+" - Nº "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica) - # dic["id_materia"] = materia.sgl_tipo_materia+" - "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica)+" - "+materia.des_tipo_materia - # dic["txt_ementa"] = ordem.txt_observacao - # numeracao do processo 26/02/2011 - # dic["des_numeracao"]="" - # numeracao = context.zsql.numeracao_obter_zsql(cod_materia=ordem.cod_materia) - # if len(numeracao): - # numeracao = numeracao[0] - # dic["des_numeracao"] = str(numeracao.num_materia)+"/"+str(numeracao.ano_materia) - # dic["des_turno"]="" - # dic["des_situacao"] = "" - # tramitacao = context.zsql.tramitacao_obter_zsql(cod_materia=ordem.cod_materia, ind_ult_tramitacao=1) - # if len(tramitacao): - # tramitacao = tramitacao[0] - # if tramitacao.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")]: - # if tramitacao.sgl_turno == turno[0]: - # dic["des_turno"] = turno[1] - - # dic["des_situacao"] = tramitacao.des_status - # if dic["des_situacao"]==None: - # dic["des_situacao"] = " " - - # dic["nom_autor"] = '' - # autoria = context.zsql.autoria_obter_zsql(cod_materia=ordem.cod_materia, ind_primeiro_autor=1) - # if len(autoria): # se existe autor - # autoria = autoria[0] - # try: - # autor = context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor) - # if len(autor): - # autor = autor[0] - - # if autor.des_tipo_autor == "Parlamentar": - # parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar)[0] - # dic["nom_autor"] = parlamentar.nom_parlamentar - - # elif autor.des_tipo_autor == "Comissao": - # comissao = context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao)[0] - # dic["nom_autor"] = comissao.nom_comissao - # else: - # dic["nom_autor"] = autor.nom_autor - # except: - # pass - # lst_relator = [] # lista contendo os relatores da matéria - # for relatoria in context.zsql.relatoria_obter_zsql(cod_materia=ordem.cod_materia): - # parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=relatoria.cod_parlamentar)[0] - # comissao = context.zsql.comissao_obter_zsql(cod_comissao=relatoria.cod_comissao)[0] - # lst_relator.append(parlamentar.nom_parlamentar+" - "+comissao.nom_comissao) - # if not len(lst_relator): - # lst_relator = [''] - # dic["lst_relator"] = lst_relator - - # adiciona o dicionário na pauta - # pauta.append(dic) + # TODO: fazer implementação de ordem dia + pass def relatorio_ordem_dia(request): @@ -348,7 +301,10 @@ def relatorio_ordem_dia(request): ''' response = HttpResponse(content_type='application/pdf') - response['Content-Disposition'] = 'attachment; filename="relatorio_ordem_dia.pdf"' + + response[ + 'Content-Disposition'] = ( + 'attachment; filename="relatorio_ordem_dia.pdf"') casa = CasaLegislativa.objects.first() @@ -356,16 +312,17 @@ def relatorio_ordem_dia(request): rodape = get_rodape(casa) imagem = get_imagem(casa) - ordem = OrdemDia.objects.all()[:50] + kwargs = get_kwargs_params(request, ['numero_ordem']) + + ordem = OrdemDia.objects.filter(**kwargs) + sessao = SessaoPlenaria.objects.first() ordem_pdf = get_ordem_dia(ordem, sessao) - pdf = pdf_capa_processo_gerar.principal(None, - imagem, - None, - ordem_pdf, - cabecalho, - rodape) + pdf = pdf_ordem_dia_gerar.principal(imagem, + ordem_pdf, + cabecalho, + rodape) response.write(pdf) @@ -378,7 +335,9 @@ def relatorio_documento_administrativo(request): ''' response = HttpResponse(content_type='application/pdf') - response['Content-Disposition'] = 'attachment; filename="relatorio_documento_administrativo.pdf"' + response[ + 'Content-Disposition'] = ( + 'attachment; filename="relatorio_documento_administrativo.pdf"') casa = CasaLegislativa.objects.first() @@ -390,9 +349,7 @@ def relatorio_documento_administrativo(request): doc_pdf = get_documento_administrativo(docs) pdf = pdf_documento_administrativo_gerar.principal( - None, imagem, - None, doc_pdf, cabecalho, rodape) @@ -438,13 +395,15 @@ def get_documento_administrativo(docs): documentos.append(dic) return documentos + def relatorio_espelho(request): ''' pdf_espelho_gerar.py ''' response = HttpResponse(content_type='application/pdf') - response['Content-Disposition'] = 'attachment; filename="relatorio_espelho.pdf"' + response[ + 'Content-Disposition'] = 'attachment; filename="relatorio_espelho.pdf"' casa = CasaLegislativa.objects.first() @@ -456,9 +415,7 @@ def relatorio_espelho(request): mat_pdf = get_espelho(mats) pdf = pdf_espelho_gerar.principal( - None, imagem, - None, mat_pdf, cabecalho, rodape) @@ -466,6 +423,7 @@ def relatorio_espelho(request): return response + def get_espelho(mats): materias = [] for m in mats: @@ -520,7 +478,8 @@ def get_espelho(mats): dic['norma_juridica_vinculada'] = 'Não há nenhuma\ norma jurídica vinculada' # TODO - # for norma in context.zsql.materia_buscar_norma_juridica_zsql(cod_materia=materia.cod_materia): + # for norma in context.zsql.materia_buscar_norma_juridica_zsql( + # cod_materia=materia.cod_materia): # dic['norma_juridica_vinculada'] = norma.des_norma + " " + \ # str(norma.num_norma) + "/" + str(norma.ano_norma) @@ -528,6 +487,317 @@ def get_espelho(mats): return materias +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): + parlamentar = Parlamentar.objects.get( + 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_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, pk): + ''' + pdf_sessao_plenaria_gerar.py + ''' + + response = HttpResponse(content_type='application/pdf') + response['Content-Disposition'] = ( + 'attachment; filename="relatorio_protocolo.pdf"') + + casa = CasaLegislativa.objects.first() + + cabecalho = get_cabecalho(casa) + rodape = get_rodape(casa) + imagem = get_imagem(casa) + + sessao = SessaoPlenaria.objects.get(id=pk) + + (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 + + def get_protocolos(prots): protocolos = [] @@ -536,35 +806,37 @@ def get_protocolos(prots): dic['titulo'] = str(protocolo.numero) + '/' + str(protocolo.ano) - dic['data'] = protocolo.data.strftime("%d/%m/%Y") + ' - Horário:' + protocolo.hora.strftime("%H:%m") + dic['data'] = protocolo.data.strftime( + "%d/%m/%Y") + ' - Horário:' + protocolo.hora.strftime( + "%H:%m") dic['txt_assunto'] = protocolo.assunto_ementa dic['txt_interessado'] = protocolo.interessado - dic['nom_autor'] = " " - + dic['nom_autor'] = " " + if protocolo.autor: - if protocolo.autor.parlamentar: + if protocolo.autor.parlamentar: dic['nom_autor'] = protocolo.autor.parlamentar.nome_completo - elif protocolo.autor.comissao: + elif protocolo.autor.comissao: dic['nom_autor'] = protocolo.autor.comissao.nome - + dic['natureza'] = '' - + if protocolo.tipo_documento: - dic['natureza'] = 'Administrativo' - dic['processo'] = protocolo.tipo_documento.descricao + dic['natureza'] = 'Administrativo' + dic['processo'] = protocolo.tipo_documento.descricao elif protocolo.tipo_materia: - dic['natureza'] = 'Legislativo' - dic['processo'] = protocolo.tipo_materia.descricao + dic['natureza'] = 'Legislativo' + dic['processo'] = protocolo.tipo_materia.descricao else: - dic['natureza'] = 'Indefinida' - dic['processo'] = '' - + dic['natureza'] = 'Indefinida' + dic['processo'] = '' + dic['anulado'] = '' if protocolo.anulado: - dic['anulado']='Nulo' + dic['anulado'] = 'Nulo' protocolos.append(dic) @@ -577,7 +849,9 @@ def relatorio_protocolo(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() @@ -585,19 +859,293 @@ def relatorio_protocolo(request): rodape = get_rodape(casa) imagem = get_imagem(casa) - protocolos = Protocolo.objects.all()[:50] + kwargs = get_kwargs_params(request, ['numero', + 'ano', + 'tipo_protocolo', + 'tipo_processo', + 'autor', + 'assunto__icontains', + 'interessado__icontains']) + + protocolos = Protocolo.objects.filter(**kwargs) protocolo_data = get_protocolos(protocolos) - pdf = pdf_protocolo_gerar.principal(None, - imagem, - None, + pdf = pdf_protocolo_gerar.principal(imagem, protocolo_data, cabecalho, rodape) response.write(pdf) - return response + return response + +def relatorio_etiqueta_protocolo(request): + ''' + pdf__etiqueta_protocolo_gerar.py + ''' + + response = HttpResponse(content_type='application/pdf') + response[ + 'Content-Disposition'] = ( + 'attachment; filename="relatorio_etiqueta_protocolo.pdf"') + casa = CasaLegislativa.objects.first() + + cabecalho = get_cabecalho(casa) + rodape = get_rodape(casa) + imagem = get_imagem(casa) + + kwargs = get_kwargs_params(request, ['numero', + 'ano', + 'tipo_protocolo', + 'tipo_processo', + 'autor', + 'assunto__icontains', + 'interessado__icontains']) + + protocolos = Protocolo.objects.filter(**kwargs) + + protocolo_data = get_etiqueta_protocolos(protocolos) + + pdf = pdf_etiqueta_protocolo_gerar.principal(imagem, + protocolo_data, + cabecalho, + rodape) + + response.write(pdf) + + return response + + +def get_etiqueta_protocolos(prots): + + protocolos = [] + for p in prots: + dic = {} + + dic['titulo'] = str(p.numero) + '/' + str(p.ano) + dic['data'] = p.data.strftime( + "%d/%m/%Y") + ' - Horário:' + p.hora.strftime("%H:%m") + dic['txt_assunto'] = p.assunto_ementa + dic['txt_interessado'] = p.interessado + + dic['nom_autor'] = ' ' + + if p.autor: + if p.autor.parlamentar: + dic['nom_autor'] = p.autor.parlamentar.nome_completo + elif p.autor.comissao: + dic['nom_autor'] = p.autor.comissao.nome + + dic['natureza'] = '' + if p.tipo_processo == 0: + dic['natureza'] = 'Administrativo' + if p.tipo_processo == 1: + dic['natureza'] = 'Legislativo' + + dic['num_materia'] = '' + for materia in MateriaLegislativa.objects.filter( + numero_protocolo=p.numero, ano=p.ano): + dic['num_materia'] = str(materia) + + dic['num_documento'] = '' + for documento in DocumentoAdministrativo.objects.filter( + numero_protocolo=p.numero): + dic['num_documento'] = str(documento) + + dic['ident_processo'] = dic['num_materia'] or dic['num_documento'] + + dic['processo'] = (str(p.tipo_materia) or + str(p.tipo_documento)) + + dic['anulado'] = '' + if p.anulado: + dic['anulado'] = 'Nulo' + + protocolos.append(dic) + return protocolos + + +def relatorio_pauta_sessao(request): + ''' + pdf__pauta_sessao_gerar.py + ''' + + response = HttpResponse(content_type='application/pdf') + response[ + 'Content-Disposition'] = ( + 'attachment; filename="relatorio_pauta_sessao.pdf"') + + casa = CasaLegislativa.objects.first() + + cabecalho = get_cabecalho(casa) + rodape = get_rodape(casa) + imagem = get_imagem(casa) + + sessao = SessaoPlenaria.objects.first() + + lst_expediente_materia, lst_votacao, inf_basicas_dic = get_pauta_sessao( + sessao, casa) + pdf = pdf_pauta_sessao_gerar.principal(cabecalho, + rodape, + sessao, + imagem, + inf_basicas_dic, + lst_expediente_materia, + lst_votacao) + + response.write(pdf) + + return response + + +def get_pauta_sessao(sessao, casa): + + inf_basicas_dic = {} + inf_basicas_dic["nom_sessao"] = sessao.tipo.nome + inf_basicas_dic["num_sessao_plen"] = sessao.numero + inf_basicas_dic["num_legislatura"] = sessao.legislatura + inf_basicas_dic["num_sessao_leg"] = sessao.legislatura + inf_basicas_dic["dat_inicio_sessao"] = sessao.data_inicio + inf_basicas_dic["hr_inicio_sessao"] = sessao.hora_inicio + inf_basicas_dic["dat_fim_sessao"] = sessao.data_fim + inf_basicas_dic["hr_fim_sessao"] = sessao.hora_fim + inf_basicas_dic["nom_camara"] = casa.nome + + lst_expediente_materia = [] + for expediente_materia in ExpedienteMateria.objects.filter( + data_ordem=sessao.data_inicio, sessao_plenaria=sessao): + + materia = MateriaLegislativa.objects.filter( + id=expediente_materia.materia.id).first() + + dic_expediente_materia = {} + dic_expediente_materia["num_ordem"] = str( + expediente_materia.numero_ordem) + dic_expediente_materia["id_materia"] = str( + materia.numero) + "/" + str(materia.ano) + dic_expediente_materia["txt_ementa"] = materia.ementa + dic_expediente_materia["ordem_observacao"] = str( + expediente_materia.observacao) + + dic_expediente_materia["des_numeracao"] = ' ' + + numeracao = Numeracao.objects.filter(materia=materia) + if numeracao is not None: + numeracao = numeracao.first() + dic_expediente_materia["des_numeracao"] = str(numeracao) + + 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["des_turno"] = ' ' + dic_expediente_materia["des_situacao"] = ' ' + + tramitacao = Tramitacao.objects.filter(materia=materia) + if tramitacao is not None: + tramitacao = tramitacao.first() + + if tramitacao.turno != '': + for turno in [("P", "Primeiro"), + ("S", "Segundo"), + ("U", "Único"), + ("F", "Final"), + ("L", "Suplementar"), + ("A", "Votação Única em Regime de Urgência"), + ("B", "1ª Votação"), + ("C", "2ª e 3ª Votações")]: + if tramitacao.turno == turno.first(): + dic_expediente_materia["des_turno"] = turno.first() + + dic_expediente_materia["des_situacao"] = tramitacao.status + if dic_expediente_materia["des_situacao"] is None: + dic_expediente_materia["des_situacao"] = ' ' + lst_expediente_materia.append(dic_expediente_materia) + + lst_votacao = [] + for votacao in OrdemDia.objects.filter( + data_ordem=sessao.data_inicio, sessao_plenaria=sessao): + materia = MateriaLegislativa.objects.filter( + id=votacao.materia.id).first() + dic_votacao = {} + dic_votacao["num_ordem"] = votacao.numero_ordem + dic_votacao["id_materia"] = str( + materia.numero) + "/" + str(materia.ano) + dic_votacao["txt_ementa"] = materia.ementa + dic_votacao["ordem_observacao"] = votacao.observacao + + dic_votacao["des_numeracao"] = ' ' + numeracao = Numeracao.objects.filter(materia=materia) + # if numeracao is not None: + # numeracao = numeracao.first() + # dic_votacao["des_numeracao"] = str( + # numeracao.numero) + '/' + str(numeracao.ano) + + 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["des_turno"] = ' ' + dic_votacao["des_situacao"] = ' ' + tramitacao = Tramitacao.objects.filter(materia=materia) + if tramitacao is not None: + tramitacao = tramitacao.first() + if tramitacao.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")]: + if tramitacao.turno == turno.first(): + dic_votacao["des_turno"] = turno.first() + + dic_votacao["des_situacao"] = tramitacao.status + if dic_votacao["des_situacao"] is None: + dic_votacao["des_situacao"] = ' ' + lst_votacao.append(dic_votacao) + + return (lst_expediente_materia, + lst_votacao, + inf_basicas_dic) diff --git a/sapl/utils.py b/sapl/utils.py index 62a96c0e2..c27a2cc37 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -28,6 +28,10 @@ def register_all_models_in_admin(module_name): admin.site.register(model, CustomModelAdmin) +def xstr(s): + return '' if s is None else str(s) + + def make_choices(*choice_pairs): assert len(choice_pairs) % 2 == 0 ipairs = iter(choice_pairs) diff --git a/sessao/migrations/0012_auto_20160120_1237.py b/sessao/migrations/0012_auto_20160120_1237.py new file mode 100644 index 000000000..a72740276 --- /dev/null +++ b/sessao/migrations/0012_auto_20160120_1237.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('sessao', '0011_auto_20160113_1239'), + ] + + operations = [ + migrations.AddField( + model_name='registrovotacao', + name='expediente', + field=models.ForeignKey(blank=True, null=True, to='sessao.ExpedienteMateria'), + ), + migrations.AlterField( + model_name='registrovotacao', + name='ordem', + field=models.ForeignKey(blank=True, null=True, to='sessao.OrdemDia'), + ), + ] diff --git a/sessao/models.py b/sessao/models.py index 832e49b3c..46d255744 100644 --- a/sessao/models.py +++ b/sessao/models.py @@ -235,7 +235,8 @@ class RegistroVotacao(models.Model): tipo_resultado_votacao = models.ForeignKey( TipoResultadoVotacao, verbose_name=_('Resultado da Votação')) materia = models.ForeignKey(MateriaLegislativa) - ordem = models.ForeignKey(OrdemDia) + ordem = models.ForeignKey(OrdemDia, blank=True, null=True) + expediente = models.ForeignKey(ExpedienteMateria, blank=True, null=True) numero_votos_sim = models.PositiveIntegerField(verbose_name=_('Sim')) numero_votos_nao = models.PositiveIntegerField(verbose_name=_('Não')) numero_abstencoes = models.PositiveIntegerField( diff --git a/sessao/views.py b/sessao/views.py index 7a466348a..6ab3e15fe 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -1679,49 +1679,51 @@ class VotacaoNominalView(FormMixin, sessao_crud.CrudDetailView): nao_votou += 1 try: - votacao = RegistroVotacao() - votacao.numero_votos_sim = votos_sim - votacao.numero_votos_nao = votos_nao - votacao.numero_abstencoes = abstencoes - votacao.observacao = request.POST['observacao'] - votacao.materia_id = materia_id - votacao.ordem_id = ordem_id - votacao.tipo_resultado_votacao_id = int( - request.POST['resultado_votacao']) - votacao.save() - except: - return self.form_invalid(form) - else: votacao = RegistroVotacao.objects.get( materia_id=materia_id, ordem_id=ordem_id) + except ObjectDoesNotExist: + pass + else: + votacao.delete() + + votacao = RegistroVotacao() + votacao.numero_votos_sim = votos_sim + votacao.numero_votos_nao = votos_nao + votacao.numero_abstencoes = abstencoes + votacao.observacao = request.POST['observacao'] + votacao.materia_id = materia_id + votacao.ordem_id = ordem_id + votacao.tipo_resultado_votacao_id = int( + request.POST['resultado_votacao']) + votacao.save() - for votos in request.POST.getlist('voto_parlamentar'): - v = votos.split(':') - voto = v[0] - parlamentar_id = v[1] + for votos in request.POST.getlist('voto_parlamentar'): + v = votos.split(':') + voto = v[0] + parlamentar_id = v[1] - voto_parlamentar = VotoParlamentar() - if(voto == 'sim'): - voto_parlamentar.voto = 'Sim' - elif(voto == 'nao'): - voto_parlamentar.voto = 'Não' - elif(voto == 'abstencao'): - voto_parlamentar.voto = 'Abstenção' - elif(voto == 'nao_votou'): - voto_parlamentar.voto = 'Não Votou' - voto_parlamentar.parlamentar_id = parlamentar_id - voto_parlamentar.votacao_id = votacao.id - voto_parlamentar.save() + voto_parlamentar = VotoParlamentar() + if voto == 'sim': + voto_parlamentar.voto = 'Sim' + elif voto == 'nao': + voto_parlamentar.voto = 'Não' + elif voto == 'abstencao': + voto_parlamentar.voto = 'Abstenção' + elif voto == 'nao_votou': + voto_parlamentar.voto = 'Não Votou' + voto_parlamentar.parlamentar_id = parlamentar_id + voto_parlamentar.votacao_id = votacao.id + voto_parlamentar.save() - ordem = OrdemDia.objects.get( - sessao_plenaria_id=self.object.id, - materia_id=materia_id) - resultado = TipoResultadoVotacao.objects.get( - id=request.POST['resultado_votacao']) - ordem.resultado = resultado.nome - ordem.votacao_aberta = False - ordem.save() + ordem = OrdemDia.objects.get( + sessao_plenaria_id=self.object.id, + materia_id=materia_id) + resultado = TipoResultadoVotacao.objects.get( + id=request.POST['resultado_votacao']) + ordem.resultado = resultado.nome + ordem.votacao_aberta = False + ordem.save() return self.form_valid(form) else: @@ -1833,9 +1835,9 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView): self.object = self.get_object() context = self.get_context_data(object=self.object) - ordem_id = kwargs['mid'] + expediente_id = kwargs['mid'] - expediente = ExpedienteMateria.objects.get(id=ordem_id) + expediente = ExpedienteMateria.objects.get(id=expediente_id) materia = {'materia': expediente.materia, 'ementa': sub( @@ -1847,8 +1849,8 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView): def post(self, request, *args, **kwargs): self.object = self.get_object() - ordem_id = kwargs['mid'] - expediente = ExpedienteMateria.objects.get(id=ordem_id) + expediente_id = kwargs['mid'] + expediente = ExpedienteMateria.objects.get(id=expediente_id) form = VotacaoNominalForm(request.POST) @@ -1859,7 +1861,7 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView): if form.is_valid(): materia_id = kwargs['oid'] - ordem_id = kwargs['mid'] + expediente_id = kwargs['mid'] votos_sim = 0 votos_nao = 0 @@ -1887,7 +1889,7 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView): votacao.numero_abstencoes = abstencoes votacao.observacao = request.POST['observacao'] votacao.materia_id = materia_id - votacao.ordem_id = ordem_id + votacao.expediente = expediente votacao.tipo_resultado_votacao_id = int( request.POST['resultado_votacao']) votacao.save() @@ -1896,7 +1898,7 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView): else: votacao = RegistroVotacao.objects.get( materia_id=materia_id, - ordem_id=ordem_id) + expediente_id=expediente) for votos in request.POST.getlist('voto_parlamentar'): v = votos.split(':') @@ -1916,14 +1918,14 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView): voto_parlamentar.votacao_id = votacao.id voto_parlamentar.save() - ordem = ExpedienteMateria.objects.get( + expediente = ExpedienteMateria.objects.get( sessao_plenaria_id=self.object.id, materia_id=materia_id) resultado = TipoResultadoVotacao.objects.get( id=request.POST['resultado_votacao']) - ordem.resultado = resultado.nome - ordem.votacao_aberta = False - ordem.save() + expediente.resultado = resultado.nome + expediente.votacao_aberta = False + expediente.save() return self.form_valid(form) else: @@ -1959,12 +1961,12 @@ class VotacaoNominalExpedienteEditView(FormMixin, sessao_crud.CrudDetailView): context = self.get_context_data(object=self.object) materia_id = kwargs['oid'] - ordem_id = kwargs['mid'] + expediente_id = kwargs['mid'] votacao = RegistroVotacao.objects.get( materia_id=materia_id, - ordem_id=ordem_id) - ordem = ExpedienteMateria.objects.get(id=ordem_id) + expediente_id=expediente_id) + expediente = ExpedienteMateria.objects.get(id=expediente_id) votos = VotoParlamentar.objects.filter(votacao_id=votacao.id) list_votos = [] @@ -1974,9 +1976,9 @@ class VotacaoNominalExpedienteEditView(FormMixin, sessao_crud.CrudDetailView): context.update({'votos': list_votos}) - materia = {'materia': ordem.materia, + materia = {'materia': expediente.materia, 'ementa': sub( - ' ', ' ', strip_tags(ordem.observacao))} + ' ', ' ', strip_tags(expediente.observacao))} context.update({'materia': materia}) votacao_existente = {'observacao': sub( @@ -1992,19 +1994,19 @@ class VotacaoNominalExpedienteEditView(FormMixin, sessao_crud.CrudDetailView): form = VotacaoEdit(request.POST) materia_id = kwargs['oid'] - ordem_id = kwargs['mid'] + expediente_id = kwargs['mid'] if(int(request.POST['anular_votacao']) == 1): registro = RegistroVotacao.objects.get( materia_id=materia_id, - ordem_id=ordem_id) + expediente_id=expediente_id) - ordem = ExpedienteMateria.objects.get( + expediente = ExpedienteMateria.objects.get( sessao_plenaria_id=self.object.id, materia_id=materia_id) - ordem.resultado = None - ordem.votacao_aberta = False - ordem.save() + expediente.resultado = None + expediente.votacao_aberta = False + expediente.save() try: votacao = VotoParlamentar.objects.filter( @@ -2049,12 +2051,13 @@ class VotacaoExpedienteView(FormMixin, sessao_crud.CrudDetailView): else: titulo = "Não definida" - ordem_id = kwargs['mid'] - ordem = ExpedienteMateria.objects.get(id=ordem_id) + expediente_id = kwargs['mid'] + expediente = ExpedienteMateria.objects.get(id=expediente_id) qtde_presentes = SessaoPlenariaPresenca.objects.filter( sessao_plenaria_id=self.object.id).count() - materia = {'materia': ordem.materia, 'ementa': ordem.observacao} + materia = {'materia': expediente.materia, + 'ementa': expediente.observacao} context.update({'votacao_titulo': titulo, 'materia': materia, 'total_presentes': qtde_presentes}) @@ -2075,12 +2078,13 @@ class VotacaoExpedienteView(FormMixin, sessao_crud.CrudDetailView): else: titulo = "Não definida" - ordem_id = kwargs['mid'] - ordem = ExpedienteMateria.objects.get(id=ordem_id) + expediente_id = kwargs['mid'] + expediente = ExpedienteMateria.objects.get(id=expediente_id) qtde_presentes = SessaoPlenariaPresenca.objects.filter( sessao_plenaria_id=self.object.id).count() - materia = {'materia': ordem.materia, 'ementa': ordem.observacao} + materia = {'materia': expediente.materia, + 'ementa': expediente.observacao} context.update({'votacao_titulo': titulo, 'materia': materia, 'total_presentes': qtde_presentes}) @@ -2088,13 +2092,15 @@ class VotacaoExpedienteView(FormMixin, sessao_crud.CrudDetailView): # ==================================================== if 'cancelar-votacao' in request.POST: - ordem.votacao_aberta = False - ordem.save() + expediente.votacao_aberta = False + expediente.save() return self.form_valid(form) + # import ipdb; ipdb.set_trace() + if form.is_valid(): materia_id = kwargs['oid'] - ordem_id = kwargs['mid'] + expediente_id = kwargs['mid'] qtde_presentes = SessaoPlenariaPresenca.objects.filter( sessao_plenaria_id=self.object.id).count() @@ -2116,21 +2122,21 @@ class VotacaoExpedienteView(FormMixin, sessao_crud.CrudDetailView): votacao.numero_abstencoes = int(request.POST['abstencoes']) votacao.observacao = request.POST['observacao'] votacao.materia_id = materia_id - votacao.ordem_id = ordem_id + votacao.expediente_id = expediente_id votacao.tipo_resultado_votacao_id = int( request.POST['resultado_votacao']) votacao.save() except: return self.form_invalid(form) else: - ordem = ExpedienteMateria.objects.get( + expediente = ExpedienteMateria.objects.get( sessao_plenaria_id=self.object.id, materia_id=materia_id) resultado = TipoResultadoVotacao.objects.get( id=request.POST['resultado_votacao']) - ordem.resultado = resultado.nome - ordem.votacao_aberta = False - ordem.save() + expediente.resultado = resultado.nome + expediente.votacao_aberta = False + expediente.save() return self.form_valid(form) else: @@ -2154,29 +2160,17 @@ class VotacaoExpedienteEditView(FormMixin, sessao_crud.CrudDetailView): template_name = 'sessao/votacao/votacao_edit.html' - def post(self, request, *args, **kwargs): - - self.object = self.get_object() - form = VotacaoEdit(request.POST) - - materia_id = kwargs['oid'] - ordem_id = kwargs['mid'] - - if(int(request.POST['anular_votacao']) == 1): - RegistroVotacao.objects.get( - materia_id=materia_id, - ordem_id=ordem_id).delete() - - ordem = ExpedienteMateria.objects.get( - sessao_plenaria_id=self.object.id, - materia_id=materia_id) - ordem.votacao_aberta = False - ordem.resultado = None - ordem.save() + def get_success_url(self): + pk = self.kwargs['pk'] + return reverse('sessaoplenaria:expedienteordemdia_list', + kwargs={'pk': pk}) - return self.form_valid(form) + def get_tipos_votacao(self): + for tipo in TipoResultadoVotacao.objects.all(): + yield tipo def get(self, request, *args, **kwargs): + # import ipdb; ipdb.set_trace() self.object = self.get_object() context = self.get_context_data(object=self.object) @@ -2190,16 +2184,17 @@ class VotacaoExpedienteEditView(FormMixin, sessao_crud.CrudDetailView): titulo = "Não definida" materia_id = kwargs['oid'] - ordem_id = kwargs['mid'] + expediente_id = kwargs['mid'] - ordem = ExpedienteMateria.objects.get(id=ordem_id) + expediente = ExpedienteMateria.objects.get(id=expediente_id) - materia = {'materia': ordem.materia, 'ementa': ordem.observacao} + materia = {'materia': expediente.materia, + 'ementa': expediente.observacao} context.update({'materia': materia}) votacao = RegistroVotacao.objects.get( materia_id=materia_id, - ordem_id=ordem_id) + expediente_id=expediente_id) votacao_existente = {'observacao': sub( ' ', ' ', strip_tags(votacao.observacao)), 'tipo_resultado': @@ -2209,14 +2204,27 @@ class VotacaoExpedienteEditView(FormMixin, sessao_crud.CrudDetailView): return self.render_to_response(context) - def get_tipos_votacao(self): - for tipo in TipoResultadoVotacao.objects.all(): - yield tipo + def post(self, request, *args, **kwargs): - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('sessaoplenaria:expedienteordemdia_list', - kwargs={'pk': pk}) + self.object = self.get_object() + form = VotacaoEdit(request.POST) + + materia_id = kwargs['oid'] + expediente_id = kwargs['mid'] + + if(int(request.POST['anular_votacao']) == 1): + RegistroVotacao.objects.get( + materia_id=materia_id, + expediente_id=expediente_id).delete() + + expediente = ExpedienteMateria.objects.get( + sessao_plenaria_id=self.object.id, + materia_id=materia_id) + expediente.votacao_aberta = False + expediente.resultado = None + expediente.save() + + return self.form_valid(form) class SessaoListView(ListView): diff --git a/templates/materia/materialegislativa_list.html b/templates/materia/materialegislativa_list.html index 2c67afaa0..8c0cfd0cf 100644 --- a/templates/materia/materialegislativa_list.html +++ b/templates/materia/materialegislativa_list.html @@ -5,4 +5,8 @@
{% blocktrans with verbose_name=view.verbose_name %} Formulário Simplificado {% endblocktrans %}
+ +
+ {% blocktrans with verbose_name=view.verbose_name %} Pesquisar Matéria {% endblocktrans %} +
{% endblock more_buttons %} diff --git a/templates/painel/index.html b/templates/painel/index.html index d54f8d33e..4460ce721 100644 --- a/templates/painel/index.html +++ b/templates/painel/index.html @@ -93,21 +93,44 @@ var presentes = $("#parlamentares"); presentes.children().remove(); - presentes_ordem_dia = data["presentes_ordem_dia"] - jQuery.each(presentes_ordem_dia, function(index, parlamentar) { -/* $('
  • ', {text: parlamentar.nome + '/' + parlamentar.partido + ' ' + parlamentar.voto }).appendTo(presentes);*/ - $('
  • ', {text: parlamentar.nome + '/' + parlamentar.partido}).appendTo(presentes); - }); - - //console.debug(presentes_ordem_dia) - - var votacao = $("#votacao") - votacao.children().remove() - votacao.append("
  • Sim: " + data["numero_votos_sim"] + "
  • ") - votacao.append("
  • Não: " + data["numero_votos_nao"] + "
  • ") - votacao.append("
  • Abstenções: " + data["numero_abstencoes"] + "
  • ") - votacao.append("
  • Presentes: " + data["num_presentes_ordem_dia"] + "
  • ") - votacao.append("
  • Total votos: " + data["total_votos"] + "
  • ") + if (data["presentes_ordem_dia"] != null) { + presentes_ordem_dia = data["presentes_ordem_dia"]; + } + else if (data["presentes_expediente"] != null){ + presentes_ordem_dia = data["presentes_expediente"] + } + + + if( (data["tipo_resultado"] == "Aprovado por unanimidade") || (data["tipo_resultado"] == "Aprovado por maioria") || (data["tipo_resultado"] == "Rejeitado")){ + if(data["tipo_votacao"] == "Nominal") { + jQuery.each(data["votos"], function(index, parlamentar) { + $('
  • ', {text: parlamentar.parlamentar + ' / ' + parlamentar.partido + '/ Voto: ' + parlamentar.voto}).appendTo(presentes); + }); + } + }else{ + jQuery.each(presentes_ordem_dia, function(index, parlamentar) { + $('
  • ', {text: parlamentar.nome + '/' + parlamentar.partido}).appendTo(presentes); + }); + } + + //console.debug(presentes_ordem_dia) + + var votacao = $("#votacao") + + if (data["num_presentes_ordem_dia"] != null) { + num_presentes_ordem_dia = data["num_presentes_ordem_dia"]; + } + else if (data["num_presentes_expediente"] != null){ + num_presentes_ordem_dia = data["num_presentes_expediente"] + } + + votacao.children().remove() + votacao.append("
  • Sim: " + data["numero_votos_sim"] + "
  • ") + votacao.append("
  • Não: " + data["numero_votos_nao"] + "
  • ") + votacao.append("
  • Abstenções: " + data["numero_abstencoes"] + "
  • ") + votacao.append("
  • Presentes: " + num_presentes_ordem_dia + "
  • ") + votacao.append("
  • Total votos: " + data["total_votos"] + "
  • ") + var discurso_current = data["cronometro_discurso"]; if (discurso_current != discurso_previous) { diff --git a/templates/sessao/pauta_sessao_detail.html b/templates/sessao/pauta_sessao_detail.html index 82a748f1e..f2944b1e6 100644 --- a/templates/sessao/pauta_sessao_detail.html +++ b/templates/sessao/pauta_sessao_detail.html @@ -4,6 +4,8 @@ {% block actions %}{% endblock %} {% block detail_content %} +
    +
    Pauta da Sessão
    {{ sessaoplenaria }}