From 29036d2664ed4b3c8b18f781736a7bc947ccdc4b Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Wed, 20 Jan 2016 10:11:38 -0200 Subject: [PATCH 01/20] Git merge --- relatorios/urls.py | 2 +- relatorios/views.py | 61 ++++++++++++++++++++++++++------------------- 2 files changed, 37 insertions(+), 26 deletions(-) diff --git a/relatorios/urls.py b/relatorios/urls.py index d31a73f6c..b40a009c8 100644 --- a/relatorios/urls.py +++ b/relatorios/urls.py @@ -16,5 +16,5 @@ urlpatterns = [ url(r'^relatorios/espelho$', relatorio_espelho, name='relatorio_espelho'), url(r'^relatorios/protocolo$', - relatorio_protocolo, name='relatorio_protocolo') + relatorio_protocolo, name='relatorio_protocolo') ] diff --git a/relatorios/views.py b/relatorios/views.py index d20f478ad..fe5fd310f 100644 --- a/relatorios/views.py +++ b/relatorios/views.py @@ -7,13 +7,16 @@ from base.views import ESTADOS from comissoes.models import Comissao from materia.models import (Autor, Autoria, MateriaLegislativa, Numeracao, Tramitacao, UnidadeTramitacao) +from django.http import HttpResponse +from sessao.models import OrdemDia + from parlamentares.models import Parlamentar from protocoloadm.models import (DocumentoAdministrativo, Protocolo, TramitacaoAdministrativo) from sessao.models import OrdemDia, SessaoPlenaria from .templates import (pdf_capa_processo_gerar, - pdf_documento_administrativo_gerar, + pdf_documento_administrativo_gerar, pdf_espelho_gerar, pdf_materia_gerar, pdf_protocolo_gerar) @@ -141,7 +144,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() @@ -237,7 +241,8 @@ def relatorio_processo(request): ''' 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() @@ -348,7 +353,9 @@ 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() @@ -378,7 +385,8 @@ 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() @@ -438,13 +446,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() @@ -466,6 +476,7 @@ def relatorio_espelho(request): return response + def get_espelho(mats): materias = [] for m in mats: @@ -536,35 +547,36 @@ 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 +589,8 @@ 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() @@ -598,6 +611,4 @@ def relatorio_protocolo(request): response.write(pdf) - return response - - + return response From b3d769fa909757ef3961946499b8ece558c72ea5 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Wed, 20 Jan 2016 10:44:24 -0200 Subject: [PATCH 02/20] Add etiqueta protocolo report --- .../templates/pdf_etiqueta_protocolo_gerar.py | 161 ++++++++++-------- relatorios/urls.py | 7 +- relatorios/views.py | 86 +++++++++- 3 files changed, 177 insertions(+), 77 deletions(-) diff --git a/relatorios/templates/pdf_etiqueta_protocolo_gerar.py b/relatorios/templates/pdf_etiqueta_protocolo_gerar.py index 6b17b06e1..cc686042b 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(sessao, imagem, data, lst_protocolos, dic_cabecalho, lst_rodape, dic_filtro={}): """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/urls.py b/relatorios/urls.py index b40a009c8..810e071ba 100644 --- a/relatorios/urls.py +++ b/relatorios/urls.py @@ -2,7 +2,8 @@ from django.conf.urls import url from .views import (relatorio_documento_administrativo, relatorio_materia, relatorio_ordem_dia, relatorio_processo, - relatorio_protocolo, relatorio_espelho) + relatorio_protocolo, relatorio_espelho, + relatorio_etiqueta_protocolo) urlpatterns = [ url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'), @@ -16,5 +17,7 @@ urlpatterns = [ url(r'^relatorios/espelho$', relatorio_espelho, name='relatorio_espelho'), 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') ] diff --git a/relatorios/views.py b/relatorios/views.py index fe5fd310f..26a2b4eed 100644 --- a/relatorios/views.py +++ b/relatorios/views.py @@ -7,19 +7,21 @@ from base.views import ESTADOS from comissoes.models import Comissao from materia.models import (Autor, Autoria, MateriaLegislativa, Numeracao, Tramitacao, UnidadeTramitacao) + from django.http import HttpResponse -from sessao.models import OrdemDia from parlamentares.models import Parlamentar from protocoloadm.models import (DocumentoAdministrativo, Protocolo, TramitacaoAdministrativo) + from sessao.models import OrdemDia, SessaoPlenaria from .templates import (pdf_capa_processo_gerar, pdf_documento_administrativo_gerar, pdf_espelho_gerar, pdf_materia_gerar, - pdf_protocolo_gerar) + pdf_protocolo_gerar, + pdf_etiqueta_protocolo_gerar) def get_cabecalho(casa): @@ -612,3 +614,83 @@ def relatorio_protocolo(request): response.write(pdf) 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) + + protocolos = Protocolo.objects.all()[:50] + + protocolo_data = get_etiqueta_protocolos(protocolos) + + pdf = pdf_etiqueta_protocolo_gerar.principal(None, + imagem, + None, + 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 From 2b623395cfe225c84466d3633d20c0c8156d733c Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Wed, 20 Jan 2016 12:40:52 -0200 Subject: [PATCH 03/20] Updating RegistroVotacao para Expediente --- sessao/migrations/0012_auto_20160120_1237.py | 24 ++++++++++++++++++++ sessao/models.py | 3 ++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 sessao/migrations/0012_auto_20160120_1237.py 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( From 172cd3a37750b5f01140a641988b55ed53e5f497 Mon Sep 17 00:00:00 2001 From: Eduardo Calil Date: Wed, 20 Jan 2016 13:34:34 -0200 Subject: [PATCH 04/20] =?UTF-8?q?Fix=20Vota=C3=A7=C3=B5es=20in=20Expedient?= =?UTF-8?q?eMateria?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sessao/views.py | 138 +++++++++++++++++++++++++----------------------- 1 file changed, 71 insertions(+), 67 deletions(-) diff --git a/sessao/views.py b/sessao/views.py index 7a466348a..05f4dd79a 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -1833,9 +1833,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 +1847,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 +1859,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 +1887,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 +1896,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 +1916,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 +1959,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 +1974,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 +1992,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 +2049,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 +2076,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 +2090,13 @@ 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) 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 +2118,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 +2156,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 +2180,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 +2200,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): From c5194a4941eefd2de5b9c840cd91c55dc326065e Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Thu, 21 Jan 2016 12:19:17 -0200 Subject: [PATCH 05/20] Add pauta_sessao report --- .../templates/pdf_pauta_sessao_gerar.py | 260 +++++++++--------- relatorios/urls.py | 7 +- relatorios/views.py | 188 ++++++++++++- 3 files changed, 318 insertions(+), 137 deletions(-) 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/urls.py b/relatorios/urls.py index 810e071ba..3080ba7a0 100644 --- a/relatorios/urls.py +++ b/relatorios/urls.py @@ -3,7 +3,8 @@ from django.conf.urls import url from .views import (relatorio_documento_administrativo, relatorio_materia, relatorio_ordem_dia, relatorio_processo, relatorio_protocolo, relatorio_espelho, - relatorio_etiqueta_protocolo) + relatorio_etiqueta_protocolo, + relatorio_pauta_sessao) urlpatterns = [ url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'), @@ -19,5 +20,7 @@ urlpatterns = [ url(r'^relatorios/protocolo$', relatorio_protocolo, name='relatorio_protocolo'), url(r'^relatorios/etiqueta_protocolo$', - relatorio_etiqueta_protocolo, name='relatorio_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 26a2b4eed..c2a9b7c1b 100644 --- a/relatorios/views.py +++ b/relatorios/views.py @@ -8,20 +8,19 @@ from comissoes.models import Comissao from materia.models import (Autor, Autoria, MateriaLegislativa, Numeracao, Tramitacao, UnidadeTramitacao) -from django.http import HttpResponse - from parlamentares.models import Parlamentar from protocoloadm.models import (DocumentoAdministrativo, Protocolo, TramitacaoAdministrativo) -from sessao.models import OrdemDia, SessaoPlenaria +from sessao.models import (ExpedienteMateria, OrdemDia, SessaoPlenaria) from .templates import (pdf_capa_processo_gerar, pdf_documento_administrativo_gerar, pdf_espelho_gerar, pdf_materia_gerar, pdf_protocolo_gerar, - pdf_etiqueta_protocolo_gerar) + pdf_etiqueta_protocolo_gerar, + pdf_pauta_sessao_gerar) def get_cabecalho(casa): @@ -694,3 +693,184 @@ def get_etiqueta_protocolos(prots): 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) From ea54237d2bf81b6cfaea9ababc5564d66e340ad6 Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Thu, 21 Jan 2016 12:20:04 -0200 Subject: [PATCH 06/20] Scaffold of relatorio sessao plenaria --- relatorios/urls.py | 5 +- relatorios/views.py | 235 ++++++++++++++++++++++++++++++++++++++++++++ sessao/views.py | 2 + 3 files changed, 241 insertions(+), 1 deletion(-) diff --git a/relatorios/urls.py b/relatorios/urls.py index 3080ba7a0..bc4b6d22f 100644 --- a/relatorios/urls.py +++ b/relatorios/urls.py @@ -4,7 +4,8 @@ from .views import (relatorio_documento_administrativo, relatorio_materia, relatorio_ordem_dia, relatorio_processo, relatorio_protocolo, relatorio_espelho, relatorio_etiqueta_protocolo, - relatorio_pauta_sessao) + relatorio_pauta_sessao, + relatorio_sessao_plenaria) urlpatterns = [ url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'), @@ -17,6 +18,8 @@ urlpatterns = [ name='relatorio_documento_administrativo'), url(r'^relatorios/espelho$', relatorio_espelho, name='relatorio_espelho'), + url(r'^relatorios/sessao_plenaria$', + relatorio_sessao_plenaria, name='relatorio_sessao_plenaria'), url(r'^relatorios/protocolo$', relatorio_protocolo, name='relatorio_protocolo'), url(r'^relatorios/etiqueta_protocolo$', diff --git a/relatorios/views.py b/relatorios/views.py index c2a9b7c1b..6e9d0a532 100644 --- a/relatorios/views.py +++ b/relatorios/views.py @@ -539,6 +539,241 @@ 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 relatorio_sessao_plenaria(request): + ''' + 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) + + # protocolos = Protocolo.objects.all()[:50] + + sessao_data = get_sessao_plenaria(sessao) + + pdf = pdf_sessao_plenaria_gerar.principal(None, + imagem, + None, + sessao_data, + cabecalho, + rodape) + + response.write(pdf) + + return response def get_protocolos(prots): diff --git a/sessao/views.py b/sessao/views.py index 05f4dd79a..e1717f876 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -2094,6 +2094,8 @@ class VotacaoExpedienteView(FormMixin, sessao_crud.CrudDetailView): expediente.save() return self.form_valid(form) + # import ipdb; ipdb.set_trace() + if form.is_valid(): materia_id = kwargs['oid'] expediente_id = kwargs['mid'] From 921bb91f8666ad00656bd22af5b945b5fa8f3cdc Mon Sep 17 00:00:00 2001 From: Eduardo Calil Date: Thu, 21 Jan 2016 13:33:22 -0200 Subject: [PATCH 07/20] Create Painel conditions --- painel/views.py | 144 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 125 insertions(+), 19 deletions(-) diff --git a/painel/views.py b/painel/views.py index d338a77db..f87202ab3 100644 --- a/painel/views.py +++ b/painel/views.py @@ -10,7 +10,7 @@ from parlamentares.models import Filiacao from sapl.crud import build_crud from sessao.models import (OrdemDia, PresencaOrdemDia, RegistroVotacao, SessaoPlenaria, SessaoPlenariaPresenca, - VotoParlamentar) + VotoParlamentar, ExpedienteMateria) from .models import Cronometro @@ -72,6 +72,7 @@ def get_cronometro_status(request, name): cronometro = '' return cronometro +# ##############################ORDEM DO DIA################################## def get_materia_aberta(pk): try: @@ -150,6 +151,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).first() + return materia + except ObjectDoesNotExist: + return False + + +def get_last_materia_expediente(pk): + try: + materia = ExpedienteMateria.objects.filter( + sessao_plenaria_id=pk).order_by('-data_ordem').first() + 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', @@ -220,22 +303,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) From 8cee762eca623938cd4ab1b56170df6a37bbf13a Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 25 Jan 2016 10:36:39 -0200 Subject: [PATCH 08/20] Add sessao_plenaria report --- .../templates/pdf_sessao_plenaria_gerar.py | 369 +++++++------ relatorios/urls.py | 2 +- relatorios/views.py | 520 ++++++++++-------- 3 files changed, 495 insertions(+), 396 deletions(-) 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): From 120b07e7288efc7620fb723ae82cb5698e88487a Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Mon, 25 Jan 2016 10:47:12 -0200 Subject: [PATCH 09/20] Fix qa_check alerts --- painel/views.py | 7 +-- relatorios/urls.py | 11 ++-- relatorios/views.py | 128 +++++++++----------------------------------- 3 files changed, 35 insertions(+), 111 deletions(-) diff --git a/painel/views.py b/painel/views.py index f87202ab3..034953698 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, ExpedienteMateria) +from sessao.models import (ExpedienteMateria, OrdemDia, PresencaOrdemDia, + RegistroVotacao, SessaoPlenaria, + SessaoPlenariaPresenca, VotoParlamentar) from .models import Cronometro @@ -74,6 +74,7 @@ def get_cronometro_status(request, name): # ##############################ORDEM DO DIA################################## + def get_materia_aberta(pk): try: materia = OrdemDia.objects.filter( diff --git a/relatorios/urls.py b/relatorios/urls.py index 658607d20..f2b9b477c 100644 --- a/relatorios/urls.py +++ b/relatorios/urls.py @@ -1,11 +1,10 @@ from django.conf.urls import url -from .views import (relatorio_documento_administrativo, relatorio_materia, - relatorio_ordem_dia, relatorio_processo, - relatorio_protocolo, relatorio_espelho, - relatorio_etiqueta_protocolo, - relatorio_pauta_sessao, - relatorio_sessao_plenaria,) +from .views import (relatorio_documento_administrativo, relatorio_espelho, + relatorio_etiqueta_protocolo, relatorio_materia, + relatorio_ordem_dia, relatorio_pauta_sessao, + relatorio_processo, relatorio_protocolo, + relatorio_sessao_plenaria) urlpatterns = [ url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'), diff --git a/relatorios/views.py b/relatorios/views.py index 63b1a8c9c..c3facc1d7 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,28 +8,21 @@ 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, ComposicaoMesa, - CargoMesa, Filiacao) +from parlamentares.models import (CargoMesa, ComposicaoMesa, Filiacao, + Parlamentar) from protocoloadm.models import (DocumentoAdministrativo, Protocolo, TramitacaoAdministrativo) - -from sessao.models import (OrdemDia, SessaoPlenaria, - SessaoPlenariaPresenca, - TipoExpediente, ExpedienteSessao, ExpedienteMateria, - RegistroVotacao, - OradorExpediente, PresencaOrdemDia, Orador) +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_etiqueta_protocolo_gerar, - pdf_pauta_sessao_gerar, + pdf_documento_administrativo_gerar, pdf_espelho_gerar, + pdf_etiqueta_protocolo_gerar, pdf_materia_gerar, + pdf_pauta_sessao_gerar, pdf_protocolo_gerar, pdf_sessao_plenaria_gerar) -from bs4 import BeautifulSoup def get_cabecalho(casa): @@ -250,7 +244,8 @@ def relatorio_processo(request): response = HttpResponse(content_type='application/pdf') response[ - 'Content-Disposition'] = 'attachment; filename="relatorio_processo.pdf"' + 'Content-Disposition'] = ( + 'attachment; filename="relatorio_processo.pdf"') casa = CasaLegislativa.objects.first() @@ -276,84 +271,6 @@ 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) - def relatorio_ordem_dia(request): ''' @@ -363,7 +280,8 @@ def relatorio_ordem_dia(request): response = HttpResponse(content_type='application/pdf') response[ - 'Content-Disposition'] = 'attachment; filename="relatorio_ordem_dia.pdf"' + 'Content-Disposition'] = ( + 'attachment; filename="relatorio_ordem_dia.pdf"') casa = CasaLegislativa.objects.first() @@ -394,7 +312,8 @@ def relatorio_documento_administrativo(request): response = HttpResponse(content_type='application/pdf') response[ - 'Content-Disposition'] = 'attachment; filename="relatorio_documento_administrativo.pdf"' + 'Content-Disposition'] = ( + 'attachment; filename="relatorio_documento_administrativo.pdf"') casa = CasaLegislativa.objects.first() @@ -539,7 +458,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) @@ -868,7 +788,8 @@ 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") + "%d/%m/%Y") + ' - Horário:' + protocolo.hora.strftime( + "%H:%m") dic['txt_assunto'] = protocolo.assunto_ementa @@ -910,7 +831,8 @@ def relatorio_protocolo(request): response = HttpResponse(content_type='application/pdf') response[ - 'Content-Disposition'] = 'attachment; filename="relatorio_protocolo.pdf"' + 'Content-Disposition'] = ( + 'attachment; filename="relatorio_protocolo.pdf"') casa = CasaLegislativa.objects.first() @@ -941,7 +863,8 @@ def relatorio_etiqueta_protocolo(request): response = HttpResponse(content_type='application/pdf') response[ - 'Content-Disposition'] = 'attachment; filename="relatorio_etiqueta_protocolo.pdf"' + 'Content-Disposition'] = ( + 'attachment; filename="relatorio_etiqueta_protocolo.pdf"') casa = CasaLegislativa.objects.first() @@ -1021,7 +944,8 @@ def relatorio_pauta_sessao(request): response = HttpResponse(content_type='application/pdf') response[ - 'Content-Disposition'] = 'attachment; filename="relatorio_pauta_sessao.pdf"' + 'Content-Disposition'] = ( + 'attachment; filename="relatorio_pauta_sessao.pdf"') casa = CasaLegislativa.objects.first() From 2b4a729014f8860d03957d35e9bb03f6b115734b Mon Sep 17 00:00:00 2001 From: Eduardo Calil Date: Mon, 25 Jan 2016 12:51:39 -0200 Subject: [PATCH 10/20] Finish Painel Fix #169 and Fix #45 --- parlamentares/views.py | 1 - templates/painel/index.html | 20 +++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) 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/templates/painel/index.html b/templates/painel/index.html index d54f8d33e..aba9fd8c4 100644 --- a/templates/painel/index.html +++ b/templates/painel/index.html @@ -93,20 +93,34 @@ var presentes = $("#parlamentares"); presentes.children().remove(); - presentes_ordem_dia = data["presentes_ordem_dia"] + 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"] + } + 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) + //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: " + data["num_presentes_ordem_dia"] + "
  • ") + votacao.append("
  • Presentes: " + num_presentes_ordem_dia + "
  • ") votacao.append("
  • Total votos: " + data["total_votos"] + "
  • ") var discurso_current = data["cronometro_discurso"]; From 2c050b10ddfde01492db3cfac910148b312b8a98 Mon Sep 17 00:00:00 2001 From: Eduardo Calil Date: Mon, 25 Jan 2016 13:36:56 -0200 Subject: [PATCH 11/20] Make part of issue 170 --- painel/views.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/painel/views.py b/painel/views.py index 034953698..b9652f0a1 100644 --- a/painel/views.py +++ b/painel/views.py @@ -243,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 + @@ -253,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 @@ -261,6 +270,13 @@ 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) @@ -282,6 +298,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 }) From 83d274a6655135de710e3886597b922275f58343 Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Mon, 25 Jan 2016 16:28:50 -0200 Subject: [PATCH 12/20] Add filter params to reports (wip) --- protocoloadm/views.py | 1 - .../templates/pdf_capa_processo_gerar.py | 4 +- relatorios/urls.py | 10 ++-- relatorios/views.py | 59 ++++++++++++++----- sapl/utils.py | 4 ++ 5 files changed, 57 insertions(+), 21 deletions(-) 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..40a05c217 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,7 +62,7 @@ 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 diff --git a/relatorios/urls.py b/relatorios/urls.py index f2b9b477c..806d6d042 100644 --- a/relatorios/urls.py +++ b/relatorios/urls.py @@ -1,15 +1,15 @@ from django.conf.urls import url -from .views import (relatorio_documento_administrativo, 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_processo, relatorio_protocolo, - relatorio_sessao_plenaria) + 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$', diff --git a/relatorios/views.py b/relatorios/views.py index c3facc1d7..80caca2b8 100644 --- a/relatorios/views.py +++ b/relatorios/views.py @@ -20,8 +20,20 @@ from sessao.models import (ExpedienteMateria, ExpedienteSessao, Orador, from .templates import (pdf_capa_processo_gerar, pdf_documento_administrativo_gerar, pdf_espelho_gerar, pdf_etiqueta_protocolo_gerar, pdf_materia_gerar, - pdf_pauta_sessao_gerar, pdf_protocolo_gerar, - pdf_sessao_plenaria_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): @@ -155,8 +167,15 @@ 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) @@ -237,7 +256,7 @@ def get_capa_processo(prot): return protocolos -def relatorio_processo(request): +def relatorio_capa_processo(request): ''' pdf_capa_processo_gerar.py ''' @@ -253,9 +272,15 @@ 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, @@ -269,6 +294,8 @@ def relatorio_processo(request): def get_ordem_dia(ordem, sessao): + + # TODO: fazer implementação de ordem dia pass @@ -289,16 +316,19 @@ 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(None, + imagem, + None, + ordem_pdf, + cabecalho, + rodape) response.write(pdf) @@ -954,6 +984,7 @@ def relatorio_pauta_sessao(request): 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, 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) From b1d12d0592d8fc0c0cff2d2bccab28d9b93052f3 Mon Sep 17 00:00:00 2001 From: Edward Ribeiro Date: Mon, 25 Jan 2016 18:15:24 -0200 Subject: [PATCH 13/20] Refactor pdf generator functions --- .../templates/pdf_capa_processo_gerar.py | 2 +- .../pdf_documento_administrativo_gerar.py | 2 +- relatorios/templates/pdf_espelho_gerar.py | 2 +- .../templates/pdf_etiqueta_protocolo_gerar.py | 2 +- relatorios/templates/pdf_materia_gerar.py | 2 +- relatorios/templates/pdf_norma_gerar.py | 2 +- relatorios/templates/pdf_ordem_dia_gerar.py | 2 +- relatorios/templates/pdf_protocolo_gerar.py | 2 +- relatorios/views.py | 44 ++++++++++--------- 9 files changed, 31 insertions(+), 29 deletions(-) diff --git a/relatorios/templates/pdf_capa_processo_gerar.py b/relatorios/templates/pdf_capa_processo_gerar.py index 40a05c217..b64c58d7e 100755 --- a/relatorios/templates/pdf_capa_processo_gerar.py +++ b/relatorios/templates/pdf_capa_processo_gerar.py @@ -68,7 +68,7 @@ def protocolos(lst_protocolos): 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 cc686042b..96b5bf1e3 100755 --- a/relatorios/templates/pdf_etiqueta_protocolo_gerar.py +++ b/relatorios/templates/pdf_etiqueta_protocolo_gerar.py @@ -100,7 +100,7 @@ def protocolos(lst_protocolos, dic_cabecalho): 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_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_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/views.py b/relatorios/views.py index 80caca2b8..d420ec572 100644 --- a/relatorios/views.py +++ b/relatorios/views.py @@ -179,9 +179,7 @@ def relatorio_materia(request): materias = get_materias(mats) - pdf = pdf_materia_gerar.principal(None, - imagem, - None, + pdf = pdf_materia_gerar.principal(imagem, materias, cabecalho, rodape) @@ -281,9 +279,7 @@ def relatorio_capa_processo(request): ]) 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) @@ -323,9 +319,7 @@ def relatorio_ordem_dia(request): sessao = SessaoPlenaria.objects.first() ordem_pdf = get_ordem_dia(ordem, sessao) - pdf = pdf_ordem_dia_gerar.principal(None, - imagem, - None, + pdf = pdf_ordem_dia_gerar.principal(imagem, ordem_pdf, cabecalho, rodape) @@ -355,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) @@ -423,9 +415,7 @@ def relatorio_espelho(request): mat_pdf = get_espelho(mats) pdf = pdf_espelho_gerar.principal( - None, imagem, - None, mat_pdf, cabecalho, rodape) @@ -870,13 +860,19 @@ 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) @@ -902,13 +898,19 @@ def relatorio_etiqueta_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_etiqueta_protocolos(protocolos) - pdf = pdf_etiqueta_protocolo_gerar.principal(None, - imagem, - None, + pdf = pdf_etiqueta_protocolo_gerar.principal(imagem, protocolo_data, cabecalho, rodape) From 7ebe795735b6c70a104a32991320c85d16985cdb Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Tue, 26 Jan 2016 10:31:01 -0200 Subject: [PATCH 14/20] =?UTF-8?q?Add=20report=20in=20pauta=20da=20sess?= =?UTF-8?q?=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- relatorios/urls.py | 2 +- relatorios/views.py | 29 +++++++++++------------ templates/sessao/pauta_sessao_detail.html | 2 ++ 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/relatorios/urls.py b/relatorios/urls.py index 806d6d042..4dc4b9ce6 100644 --- a/relatorios/urls.py +++ b/relatorios/urls.py @@ -17,7 +17,7 @@ urlpatterns = [ name='relatorio_documento_administrativo'), url(r'^relatorios/espelho$', relatorio_espelho, name='relatorio_espelho'), - url(r'^relatorios/sessao_plenaria$', + url(r'^relatorios/(?P\d+)/sessao_plenaria$', relatorio_sessao_plenaria, name='relatorio_sessao_plenaria'), url(r'^relatorios/protocolo$', relatorio_protocolo, name='relatorio_protocolo'), diff --git a/relatorios/views.py b/relatorios/views.py index d420ec572..9d16e48fb 100644 --- a/relatorios/views.py +++ b/relatorios/views.py @@ -622,17 +622,17 @@ def get_sessao_plenaria(sessao, casa): 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) + 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 = [] @@ -646,7 +646,6 @@ def get_sessao_plenaria(sessao, casa): 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 @@ -753,7 +752,7 @@ def get_sessao_plenaria(sessao, casa): lst_oradores) -def relatorio_sessao_plenaria(request): +def relatorio_sessao_plenaria(request, pk): ''' pdf_sessao_plenaria_gerar.py ''' @@ -768,8 +767,8 @@ def relatorio_sessao_plenaria(request): rodape = get_rodape(casa) imagem = get_imagem(casa) - # protocolos = Protocolo.objects.all()[:50] - sessao = SessaoPlenaria.objects.first() + sessao = SessaoPlenaria.objects.get(id=pk) + (inf_basicas_dic, lst_mesa, lst_presenca_sessao, 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 }}
    From 8dd1e72e95b71740553a743ec1a9a16836f79990 Mon Sep 17 00:00:00 2001 From: Eduardo Calil Date: Tue, 26 Jan 2016 12:47:29 -0200 Subject: [PATCH 15/20] =?UTF-8?q?Finish=20Vota=C3=A7=C3=A3o=20Nominal=20in?= =?UTF-8?q?=20Painel=20details=20and=20Fix=20bug=20in=20sessao/views?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- painel/views.py | 25 ++++++++++-- sessao/views.py | 76 +++++++++++++++++++------------------ templates/painel/index.html | 50 +++++++++++++++--------- 3 files changed, 92 insertions(+), 59 deletions(-) diff --git a/painel/views.py b/painel/views.py index b9652f0a1..f107191d2 100644 --- a/painel/views.py +++ b/painel/views.py @@ -283,11 +283,28 @@ def get_votos_nominal(response, 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 + diff --git a/sessao/views.py b/sessao/views.py index e1717f876..fb9784459 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: diff --git a/templates/painel/index.html b/templates/painel/index.html index aba9fd8c4..399cea22f 100644 --- a/templates/painel/index.html +++ b/templates/painel/index.html @@ -100,28 +100,42 @@ presentes_ordem_dia = data["presentes_expediente"] } - 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) + /*Esse IF faz mostrar o voto de cada parlamentar na votação Nominal*/ + 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); + }); + } + } - 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"] - } + else{ + 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") + + 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"] + "
  • ") + 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) { From 066fadf75df671119f27f56e70e9d7b3e326d3bd Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Wed, 27 Jan 2016 11:29:03 -0200 Subject: [PATCH 16/20] Fix query last materia in painel --- painel/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/painel/views.py b/painel/views.py index f107191d2..65088386b 100644 --- a/painel/views.py +++ b/painel/views.py @@ -78,7 +78,7 @@ def get_cronometro_status(request, name): 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 @@ -87,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 @@ -158,7 +158,7 @@ def get_presentes(pk, response, materia): def get_materia_expediente_aberta(pk): try: materia = ExpedienteMateria.objects.filter( - sessao_plenaria_id=pk, votacao_aberta=True).first() + sessao_plenaria_id=pk, votacao_aberta=True).last() return materia except ObjectDoesNotExist: return False @@ -167,7 +167,7 @@ def get_materia_expediente_aberta(pk): def get_last_materia_expediente(pk): try: materia = ExpedienteMateria.objects.filter( - sessao_plenaria_id=pk).order_by('-data_ordem').first() + sessao_plenaria_id=pk).last() return materia except ObjectDoesNotExist: return None From d8e02874a1e8d28044f4351db90885a8c4da62ce Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Wed, 27 Jan 2016 11:50:03 -0200 Subject: [PATCH 17/20] Change painel to show parlamentares in votacao simbolica/secreta --- templates/painel/index.html | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/templates/painel/index.html b/templates/painel/index.html index 399cea22f..4460ce721 100644 --- a/templates/painel/index.html +++ b/templates/painel/index.html @@ -101,22 +101,17 @@ } - /*Esse IF faz mostrar o voto de cada parlamentar na votação Nominal*/ - 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{ + 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 + ' ' + parlamentar.voto }).appendTo(presentes);*/ - $('
  • ', {text: parlamentar.nome + '/' + parlamentar.partido}).appendTo(presentes); + $('
  • ', {text: parlamentar.nome + '/' + parlamentar.partido}).appendTo(presentes); }); - } + } //console.debug(presentes_ordem_dia) From 7900711483a37905626174da675265dbdcb5d5e8 Mon Sep 17 00:00:00 2001 From: Eduardo Calil Date: Wed, 27 Jan 2016 12:33:55 -0200 Subject: [PATCH 18/20] =?UTF-8?q?Add=20button=20Pesquisar=20Mat=C3=A9ria?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/materia/materialegislativa_list.html | 4 ++++ 1 file changed, 4 insertions(+) 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 %} From d5a7b9e3bc38c2fef70e6b5a9c38793c1dd8fea7 Mon Sep 17 00:00:00 2001 From: Eduardo Calil Date: Wed, 27 Jan 2016 13:45:09 -0200 Subject: [PATCH 19/20] Fix funcionalities of Pesquisa de Materia --- materia/views.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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') From d7b5d00cb4fd25e7031308eeccfc1494c9b60aff Mon Sep 17 00:00:00 2001 From: Eduardo Calil Date: Thu, 28 Jan 2016 09:28:05 -0200 Subject: [PATCH 20/20] Removed some IF parentheses --- sessao/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sessao/views.py b/sessao/views.py index fb9784459..6ab3e15fe 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -1704,13 +1704,13 @@ class VotacaoNominalView(FormMixin, sessao_crud.CrudDetailView): parlamentar_id = v[1] voto_parlamentar = VotoParlamentar() - if(voto == 'sim'): + if voto == 'sim': voto_parlamentar.voto = 'Sim' - elif(voto == 'nao'): + elif voto == 'nao': voto_parlamentar.voto = 'Não' - elif(voto == 'abstencao'): + elif voto == 'abstencao': voto_parlamentar.voto = 'Abstenção' - elif(voto == 'nao_votou'): + elif voto == 'nao_votou': voto_parlamentar.voto = 'Não Votou' voto_parlamentar.parlamentar_id = parlamentar_id voto_parlamentar.votacao_id = votacao.id