Browse Source

Merge branch 'master' into bootstrap

pull/202/head
Marcio Mazza 9 years ago
parent
commit
4861c4a9a4
  1. 12
      materia/views.py
  2. 175
      painel/views.py
  3. 1
      parlamentares/views.py
  4. 1
      protocoloadm/views.py
  5. 6
      relatorios/templates/pdf_capa_processo_gerar.py
  6. 2
      relatorios/templates/pdf_documento_administrativo_gerar.py
  7. 2
      relatorios/templates/pdf_espelho_gerar.py
  8. 47
      relatorios/templates/pdf_etiqueta_protocolo_gerar.py
  9. 2
      relatorios/templates/pdf_materia_gerar.py
  10. 2
      relatorios/templates/pdf_norma_gerar.py
  11. 2
      relatorios/templates/pdf_ordem_dia_gerar.py
  12. 80
      relatorios/templates/pdf_pauta_sessao_gerar.py
  13. 2
      relatorios/templates/pdf_protocolo_gerar.py
  14. 103
      relatorios/templates/pdf_sessao_plenaria_gerar.py
  15. 20
      relatorios/urls.py
  16. 778
      relatorios/views.py
  17. 4
      sapl/utils.py
  18. 24
      sessao/migrations/0012_auto_20160120_1237.py
  19. 3
      sessao/models.py
  20. 162
      sessao/views.py
  21. 4
      templates/materia/materialegislativa_list.html
  22. 29
      templates/painel/index.html
  23. 2
      templates/sessao/pauta_sessao_detail.html

12
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')

175
painel/views.py

@ -8,9 +8,9 @@ from django.utils.translation import ugettext_lazy as _
from painel.models import Painel
from parlamentares.models import Filiacao
from sapl.crud import build_crud
from sessao.models import (OrdemDia, PresencaOrdemDia, RegistroVotacao,
SessaoPlenaria, SessaoPlenariaPresenca,
VotoParlamentar)
from sessao.models import (ExpedienteMateria, OrdemDia, PresencaOrdemDia,
RegistroVotacao, SessaoPlenaria,
SessaoPlenariaPresenca, VotoParlamentar)
from .models import Cronometro
@ -72,11 +72,13 @@ def get_cronometro_status(request, name):
cronometro = ''
return cronometro
# ##############################ORDEM DO DIA##################################
def get_materia_aberta(pk):
try:
materia = OrdemDia.objects.filter(
sessao_plenaria_id=pk, votacao_aberta=True).first()
sessao_plenaria_id=pk, votacao_aberta=True).last()
return materia
except ObjectDoesNotExist:
return False
@ -85,7 +87,7 @@ def get_materia_aberta(pk):
def get_last_materia(pk):
try:
materia = OrdemDia.objects.filter(
sessao_plenaria_id=pk).order_by('-data_ordem').first()
sessao_plenaria_id=pk).last()
return materia
except ObjectDoesNotExist:
return None
@ -150,6 +152,88 @@ def get_presentes(pk, response, materia):
return response
# ########################EXPEDIENTE############################################
def get_materia_expediente_aberta(pk):
try:
materia = ExpedienteMateria.objects.filter(
sessao_plenaria_id=pk, votacao_aberta=True).last()
return materia
except ObjectDoesNotExist:
return False
def get_last_materia_expediente(pk):
try:
materia = ExpedienteMateria.objects.filter(
sessao_plenaria_id=pk).last()
return materia
except ObjectDoesNotExist:
return None
def get_presentes_expediente(pk, response, materia):
filiacao = Filiacao.objects.filter(
data_desfiliacao__isnull=True, parlamentar__ativo=True)
parlamentar_partido = {}
for f in filiacao:
parlamentar_partido[
f.parlamentar.nome_parlamentar] = f.partido.sigla
sessao_plenaria_presenca = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=pk)
presentes_sessao_plenaria = [
p.parlamentar.nome_parlamentar for p in sessao_plenaria_presenca]
num_presentes_sessao_plen = len(presentes_sessao_plenaria)
presenca_expediente = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=pk)
presentes_expediente = []
for p in presenca_expediente:
nome_parlamentar = p.parlamentar.nome_parlamentar
try:
parlamentar_partido[nome_parlamentar]
except KeyError:
presentes_expediente.append(
{'id': p.id,
'nome': nome_parlamentar,
'partido': 'Sem Registro',
})
else:
presentes_expediente.append(
{'id': p.id,
'nome': nome_parlamentar,
'partido': parlamentar_partido[nome_parlamentar],
})
num_presentes_expediente = len(presentes_expediente)
if materia.tipo_votacao == 1:
tipo_votacao = 'Simbólica'
elif materia.tipo_votacao == 2:
tipo_votacao = 'Nominal'
elif materia.tipo_votacao == 3:
tipo_votacao = 'Secreta'
response.update({
'presentes_expediente': presentes_expediente,
'num_presentes_expediente': num_presentes_expediente,
'presentes_sessao_plenaria': presentes_sessao_plenaria,
'num_presentes_sessao_plenaria': num_presentes_sessao_plen,
'status_painel': 'ABERTO',
'msg_painel': 'Votação aberta!',
'numero_votos_sim': 0,
'numero_votos_nao': 0,
'numero_abstencoes': 0,
'total_votos': 0,
'tipo_resultado': tipo_votacao})
return response
# ##########################GENERAL FUNCTIONS#############################
def response_null_materia(response):
response.update({
'status_painel': 'FECHADO',
@ -159,6 +243,14 @@ def response_null_materia(response):
def get_votos(response, materia):
if materia.tipo_votacao == 1:
tipo_votacao = 'Simbólica'
elif materia.tipo_votacao == 2:
tipo_votacao = 'Nominal'
elif materia.tipo_votacao == 3:
tipo_votacao = 'Secreta'
registro = RegistroVotacao.objects.filter(
ordem=materia, materia=materia.materia).last()
total = (registro.numero_votos_sim +
@ -169,6 +261,7 @@ def get_votos(response, materia):
'numero_votos_nao': registro.numero_votos_nao,
'numero_abstencoes': registro.numero_abstencoes,
'total_votos': total,
'tipo_votacao': tipo_votacao,
'tipo_resultado': registro.tipo_resultado_votacao.nome
})
return response
@ -177,16 +270,40 @@ def get_votos(response, materia):
def get_votos_nominal(response, materia):
votos = {}
if materia.tipo_votacao == 1:
tipo_votacao = 'Simbólica'
elif materia.tipo_votacao == 2:
tipo_votacao = 'Nominal'
elif materia.tipo_votacao == 3:
tipo_votacao = 'Secreta'
registro = RegistroVotacao.objects.get(
ordem=materia, materia=materia.materia)
votos_parlamentares = VotoParlamentar.objects.filter(
votacao_id=registro.id)
filiacao = Filiacao.objects.filter(
data_desfiliacao__isnull=True, parlamentar__ativo=True)
parlamentar_partido = {}
for f in filiacao:
parlamentar_partido[
f.parlamentar.nome_parlamentar] = f.partido.sigla
for v in votos_parlamentares:
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)
'voto': str(v.voto),
'partido': parlamentar_partido[v.parlamentar.nome_parlamentar]
}})
total = (registro.numero_votos_sim +
@ -198,6 +315,7 @@ def get_votos_nominal(response, materia):
'numero_votos_nao': registro.numero_votos_nao,
'numero_abstencoes': registro.numero_abstencoes,
'total_votos': total,
'tipo_votacao': tipo_votacao,
'tipo_resultado': registro.tipo_resultado_votacao.nome,
'votos': votos
})
@ -220,22 +338,45 @@ def get_dados_painel(request, pk):
"cronometro_ordem": cronometro_ordem,
}
materia = get_materia_aberta(pk)
if materia:
return JsonResponse(get_presentes(pk, response, materia))
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:
materia = get_last_materia(pk)
if materia:
if materia.resultado:
if materia.tipo_votacao in [1, 3]:
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, materia), materia))
elif materia.tipo_votacao == 2:
pk, response, ultimo_expediente),
ultimo_expediente))
elif ultimo_expediente.tipo_votacao == 2:
return JsonResponse(
get_votos_nominal(get_presentes(
pk, response, materia), materia))
pk, response, ultimo_expediente),
ultimo_expediente))
else:
return JsonResponse(get_presentes(pk, response, materia))
return JsonResponse(get_presentes(pk, response,
ultimo_expediente))
else:
return response_null_materia(response)

1
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"

1
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)

6
relatorios/templates/pdf_capa_processo_gerar.py

@ -8,6 +8,8 @@
"""
import time
from sapl.utils import xstr
from trml2pdf import parseString
@ -60,13 +62,13 @@ def protocolos(lst_protocolos):
tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n'
tmp_data += '\t\t<para style="P3"><b>Ementa:</b> <font size="8">' + \
dic['txt_assunto'] + '</font></para>\n'
xstr(dic['txt_assunto']) + '</font></para>\n'
tmp_data += '\t</story>\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"

2
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"

2
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:

47
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,13 +11,15 @@ 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<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n'
tmp_data += '\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + \
imagem + '"/>\n'
tmp_data += '\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="15"/>\n'
tmp_data+='\t\t\t\t<drawString x="5cm" y="27.2cm">' + dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
dic_cabecalho['nom_casa'] + '</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp_data += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica-Bold" size="13"/>\n'
@ -25,19 +27,24 @@ def cabecalho(inf_basicas_dic,imagem):
return tmp_data
def rodape(lst_rodape):
"""Gera o codigo rml do rodape"""
tmp_data = ''
tmp_data += '\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp_data+='\t\t\t\t<drawString x="2cm" y="3.3cm">' + lst_rodape[2] + '</drawString>\n'
tmp_data += '\t\t\t\t<drawString x="2cm" y="3.3cm">' + \
lst_rodape[2] + '</drawString>\n'
tmp_data += '\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + lst_rodape[0] + '</drawCentredString>\n'
tmp_data+='\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + lst_rodape[1] + '</drawCentredString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + \
lst_rodape[0] + '</drawCentredString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + \
lst_rodape[1] + '</drawCentredString>\n'
return tmp_data
def paraStyle():
"""Gera o codigo rml que define o estilo dos paragrafos"""
@ -56,7 +63,8 @@ def paraStyle():
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 = ''
@ -73,20 +81,26 @@ def protocolos(lst_protocolos):
tmp_data += '\t\t<para style="P1">\n'
tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n'
tmp_data+='\t\t<para style="P2"><b>'+dic_cabecalho['nom_casa']+'</b></para>\n'
tmp_data += '\t\t<para style="P2"><b>' + \
dic_cabecalho['nom_casa'] + '</b></para>\n'
tmp_data += '\t\t<para style="P2">\n'
tmp_data += '\t\t\t<font color="white"> </font>\n'
tmp_data += '\t\t</para>\n'
tmp_data+='\t\t<barCode code="Code128" x="0.15cm" barHeight="0.34in" barWidth="0.018in">' +dic['titulo']+ '</barCode>\n'
tmp_data+='\t\t<para style="P2"><b>PROTOCOLO GERAL '+dic['titulo']+'</b></para>\n'
tmp_data += '\t\t<barCode code="Code128" x="0.15cm" barHeight="0.34in" barWidth="0.018in">' + \
dic['titulo'] + '</barCode>\n'
tmp_data += '\t\t<para style="P2"><b>PROTOCOLO GERAL ' + \
dic['titulo'] + '</b></para>\n'
if dic['data'] != None:
tmp_data+='\t\t<para style="P2"><b>'+dic['data']+'</b></para>\n'
tmp_data+='\t\t<para style="P2"><b>'+dic['natureza']+' - '+dic['ident_processo']+'</b></para>\n'
tmp_data += '\t\t<para style="P2"><b>' + \
dic['data'] + '</b></para>\n'
tmp_data += '\t\t<para style="P2"><b>' + \
dic['natureza'] + ' - ' + dic['ident_processo'] + '</b></para>\n'
tmp_data += '\t</story>\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"
@ -103,7 +117,7 @@ def principal(sessao,imagem,data,lst_protocolos,dic_cabecalho,lst_rodape,dic_fil
tmp_data += '\t\t</pageTemplate>\n'
tmp_data += '\t</template>\n'
tmp_data += paraStyle()
tmp_data+=protocolos(lst_protocolos)
tmp_data += protocolos(lst_protocolos, dic_cabecalho)
tmp_data += '</document>\n'
tmp_pdf = parseString(tmp_data)
@ -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)

2
relatorios/templates/pdf_materia_gerar.py

@ -83,7 +83,7 @@ def materias(lst_materias):
tmp_data+='\t</story>\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"

2
relatorios/templates/pdf_norma_gerar.py

@ -91,7 +91,7 @@ def normas(lst_normas):
tmp_data+='\t</story>\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"

2
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:

80
relatorios/templates/pdf_pauta_sessao_gerar.py

@ -12,47 +12,33 @@ def cabecalho(inf_basicas_dic,imagem):
"""
"""
tmp = ''
tmp+='\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n'
tmp += '\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + \
imagem + '"/>\n'
tmp += '\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n'
tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="14"/>\n'
tmp+='\t\t\t\t<drawString x="5cm" y="27.2cm">' + str(inf_basicas_dic["nom_camara"]) + '</drawString>\n'
tmp += '\t\t\t\t<drawString x="5cm" y="27.2cm">' + \
str(inf_basicas_dic["nom_camara"]) + '</drawString>\n'
tmp += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="12"/>\n'
tmp+='\t\t\t\t<drawString x="2.2cm" y="24.6cm">Pauta 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 </drawString>\n'
tmp += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Pauta 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 </drawString>\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\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp+='\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp+='\t\t\t\t<drawString x="2cm" y="3.3cm">' + data_emissao + '</drawString>\n'
tmp+='\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
tmp+='\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + linha1 + '</drawCentredString>\n'
tmp+='\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + linha2 + '</drawCentredString>\n'
return tmp
def rodape(lst_rodape):
"""Gera o codigo rml do rodape"""
tmp_data = ''
tmp_data += '\t\t\t\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp_data += '\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp_data += '\t\t\t\t<drawString x="2cm" y="3.3cm">' + \
lst_rodape[2] + '</drawString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + \
lst_rodape[0] + '</drawCentredString>\n'
tmp_data += '\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + \
lst_rodape[1] + '</drawCentredString>\n'
return tmp_data
def paraStyle():
"""
@ -95,6 +81,7 @@ def paraStyle():
return tmp
def inf_basicas(inf_basicas_dic):
"""
"""
@ -112,8 +99,11 @@ def inf_basicas(inf_basicas_dic):
tmp += '\t\t<para style="P2">\n'
tmp += '\t\t\t<font color="white"> </font>\n'
tmp += '\t\t</para>\n'
tmp+='\t\t<para style="P2" spaceAfter="5"><b>Tipo da Sessão: </b> ' + nom_sessao + '</para>\n'
tmp+='\t\t<para style="P2" spaceAfter="5"><b>Abertura: </b> ' + dat_inicio_sessao + ' <b>- </b> ' + hr_inicio_sessao + '</para>\n'
tmp += '\t\t<para style="P2" spaceAfter="5"><b>Tipo da Sessão: </b> ' + \
nom_sessao + '</para>\n'
tmp += '\t\t<para style="P2" spaceAfter="5"><b>Abertura: </b> ' + \
dat_inicio_sessao.strftime(
"%d/%m/%Y") + ' <b>- </b> ' + hr_inicio_sessao + '</para>\n'
return tmp
@ -129,14 +119,17 @@ def expediente_materia(lst_expediente_materia):
tmp += '<blockTable style="repeater" repeatRows="1">\n'
tmp += '<tr><td >Matéria</td><td>Ementa</td><td>Situação</td></tr>\n'
for expediente_materia in lst_expediente_materia:
tmp+= '<tr><td><para style="P3"><b>' + str(expediente_materia['num_ordem']) + '</b> - ' + expediente_materia['id_materia'] + '</para>\n' + '<para style="P3"><b>Autor: </b>' + expediente_materia['nom_autor'] +'</para></td>\n'
tmp += '<tr><td><para style="P3"><b>' + str(expediente_materia['num_ordem']) + '</b> - ' + expediente_materia[
'id_materia'] + '</para>\n' + '<para style="P3"><b>Autor: </b>' + expediente_materia['nom_autor'] + '</para></td>\n'
txt_ementa = expediente_materia['txt_ementa'].replace('&', '&amp;')
tmp += '<td><para style="P4">' + txt_ementa + '</para></td>\n'
tmp+='<td><para style="P3">' + expediente_materia['des_situacao'] + '</para></td></tr>\n'
tmp += '<td><para style="P3">' + \
str(expediente_materia['des_situacao']) + '</para></td></tr>\n'
tmp += '\t\t</blockTable>\n'
return tmp
def votacao(lst_votacao):
"""
"""
@ -149,14 +142,18 @@ def votacao(lst_votacao):
tmp += '<blockTable style="repeater" repeatRows="1">\n'
tmp += '<tr><td >Matéria</td><td >Ementa</td><td>Situação</td></tr>\n'
for votacao in lst_votacao:
tmp+= '<tr><td><para style="P3"><b>' + str(votacao['num_ordem']) + '</b> - ' + votacao['id_materia'] + '</para>\n' + '<para style="P3"><b>Processo: </b>' + votacao['des_numeracao'] + '</para>\n' + '<para style="P3"><b>Turno: </b>' + votacao['des_turno'] + '</para>\n' + '<para style="P3"><b>Autor: </b>' + votacao['nom_autor'] + '</para></td>\n'
tmp+='<td><para style="P4">' + votacao['txt_ementa'] + '</para></td>\n'
tmp+='<td><para style="P3">' + votacao['des_situacao'] + '</para></td></tr>\n'
tmp += '<tr><td><para style="P3"><b>' + str(votacao['num_ordem']) + '</b> - ' + votacao['id_materia'] + '</para>\n' + '<para style="P3"><b>Processo: </b>' + votacao[
'des_numeracao'] + '</para>\n' + '<para style="P3"><b>Turno: </b>' + votacao['des_turno'] + '</para>\n' + '<para style="P3"><b>Autor: </b>' + votacao['nom_autor'] + '</para></td>\n'
tmp += '<td><para style="P4">' + \
votacao['txt_ementa'] + '</para></td>\n'
tmp += '<td><para style="P3">' + \
str(votacao['des_situacao']) + '</para></td></tr>\n'
tmp += '\t\t</blockTable>\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):
"""
"""
@ -182,6 +179,7 @@ def principal(cabecalho, rodape, sessao, imagem, inf_basicas_dic):
tmp += votacao(lst_votacao)
tmp += '\t</story>\n'
tmp += '</document>\n'
tmp_pdf = parseString(tmp)
return tmp_pdf

2
relatorios/templates/pdf_protocolo_gerar.py

@ -101,7 +101,7 @@ def protocolos(lst_protocolos):
tmp_data+='\t</story>\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"

103
relatorios/templates/pdf_sessao_plenaria_gerar.py

@ -13,48 +13,34 @@ def cabecalho(inf_basicas_dic,imagem):
"""
"""
tmp = ''
tmp+='\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + imagem + '"/>\n'
tmp += '\t\t\t\t<image x="2.1cm" y="25.7cm" width="59" height="62" file="' + \
imagem + '"/>\n'
tmp += '\t\t\t\t<lines>2cm 25.4cm 19cm 25.4cm</lines>\n'
tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="16"/>\n'
tmp+='\t\t\t\t<drawString x="5cm" y="27.1cm">' + str(inf_basicas_dic["nom_camara"]) + '</drawString>\n'
tmp += '\t\t\t\t<drawString x="5cm" y="27.1cm">' + \
str(inf_basicas_dic["nom_camara"]) + '</drawString>\n'
tmp += '\t\t\t\t<setFont name="Helvetica" size="12"/>\n'
tmp += '\t\t\t\t<drawString x="5cm" y="26.6cm">Sistema de Apoio ao Processo Legislativo</drawString>\n'
tmp += '\t\t\t\t<setFont name="Helvetica-Bold" size="12"/>\n'
tmp+='\t\t\t\t<drawString x="2.2cm" y="24.6cm">Resumo 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 </drawString>\n'
tmp += '\t\t\t\t<drawString x="2.2cm" y="24.6cm">Resumo 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 </drawString>\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\t<lines>2cm 3.2cm 19cm 3.2cm</lines>\n'
tmp += '\t\t\t\t<setFont name="Helvetica" size="8"/>\n'
tmp+='\t\t\t\t<drawString x="2cm" y="3.3cm">' + data_emissao + '</drawString>\n'
tmp += '\t\t\t\t<drawString x="2cm" y="3.3cm">' + \
rodape_dic[2] + '</drawString>\n'
tmp += '\t\t\t\t<drawString x="17.9cm" y="3.3cm">Página <pageNumber/></drawString>\n'
tmp+='\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + linha1 + '</drawCentredString>\n'
tmp+='\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + linha2 + '</drawCentredString>\n'
tmp += '\t\t\t\t<drawCentredString x="10.5cm" y="2.7cm">' + \
rodape_dic[0] + '</drawCentredString>\n'
tmp += '\t\t\t\t<drawCentredString x="10.5cm" y="2.3cm">' + \
rodape_dic[1] + '</drawCentredString>\n'
return tmp
def paraStyle():
"""
"""
@ -96,6 +82,7 @@ def paraStyle():
return tmp
def inf_basicas(inf_basicas_dic):
"""
"""
@ -115,12 +102,16 @@ def inf_basicas(inf_basicas_dic):
tmp += '\t\t<para style="P2">\n'
tmp += '\t\t\t<font color="white"> </font>\n'
tmp += '\t\t</para>\n'
tmp+='\t\t<para style="P2" spaceAfter="5"><b>Tipo da Sessão: </b> ' + nom_sessao + '</para>\n'
tmp+='\t\t<para style="P2" spaceAfter="5"><b>Abertura: </b> ' + dat_inicio_sessao + ' <b>- </b> ' + hr_inicio_sessao + '</para>\n'
tmp+='\t\t<para style="P2" spaceAfter="5"><b>Encerramento: </b> ' + dat_fim_sessao + ' <b>- </b> ' + hr_fim_sessao + '</para>\n'
tmp += '\t\t<para style="P2" spaceAfter="5"><b>Tipo da Sessão: </b> ' + \
nom_sessao + '</para>\n'
tmp += '\t\t<para style="P2" spaceAfter="5"><b>Abertura: </b> ' + \
dat_inicio_sessao + ' <b>- </b> ' + hr_inicio_sessao + '</para>\n'
tmp += '\t\t<para style="P2" spaceAfter="5"><b>Encerramento: </b> ' + \
dat_fim_sessao + ' <b>- </b> ' + hr_fim_sessao + '</para>\n'
return tmp
def mesa(lst_mesa):
"""
@ -131,9 +122,12 @@ def mesa(lst_mesa):
tmp += '\t\t\t<font color="white"> </font>\n'
tmp += '\t\t</para>\n'
for mesa in lst_mesa:
tmp+='\t\t<para style="P2" spaceAfter="5"><b>'+ str(mesa['des_cargo']) +':</b> ' + str(mesa['nom_parlamentar']) + '/' + str(mesa['sgl_partido']) +'</para>\n'
tmp += '\t\t<para style="P2" spaceAfter="5"><b>' + \
str(mesa['des_cargo']) + ':</b> ' + str(mesa['nom_parlamentar']
) + '/' + str(mesa['sgl_partido']) + '</para>\n'
return tmp
def presenca(lst_presenca_sessao):
"""
@ -144,9 +138,12 @@ def presenca(lst_presenca_sessao):
tmp += '\t\t\t<font color="white"> </font>\n'
tmp += '\t\t</para>\n'
for presenca in lst_presenca_sessao:
tmp+='\t\t<para style="P2" spaceAfter="5">'+ str(presenca['nom_parlamentar']) + '/' + str(presenca['sgl_partido']) +'</para>\n'
tmp += '\t\t<para style="P2" spaceAfter="5">' + \
str(presenca['nom_parlamentar']) + '/' + \
str(presenca['sgl_partido']) + '</para>\n'
return tmp
def expedientes(lst_expedientes):
"""
@ -157,12 +154,16 @@ def expedientes(lst_expedientes):
tmp += '\t\t\t<font color="white"> </font>\n'
tmp += '\t\t</para>\n'
for expediente in lst_expedientes:
tmp+='\t\t<para style="P2"><b>' + expediente['nom_expediente'] +': </b></para>\n' + '<para style="P2">' + str(expediente['txt_expediente']) +'</para>\n'
tmp += '\t\t<para style="P2"><b>' + \
expediente['nom_expediente'] + ': </b></para>\n' + \
'<para style="P2">' + \
expediente['txt_expediente'] + '</para>\n'
tmp += '\t\t<para style="P2">\n'
tmp += '\t\t\t<font color="white"> </font>\n'
tmp += '\t\t</para>\n'
return tmp
def expediente_materia(lst_expediente_materia):
"""
"""
@ -174,14 +175,18 @@ def expediente_materia(lst_expediente_materia):
tmp += '<blockTable style="repeater" repeatRows="1">\n'
tmp += '<tr><td >Matéria</td><td>Ementa</td><td>Resultado da Votação</td></tr>\n'
for expediente_materia in lst_expediente_materia:
tmp+= '<tr><td><para style="P3"><b>' + str(expediente_materia['num_ordem']) + '</b> - ' + expediente_materia['id_materia'] + '</para>\n' + '<para style="P3"><b>Turno: </b>' + expediente_materia['des_turno'] + '</para>\n' + '<para style="P3"><b>Autor: </b>' + expediente_materia['nom_autor'] +'</para></td>\n'
tmp += '<tr><td><para style="P3"><b>' + str(expediente_materia['num_ordem']) + '</b> - ' + expediente_materia['id_materia'] + '</para>\n' + '<para style="P3"><b>Turno: </b>' + expediente_materia[
'des_turno'] + '</para>\n' + '<para style="P3"><b>Autor: </b>' + expediente_materia['nom_autor'] + '</para></td>\n'
txt_ementa = expediente_materia['txt_ementa'].replace('&', '&amp;')
tmp += '<td><para style="P4">' + txt_ementa + '</para></td>\n'
tmp+='<td><para style="P3"><b>' + expediente_materia['nom_resultado'] + '</b></para>\n' + '<para style="P3">' + expediente_materia['votacao_observacao'] + '</para></td></tr>\n'
tmp += '<td><para style="P3"><b>' + \
expediente_materia['nom_resultado'] + '</b></para>\n' + '<para style="P3">' + \
expediente_materia['votacao_observacao'] + '</para></td></tr>\n'
tmp += '\t\t</blockTable>\n'
return tmp
def oradores_expediente(lst_oradores_expediente):
"""
@ -192,9 +197,11 @@ def oradores_expediente(lst_oradores_expediente):
tmp += '\t\t\t<font color="white"> </font>\n'
tmp += '\t\t</para>\n'
for orador_expediente in lst_oradores_expediente:
tmp+='\t\t<para style="P2" spaceAfter="5"><b>'+ str(orador_expediente['num_ordem']) +'</b> - ' + orador_expediente['nom_parlamentar'] + '/' + str(orador_expediente['sgl_partido']) +'</para>\n'
tmp += '\t\t<para style="P2" spaceAfter="5"><b>' + str(orador_expediente['num_ordem']) + '</b> - ' + orador_expediente[
'nom_parlamentar'] + '/' + str(orador_expediente['sgl_partido']) + '</para>\n'
return tmp
def presenca_ordem_dia(lst_presenca_ordem_dia):
"""
@ -205,9 +212,12 @@ def presenca_ordem_dia(lst_presenca_ordem_dia):
tmp += '\t\t\t<font color="white"> </font>\n'
tmp += '\t\t</para>\n'
for presenca_ordem_dia in lst_presenca_ordem_dia:
tmp+='\t\t<para style="P2" spaceAfter="5">'+ str(presenca_ordem_dia['nom_parlamentar']) + '/' + str(presenca_ordem_dia['sgl_partido']) +'</para>\n'
tmp += '\t\t<para style="P2" spaceAfter="5">' + \
str(presenca_ordem_dia['nom_parlamentar']) + '/' + \
str(presenca_ordem_dia['sgl_partido']) + '</para>\n'
return tmp
def votacao(lst_votacao):
"""
"""
@ -220,14 +230,18 @@ def votacao(lst_votacao):
tmp += '<blockTable style="repeater" repeatRows="1">\n'
tmp += '<tr><td >Matéria</td><td>Ementa</td><td>Resultado da Votação</td></tr>\n'
for votacao in lst_votacao:
tmp+= '<tr><td><para style="P3"><b>'+ str(votacao['num_ordem']) + '</b> - ' + votacao['id_materia'] + '</para>\n' + '<para style="P3"><b>Turno:</b> ' + votacao['des_turno'] + '</para>\n' + '<para style="P3"><b>Autor: </b>' + votacao['nom_autor'] +'</para></td>\n'
tmp += '<tr><td><para style="P3"><b>' + str(votacao['num_ordem']) + '</b> - ' + votacao['id_materia'] + '</para>\n' + '<para style="P3"><b>Turno:</b> ' + votacao[
'des_turno'] + '</para>\n' + '<para style="P3"><b>Autor: </b>' + votacao['nom_autor'] + '</para></td>\n'
txt_ementa = votacao['txt_ementa'].replace('&', '&amp;')
tmp += '<td><para style="P4">' + txt_ementa + '</para></td>\n'
tmp+='<td><para style="P3"><b>' + votacao['nom_resultado'] + '</b></para>\n' + '<para style="P3">' + votacao['votacao_observacao'] + '</para></td></tr>\n'
tmp += '<td><para style="P3"><b>' + \
votacao['nom_resultado'] + '</b></para>\n' + '<para style="P3">' + \
votacao['votacao_observacao'] + '</para></td></tr>\n'
tmp += '\t\t</blockTable>\n'
return tmp
def oradores(lst_oradores):
"""
@ -238,13 +252,15 @@ def oradores(lst_oradores):
tmp += '\t\t\t<font color="white"> </font>\n'
tmp += '\t\t</para>\n'
for orador in lst_oradores:
tmp+='\t\t<para style="P2" spaceAfter="5"><b>'+ str(orador['num_ordem']) +'</b> - ' + orador['nom_parlamentar'] + '/' + str(orador['sgl_partido']) +'</para>\n'
tmp += '\t\t<para style="P2" spaceAfter="5"><b>' + \
str(orador['num_ordem']) + '</b> - ' + orador['nom_parlamentar'] + \
'/' + str(orador['sgl_partido']) + '</para>\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"
tmp = ''
@ -274,7 +290,6 @@ def principal(cabecalho, rodape, sessao, imagem, inf_basicas_dic):
tmp += '\t</story>\n'
tmp += '</document>\n'
tmp_pdf = parseString(tmp)
return tmp_pdf
# if hasattr(context.temp_folder,arquivoPdf):
# context.temp_folder.manage_delObjects(ids=arquivoPdf)

20
relatorios/urls.py

@ -1,13 +1,15 @@
from django.conf.urls import url
from .views import (relatorio_documento_administrativo, relatorio_materia,
relatorio_ordem_dia, relatorio_processo,
relatorio_protocolo, relatorio_espelho)
from .views import (relatorio_capa_processo,
relatorio_documento_administrativo, relatorio_espelho,
relatorio_etiqueta_protocolo, relatorio_materia,
relatorio_ordem_dia, relatorio_pauta_sessao,
relatorio_protocolo, relatorio_sessao_plenaria)
urlpatterns = [
url(r'^relatorios/materia$', relatorio_materia, name='relatorio_materia'),
url(r'^relatorios/cap_processo$',
relatorio_processo, name='relatorio_cap_processo'),
url(r'^relatorios/capa_processo$',
relatorio_capa_processo, name='relatorio_capa_processo'),
url(r'^relatorios/ordem_dia$', relatorio_ordem_dia,
name='relatorio_ordem_dia'),
url(r'^relatorios/relatorio_documento_administrativo$',
@ -15,6 +17,12 @@ urlpatterns = [
name='relatorio_documento_administrativo'),
url(r'^relatorios/espelho$', relatorio_espelho,
name='relatorio_espelho'),
url(r'^relatorios/(?P<pk>\d+)/sessao_plenaria$',
relatorio_sessao_plenaria, name='relatorio_sessao_plenaria'),
url(r'^relatorios/protocolo$',
relatorio_protocolo, name='relatorio_protocolo')
relatorio_protocolo, name='relatorio_protocolo'),
url(r'^relatorios/etiqueta_protocolo$',
relatorio_etiqueta_protocolo, name='relatorio_etiqueta_protocolo'),
url(r'^relatorios/pauta_sessao$',
relatorio_pauta_sessao, name='relatorio_pauta_sessao'),
]

778
relatorios/views.py

@ -1,5 +1,6 @@
from datetime import datetime
from bs4 import BeautifulSoup
from django.http import HttpResponse
from base.models import CasaLegislativa
@ -7,16 +8,32 @@ from base.views import ESTADOS
from comissoes.models import Comissao
from materia.models import (Autor, Autoria, MateriaLegislativa, Numeracao,
Tramitacao, UnidadeTramitacao)
from parlamentares.models import Parlamentar
from parlamentares.models import (CargoMesa, ComposicaoMesa, Filiacao,
Parlamentar)
from protocoloadm.models import (DocumentoAdministrativo, Protocolo,
TramitacaoAdministrativo)
from sessao.models import OrdemDia, SessaoPlenaria
from sessao.models import (ExpedienteMateria, ExpedienteSessao, Orador,
OradorExpediente, OrdemDia, PresencaOrdemDia,
RegistroVotacao, SessaoPlenaria,
SessaoPlenariaPresenca, TipoExpediente)
from .templates import (pdf_capa_processo_gerar,
pdf_documento_administrativo_gerar,
pdf_espelho_gerar,
pdf_materia_gerar,
pdf_protocolo_gerar)
pdf_documento_administrativo_gerar, pdf_espelho_gerar,
pdf_etiqueta_protocolo_gerar, pdf_materia_gerar,
pdf_ordem_dia_gerar, pdf_pauta_sessao_gerar,
pdf_protocolo_gerar, pdf_sessao_plenaria_gerar)
def get_kwargs_params(request, fields):
kwargs = {}
for i in fields:
if '__icontains' in i:
x = i[:-11] # remove '__icontains'
else:
x = i
if x in request.GET:
kwargs[i] = request.GET[x]
return kwargs
def get_cabecalho(casa):
@ -141,7 +158,8 @@ def relatorio_materia(request):
'''
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="relatorio_materia.pdf"'
response[
'Content-Disposition'] = 'attachment; filename="relatorio_materia.pdf"'
casa = CasaLegislativa.objects.first()
@ -149,14 +167,19 @@ def relatorio_materia(request):
rodape = get_rodape(casa)
imagem = get_imagem(casa)
# TODO pesquisar baseado em filtros
mats = MateriaLegislativa.objects.all()[:50]
kwargs = get_kwargs_params(request, ['numero',
'ano',
'autor',
'tipo_autor',
'relator',
'interessado__icontains'
])
mats = MateriaLegislativa.objects.filter(**kwargs)
materias = get_materias(mats)
pdf = pdf_materia_gerar.principal(None,
imagem,
None,
pdf = pdf_materia_gerar.principal(imagem,
materias,
cabecalho,
rodape)
@ -231,13 +254,15 @@ def get_capa_processo(prot):
return protocolos
def relatorio_processo(request):
def relatorio_capa_processo(request):
'''
pdf_capa_processo_gerar.py
'''
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="relatorio_processo.pdf"'
response[
'Content-Disposition'] = (
'attachment; filename="relatorio_processo.pdf"')
casa = CasaLegislativa.objects.first()
@ -245,12 +270,16 @@ def relatorio_processo(request):
rodape = get_rodape(casa)
imagem = get_imagem(casa)
protocolos = Protocolo.objects.all()[:50]
kwargs = get_kwargs_params(request, ['numero',
'ano',
'tipo_protocolo',
'tipo_processo',
'assunto__icontains',
# 'interessado__icontains'
])
protocolos = Protocolo.objects.filter(**kwargs)
protocolos_pdf = get_capa_processo(protocolos)
pdf = pdf_capa_processo_gerar.principal(None,
imagem,
None,
pdf = pdf_capa_processo_gerar.principal(imagem,
protocolos_pdf,
cabecalho,
rodape)
@ -261,85 +290,9 @@ def relatorio_processo(request):
def get_ordem_dia(ordem, sessao):
pass
# splen = []
# pauta = []
# data = ''
# for dat_sessao in SessaoPlenaria.objects.filter(id=sessao.id):
# data = dat_sessao.data_inicio
# dat_ordem = dat_sessao.data_inicio
# seleciona dados da sessão plenária
# for sp in context.zsql.sessao_plenaria_obter_zsql(dat_inicio_sessao=data, ind_excluido=0):
# dicsp = {} # dicionário que armazenará os dados a serem impressos de uma sessão plenária
# ts = context.zsql.tipo_sessao_plenaria_obter_zsql(tip_sessao=sp.tip_sessao)[0]
# dicsp["sessao"] = str(sp.num_sessao_plen)+"ª Sessao "+ts.nom_sessao+" da "+str(sp.num_sessao_leg)+"ª Sessao Legislativa da "+str(sp.num_legislatura)+"ª Legislatura"
# dia = context.pysc.data_converter_por_extenso_pysc(data=sp.dat_inicio_sessao)
# hora = context.pysc.hora_formatar_pysc(hora=sp.hr_inicio_sessao)
# dicsp["datasessao"] = "Dia "+str(dia)+" ("+str(sp.dia_sessao)+") - Inicio as "+hora
# splen.append(dicsp)
# seleciona as matérias que compõem a pauta na data escolhida
# for ordem in context.zsql.ordem_dia_obter_zsql(dat_ordem=data, ind_excluido=0):
# seleciona os detalhes de uma matéria
# materia = context.zsql.materia_obter_zsql(cod_materia=ordem.cod_materia)[0]
# dic = {} # dicionário que armazenará os dados a serem impressos de uma matéria
# dic["num_ordem"] = ordem.num_ordem
# dic["id_materia"] = materia.des_tipo_materia+" - Nº "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica)
# dic["id_materia"] = materia.sgl_tipo_materia+" - "+str(materia.num_ident_basica)+"/"+str(materia.ano_ident_basica)+" - "+materia.des_tipo_materia
# dic["txt_ementa"] = ordem.txt_observacao
# numeracao do processo 26/02/2011
# dic["des_numeracao"]=""
# numeracao = context.zsql.numeracao_obter_zsql(cod_materia=ordem.cod_materia)
# if len(numeracao):
# numeracao = numeracao[0]
# dic["des_numeracao"] = str(numeracao.num_materia)+"/"+str(numeracao.ano_materia)
# dic["des_turno"]=""
# dic["des_situacao"] = ""
# tramitacao = context.zsql.tramitacao_obter_zsql(cod_materia=ordem.cod_materia, ind_ult_tramitacao=1)
# if len(tramitacao):
# tramitacao = tramitacao[0]
# if tramitacao.sgl_turno != "":
# for turno in [("P","Primeiro"), ("S","Segundo"), ("U","Único"), ("L","Suplementar"), ("A","Votação Única em Regime de Urgência"), ("B","1ª Votação"), ("C","2ª e 3ª Votações")]:
# if tramitacao.sgl_turno == turno[0]:
# dic["des_turno"] = turno[1]
# dic["des_situacao"] = tramitacao.des_status
# if dic["des_situacao"]==None:
# dic["des_situacao"] = " "
# dic["nom_autor"] = ''
# autoria = context.zsql.autoria_obter_zsql(cod_materia=ordem.cod_materia, ind_primeiro_autor=1)
# if len(autoria): # se existe autor
# autoria = autoria[0]
# try:
# autor = context.zsql.autor_obter_zsql(cod_autor=autoria.cod_autor)
# if len(autor):
# autor = autor[0]
# if autor.des_tipo_autor == "Parlamentar":
# parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=autor.cod_parlamentar)[0]
# dic["nom_autor"] = parlamentar.nom_parlamentar
# elif autor.des_tipo_autor == "Comissao":
# comissao = context.zsql.comissao_obter_zsql(cod_comissao=autor.cod_comissao)[0]
# dic["nom_autor"] = comissao.nom_comissao
# else:
# dic["nom_autor"] = autor.nom_autor
# except:
# pass
# lst_relator = [] # lista contendo os relatores da matéria
# for relatoria in context.zsql.relatoria_obter_zsql(cod_materia=ordem.cod_materia):
# parlamentar = context.zsql.parlamentar_obter_zsql(cod_parlamentar=relatoria.cod_parlamentar)[0]
# comissao = context.zsql.comissao_obter_zsql(cod_comissao=relatoria.cod_comissao)[0]
# lst_relator.append(parlamentar.nom_parlamentar+" - "+comissao.nom_comissao)
# if not len(lst_relator):
# lst_relator = ['']
# dic["lst_relator"] = lst_relator
# adiciona o dicionário na pauta
# pauta.append(dic)
# TODO: fazer implementação de ordem dia
pass
def relatorio_ordem_dia(request):
@ -348,7 +301,10 @@ def relatorio_ordem_dia(request):
'''
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="relatorio_ordem_dia.pdf"'
response[
'Content-Disposition'] = (
'attachment; filename="relatorio_ordem_dia.pdf"')
casa = CasaLegislativa.objects.first()
@ -356,13 +312,14 @@ 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,
pdf = pdf_ordem_dia_gerar.principal(imagem,
ordem_pdf,
cabecalho,
rodape)
@ -378,7 +335,9 @@ def relatorio_documento_administrativo(request):
'''
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="relatorio_documento_administrativo.pdf"'
response[
'Content-Disposition'] = (
'attachment; filename="relatorio_documento_administrativo.pdf"')
casa = CasaLegislativa.objects.first()
@ -390,9 +349,7 @@ def relatorio_documento_administrativo(request):
doc_pdf = get_documento_administrativo(docs)
pdf = pdf_documento_administrativo_gerar.principal(
None,
imagem,
None,
doc_pdf,
cabecalho,
rodape)
@ -438,13 +395,15 @@ def get_documento_administrativo(docs):
documentos.append(dic)
return documentos
def relatorio_espelho(request):
'''
pdf_espelho_gerar.py
'''
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="relatorio_espelho.pdf"'
response[
'Content-Disposition'] = 'attachment; filename="relatorio_espelho.pdf"'
casa = CasaLegislativa.objects.first()
@ -456,9 +415,7 @@ def relatorio_espelho(request):
mat_pdf = get_espelho(mats)
pdf = pdf_espelho_gerar.principal(
None,
imagem,
None,
mat_pdf,
cabecalho,
rodape)
@ -466,6 +423,7 @@ def relatorio_espelho(request):
return response
def get_espelho(mats):
materias = []
for m in mats:
@ -520,7 +478,8 @@ def get_espelho(mats):
dic['norma_juridica_vinculada'] = 'Não há nenhuma\
norma jurídica vinculada'
# TODO
# for norma in context.zsql.materia_buscar_norma_juridica_zsql(cod_materia=materia.cod_materia):
# for norma in context.zsql.materia_buscar_norma_juridica_zsql(
# cod_materia=materia.cod_materia):
# dic['norma_juridica_vinculada'] = norma.des_norma + " " + \
# str(norma.num_norma) + "/" + str(norma.ano_norma)
@ -528,6 +487,317 @@ def get_espelho(mats):
return materias
def get_sessao_plenaria(sessao, casa):
inf_basicas_dic = {}
inf_basicas_dic["num_sessao_plen"] = str(sessao.numero)
inf_basicas_dic["nom_sessao"] = sessao.tipo.nome
inf_basicas_dic["num_legislatura"] = str(sessao.legislatura)
inf_basicas_dic["num_sessao_leg"] = sessao.sessao_legislativa.numero
inf_basicas_dic["dat_inicio_sessao"] = sessao.data_inicio.strftime(
"%d/%m/%Y")
inf_basicas_dic["hr_inicio_sessao"] = sessao.hora_inicio
inf_basicas_dic["dat_fim_sessao"] = sessao.data_fim.strftime("%d/%m/%Y")
inf_basicas_dic["hr_fim_sessao"] = sessao.hora_fim
inf_basicas_dic["nom_camara"] = casa.nome
# Lista da composicao da mesa diretora
lst_mesa = []
for composicao in ComposicaoMesa.objects.filter(
sessao_legislativa=sessao.sessao_legislativa):
for parlamentar in Parlamentar.objects.filter(
id=composicao.parlamentar.id):
for cargo in CargoMesa.objects.filter(id=composicao.cargo.id):
dic_mesa = {}
dic_mesa['nom_parlamentar'] = parlamentar.nome_parlamentar
dic_mesa['sgl_partido'] = Filiacao.objects.filter(
parlamentar=parlamentar).first().partido.sigla
dic_mesa['des_cargo'] = cargo.descricao
lst_mesa.append(dic_mesa)
# Lista de presença na sessão
lst_presenca_sessao = []
for presenca in SessaoPlenariaPresenca.objects.filter(
sessao_plenaria=sessao):
for parlamentar in Parlamentar.objects.filter(
id=presenca.parlamentar.id):
dic_presenca = {}
dic_presenca["nom_parlamentar"] = parlamentar.nome_parlamentar
dic_presenca['sgl_partido'] = Filiacao.objects.filter(
parlamentar=parlamentar).first().partido.sigla
lst_presenca_sessao.append(dic_presenca)
# Exibe os Expedientes
lst_expedientes = []
for tip_expediente in TipoExpediente.objects.all():
for expediente in ExpedienteSessao.objects.filter(
sessao_plenaria=sessao, tipo=tip_expediente):
dic_expedientes = {}
dic_expedientes["nom_expediente"] = str(tip_expediente)
dic_expedientes["txt_expediente"] = (
BeautifulSoup(expediente.conteudo).text)
if dic_expedientes:
lst_expedientes.append(dic_expedientes)
# Lista das matérias do Expediente, incluindo o resultado das votacoes
lst_expediente_materia = []
for expediente_materia in ExpedienteMateria.objects.filter(
sessao_plenaria=sessao):
# seleciona os detalhes de uma matéria
materia = MateriaLegislativa.objects.filter(
id=expediente_materia.materia.id).first()
dic_expediente_materia = {}
dic_expediente_materia["num_ordem"] = expediente_materia.numero_ordem
dic_expediente_materia["id_materia"] = (materia.tipo.sigla + ' ' +
materia.tipo.descricao + ' ' +
str(materia.numero) + '/' +
str(materia.ano))
dic_expediente_materia["des_numeracao"] = ' '
numeracao = Numeracao.objects.filter(
materia=expediente_materia.materia).first()
if numeracao is not None:
dic_expediente_materia["des_numeracao"] = (
str(numeracao.numero) + '/' + str(numeracao.ano))
dic_expediente_materia["des_turno"] = ' '
tram = Tramitacao.objects.filter(
materia=materia).first()
if tram is not None:
if tram.turno != '':
for turno in [("P", "Primeiro"),
("S", "Segundo"),
("U", "Único"),
("L", "Suplementar"),
("A", "Votação Única em Regime de Urgência"),
("B", "1ª Votação"),
("C", "2ª e 3ª Votações"),
("F", "Final")]:
if tram.turno == turno[0]:
dic_expediente_materia["des_turno"] = turno[1]
dic_expediente_materia["txt_ementa"] = str(materia.ementa)
dic_expediente_materia["ordem_observacao"] = ' ' # TODO
dic_expediente_materia["nom_autor"] = ' '
autoria = Autoria.objects.filter(
materia=materia, primeiro_autor=True).first()
if autoria is not None:
autor = Autor.objects.filter(id=autoria.autor.id)
if autor is not None:
autor = autor.first()
if autor.tipo == 'Parlamentar':
parlamentar = Parlamentar.objects.filter(
id=autor.parlamentar.id)
dic_expediente_materia["nom_autor"] = str(
parlamentar.nome_completo)
elif autor.tipo == 'Comissao':
comissao = Comissao.objects.filter(id=autor.comissao.id)
dic_expediente_materia["nom_autor"] = str(comissao)
else:
dic_expediente_materia["nom_autor"] = str(autor.nome)
elif autoria is None:
dic_expediente_materia["nom_autor"] = 'Desconhecido'
dic_expediente_materia["votacao_observacao"] = ' '
if not expediente_materia.resultado:
resultado = RegistroVotacao.objects.filter(
tipo_resultado_votacao=expediente_materia.tipo_votacao)
for i in resultado:
dic_expediente_materia["nom_resultado"] = (
i.tipo_resultado_votacao.nome)
dic_expediente_materia["votacao_observacao"] = (
expediente_materia.observacao)
else:
dic_expediente_materia["nom_resultado"] = "Matéria não votada"
dic_expediente_materia["votacao_observacao"] = "Vazio"
lst_expediente_materia.append(dic_expediente_materia)
# Lista dos oradores do Expediente
lst_oradores_expediente = []
for orador_expediente in OradorExpediente.objects.filter(
sessao_plenaria=sessao):
parlamentar = Parlamentar.objects.get(
id=orador_expediente.parlamentar.id)
dic_oradores_expediente = {}
dic_oradores_expediente["num_ordem"] = (
orador_expediente.numero_ordem)
dic_oradores_expediente["nom_parlamentar"] = (
parlamentar.nome_parlamentar)
dic_oradores_expediente['sgl_partido'] = (
Filiacao.objects.filter(
parlamentar=parlamentar).first().partido.sigla)
lst_oradores_expediente.append(dic_oradores_expediente)
# Lista presença na ordem do dia
lst_presenca_ordem_dia = []
for presenca_ordem_dia in PresencaOrdemDia.objects.filter(
sessao_plenaria=sessao):
for parlamentar in Parlamentar.objects.filter(
id=presenca_ordem_dia.parlamentar.id):
dic_presenca_ordem_dia = {}
dic_presenca_ordem_dia['nom_parlamentar'] = (
parlamentar.nome_parlamentar)
dic_presenca_ordem_dia['sgl_partido'] = (
Filiacao.objects.filter(
parlamentar=parlamentar).first().partido.sigla)
lst_presenca_ordem_dia.append(dic_presenca_ordem_dia)
# Lista das matérias da Ordem do Dia, incluindo o resultado das votacoes
lst_votacao = []
for votacao in OrdemDia.objects.filter(
sessao_plenaria=sessao):
# seleciona os detalhes de uma matéria
materia = MateriaLegislativa.objects.filter(
id=votacao.materia.id).first()
dic_votacao = {}
dic_votacao["num_ordem"] = votacao.numero_ordem
dic_votacao["id_materia"] = (
materia.tipo.sigla + ' ' +
materia.tipo.descricao + ' ' +
str(materia.numero) + '/' +
str(materia.ano))
dic_votacao["des_numeracao"] = ' '
numeracao = Numeracao.objects.filter(
materia=votacao.materia).first()
if numeracao is not None:
dic_votacao["des_numeracao"] = (
str(numeracao.numero) +
'/' +
str(numeracao.ano))
dic_votacao["des_turno"] = ' '
tramitacao = Tramitacao.objects.filter(
materia=materia).first()
if tramitacao is not None:
if not tramitacao.turno:
for turno in [("P", "Primeiro"),
("S", "Segundo"),
("U", "Único"),
("L", "Suplementar"),
("F", "Final"),
("A", "Votação Única em Regime de Urgência"),
("B", "1ª Votação"),
("C", "2ª e 3ª Votações")]:
if tramitacao.turno == turno[0]:
dic_votacao["des_turno"] = turno[1]
dic_votacao["txt_ementa"] = materia.ementa
dic_votacao["ordem_observacao"] = votacao.observacao
dic_votacao["nom_autor"] = ' '
autoria = Autoria.objects.filter(
materia=materia, primeiro_autor=True).first()
if autoria is not None:
autor = Autor.objects.filter(id=autoria.autor.id)
if autor is not None:
autor = autor.first()
if autor.tipo == 'Parlamentar':
parlamentar = Parlamentar.objects.filter(
id=autor.parlamentar.id)
dic_votacao["nom_autor"] = str(parlamentar.nome_completo)
elif autor.tipo == 'Comissao':
comissao = Comissao.objects.filter(
id=autor.comissao.id)
dic_votacao["nom_autor"] = str(comissao)
else:
dic_votacao["nom_autor"] = str(autor.nome)
elif autoria is None:
dic_votacao["nom_autor"] = 'Desconhecido'
dic_votacao["votacao_observacao"] = ' '
if not votacao.resultado:
resultado = RegistroVotacao.objects.filter(
tipo_resultado_votacao=votacao.tipo_votacao)
for i in resultado:
dic_votacao["nom_resultado"] = i.tipo_resultado_votacao.nome
if votacao.observacao:
dic_votacao["votacao_observacao"] = votacao.observacao
else:
dic_votacao["nom_resultado"] = "Matéria não votada"
dic_votacao["votacao_observacao"] = "Vazio"
lst_votacao.append(dic_votacao)
# Lista dos oradores nas Explicações Pessoais
lst_oradores = []
for orador in Orador.objects.filter(
sessao_plenaria=sessao):
for parlamentar in Parlamentar.objects.filter(
id=orador.parlamentar.id):
dic_oradores = {}
dic_oradores["num_ordem"] = orador.numero_ordem
dic_oradores["nom_parlamentar"] = parlamentar.nome_parlamentar
dic_oradores['sgl_partido'] = (
Filiacao.objects.filter(
parlamentar=parlamentar).first().partido.sigla)
lst_oradores.append(dic_oradores)
return (inf_basicas_dic,
lst_mesa,
lst_presenca_sessao,
lst_expedientes,
lst_expediente_materia,
lst_oradores_expediente,
lst_presenca_ordem_dia,
lst_votacao,
lst_oradores)
def relatorio_sessao_plenaria(request, pk):
'''
pdf_sessao_plenaria_gerar.py
'''
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = (
'attachment; filename="relatorio_protocolo.pdf"')
casa = CasaLegislativa.objects.first()
cabecalho = get_cabecalho(casa)
rodape = get_rodape(casa)
imagem = get_imagem(casa)
sessao = SessaoPlenaria.objects.get(id=pk)
(inf_basicas_dic,
lst_mesa,
lst_presenca_sessao,
lst_expedientes,
lst_expediente_materia,
lst_oradores_expediente,
lst_presenca_ordem_dia,
lst_votacao,
lst_oradores) = get_sessao_plenaria(sessao, casa)
pdf = pdf_sessao_plenaria_gerar.principal(
cabecalho,
rodape,
imagem,
None,
inf_basicas_dic,
lst_mesa,
lst_presenca_sessao,
lst_expedientes,
lst_expediente_materia,
lst_oradores_expediente,
lst_presenca_ordem_dia,
lst_votacao,
lst_oradores)
response.write(pdf)
return response
def get_protocolos(prots):
protocolos = []
@ -536,7 +806,9 @@ def get_protocolos(prots):
dic['titulo'] = str(protocolo.numero) + '/' + str(protocolo.ano)
dic['data'] = protocolo.data.strftime("%d/%m/%Y") + ' - <b>Horário:</b>' + protocolo.hora.strftime("%H:%m")
dic['data'] = protocolo.data.strftime(
"%d/%m/%Y") + ' - <b>Horário:</b>' + protocolo.hora.strftime(
"%H:%m")
dic['txt_assunto'] = protocolo.assunto_ementa
@ -577,7 +849,9 @@ def relatorio_protocolo(request):
'''
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="relatorio_protocolo.pdf"'
response[
'Content-Disposition'] = (
'attachment; filename="relatorio_protocolo.pdf"')
casa = CasaLegislativa.objects.first()
@ -585,13 +859,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)
@ -601,3 +881,271 @@ def relatorio_protocolo(request):
return response
def relatorio_etiqueta_protocolo(request):
'''
pdf__etiqueta_protocolo_gerar.py
'''
response = HttpResponse(content_type='application/pdf')
response[
'Content-Disposition'] = (
'attachment; filename="relatorio_etiqueta_protocolo.pdf"')
casa = CasaLegislativa.objects.first()
cabecalho = get_cabecalho(casa)
rodape = get_rodape(casa)
imagem = get_imagem(casa)
kwargs = get_kwargs_params(request, ['numero',
'ano',
'tipo_protocolo',
'tipo_processo',
'autor',
'assunto__icontains',
'interessado__icontains'])
protocolos = Protocolo.objects.filter(**kwargs)
protocolo_data = get_etiqueta_protocolos(protocolos)
pdf = pdf_etiqueta_protocolo_gerar.principal(imagem,
protocolo_data,
cabecalho,
rodape)
response.write(pdf)
return response
def get_etiqueta_protocolos(prots):
protocolos = []
for p in prots:
dic = {}
dic['titulo'] = str(p.numero) + '/' + str(p.ano)
dic['data'] = p.data.strftime(
"%d/%m/%Y") + ' - <b>Horário:</b>' + p.hora.strftime("%H:%m")
dic['txt_assunto'] = p.assunto_ementa
dic['txt_interessado'] = p.interessado
dic['nom_autor'] = ' '
if p.autor:
if p.autor.parlamentar:
dic['nom_autor'] = p.autor.parlamentar.nome_completo
elif p.autor.comissao:
dic['nom_autor'] = p.autor.comissao.nome
dic['natureza'] = ''
if p.tipo_processo == 0:
dic['natureza'] = 'Administrativo'
if p.tipo_processo == 1:
dic['natureza'] = 'Legislativo'
dic['num_materia'] = ''
for materia in MateriaLegislativa.objects.filter(
numero_protocolo=p.numero, ano=p.ano):
dic['num_materia'] = str(materia)
dic['num_documento'] = ''
for documento in DocumentoAdministrativo.objects.filter(
numero_protocolo=p.numero):
dic['num_documento'] = str(documento)
dic['ident_processo'] = dic['num_materia'] or dic['num_documento']
dic['processo'] = (str(p.tipo_materia) or
str(p.tipo_documento))
dic['anulado'] = ''
if p.anulado:
dic['anulado'] = 'Nulo'
protocolos.append(dic)
return protocolos
def relatorio_pauta_sessao(request):
'''
pdf__pauta_sessao_gerar.py
'''
response = HttpResponse(content_type='application/pdf')
response[
'Content-Disposition'] = (
'attachment; filename="relatorio_pauta_sessao.pdf"')
casa = CasaLegislativa.objects.first()
cabecalho = get_cabecalho(casa)
rodape = get_rodape(casa)
imagem = get_imagem(casa)
sessao = SessaoPlenaria.objects.first()
lst_expediente_materia, lst_votacao, inf_basicas_dic = get_pauta_sessao(
sessao, casa)
pdf = pdf_pauta_sessao_gerar.principal(cabecalho,
rodape,
sessao,
imagem,
inf_basicas_dic,
lst_expediente_materia,
lst_votacao)
response.write(pdf)
return response
def get_pauta_sessao(sessao, casa):
inf_basicas_dic = {}
inf_basicas_dic["nom_sessao"] = sessao.tipo.nome
inf_basicas_dic["num_sessao_plen"] = sessao.numero
inf_basicas_dic["num_legislatura"] = sessao.legislatura
inf_basicas_dic["num_sessao_leg"] = sessao.legislatura
inf_basicas_dic["dat_inicio_sessao"] = sessao.data_inicio
inf_basicas_dic["hr_inicio_sessao"] = sessao.hora_inicio
inf_basicas_dic["dat_fim_sessao"] = sessao.data_fim
inf_basicas_dic["hr_fim_sessao"] = sessao.hora_fim
inf_basicas_dic["nom_camara"] = casa.nome
lst_expediente_materia = []
for expediente_materia in ExpedienteMateria.objects.filter(
data_ordem=sessao.data_inicio, sessao_plenaria=sessao):
materia = MateriaLegislativa.objects.filter(
id=expediente_materia.materia.id).first()
dic_expediente_materia = {}
dic_expediente_materia["num_ordem"] = str(
expediente_materia.numero_ordem)
dic_expediente_materia["id_materia"] = str(
materia.numero) + "/" + str(materia.ano)
dic_expediente_materia["txt_ementa"] = materia.ementa
dic_expediente_materia["ordem_observacao"] = str(
expediente_materia.observacao)
dic_expediente_materia["des_numeracao"] = ' '
numeracao = Numeracao.objects.filter(materia=materia)
if numeracao is not None:
numeracao = numeracao.first()
dic_expediente_materia["des_numeracao"] = str(numeracao)
dic_expediente_materia["nom_autor"] = ' '
autoria = Autoria.objects.filter(
materia=materia, primeiro_autor=True).first()
if autoria is not None:
autor = Autor.objects.filter(id=autoria.autor.id)
if autor is not None:
autor = autor.first()
if autor.tipo == 'Parlamentar':
parlamentar = Parlamentar.objects.filter(
id=autor.parlamentar.id)
dic_expediente_materia["nom_autor"] = str(
parlamentar.nome_completo)
elif autor.tipo == 'Comissao':
comissao = Comissao.objects.filter(id=autor.comissao.id)
dic_expediente_materia["nom_autor"] = str(comissao)
else:
dic_expediente_materia["nom_autor"] = str(autor.nome)
elif autoria is None:
dic_expediente_materia["nom_autor"] = 'Desconhecido'
dic_expediente_materia["des_turno"] = ' '
dic_expediente_materia["des_situacao"] = ' '
tramitacao = Tramitacao.objects.filter(materia=materia)
if tramitacao is not None:
tramitacao = tramitacao.first()
if tramitacao.turno != '':
for turno in [("P", "Primeiro"),
("S", "Segundo"),
("U", "Único"),
("F", "Final"),
("L", "Suplementar"),
("A", "Votação Única em Regime de Urgência"),
("B", "1ª Votação"),
("C", "2ª e 3ª Votações")]:
if tramitacao.turno == turno.first():
dic_expediente_materia["des_turno"] = turno.first()
dic_expediente_materia["des_situacao"] = tramitacao.status
if dic_expediente_materia["des_situacao"] is None:
dic_expediente_materia["des_situacao"] = ' '
lst_expediente_materia.append(dic_expediente_materia)
lst_votacao = []
for votacao in OrdemDia.objects.filter(
data_ordem=sessao.data_inicio, sessao_plenaria=sessao):
materia = MateriaLegislativa.objects.filter(
id=votacao.materia.id).first()
dic_votacao = {}
dic_votacao["num_ordem"] = votacao.numero_ordem
dic_votacao["id_materia"] = str(
materia.numero) + "/" + str(materia.ano)
dic_votacao["txt_ementa"] = materia.ementa
dic_votacao["ordem_observacao"] = votacao.observacao
dic_votacao["des_numeracao"] = ' '
numeracao = Numeracao.objects.filter(materia=materia)
# if numeracao is not None:
# numeracao = numeracao.first()
# dic_votacao["des_numeracao"] = str(
# numeracao.numero) + '/' + str(numeracao.ano)
dic_votacao["nom_autor"] = ' '
autoria = Autoria.objects.filter(
materia=materia, primeiro_autor=True).first()
if autoria is not None:
autor = Autor.objects.filter(id=autoria.autor.id)
if autor is not None:
autor = autor.first()
if autor.tipo == 'Parlamentar':
parlamentar = Parlamentar.objects.filter(
id=autor.parlamentar.id)
dic_votacao["nom_autor"] = str(parlamentar.nome_completo)
elif autor.tipo == 'Comissao':
comissao = Comissao.objects.filter(
id=autor.comissao.id)
dic_votacao["nom_autor"] = str(comissao)
else:
dic_votacao["nom_autor"] = str(autor.nome)
elif autoria is None:
dic_votacao["nom_autor"] = 'Desconhecido'
dic_votacao["des_turno"] = ' '
dic_votacao["des_situacao"] = ' '
tramitacao = Tramitacao.objects.filter(materia=materia)
if tramitacao is not None:
tramitacao = tramitacao.first()
if tramitacao.turno != '':
for turno in [("P", "Primeiro"),
("S", "Segundo"),
("U", "Único"),
("L", "Suplementar"),
("A", "Votação Única em Regime de Urgência"),
("B", "1ª Votação"),
("C", "2ª e 3ª Votações")]:
if tramitacao.turno == turno.first():
dic_votacao["des_turno"] = turno.first()
dic_votacao["des_situacao"] = tramitacao.status
if dic_votacao["des_situacao"] is None:
dic_votacao["des_situacao"] = ' '
lst_votacao.append(dic_votacao)
return (lst_expediente_materia,
lst_votacao,
inf_basicas_dic)

4
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)

24
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'),
),
]

3
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(

162
sessao/views.py

@ -1679,6 +1679,14 @@ class VotacaoNominalView(FormMixin, sessao_crud.CrudDetailView):
nao_votou += 1
try:
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
@ -1689,12 +1697,6 @@ class VotacaoNominalView(FormMixin, sessao_crud.CrudDetailView):
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)
for votos in request.POST.getlist('voto_parlamentar'):
v = votos.split(':')
@ -1702,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
@ -1833,9 +1835,9 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
ordem_id = kwargs['mid']
expediente_id = kwargs['mid']
expediente = ExpedienteMateria.objects.get(id=ordem_id)
expediente = ExpedienteMateria.objects.get(id=expediente_id)
materia = {'materia': expediente.materia,
'ementa': sub(
@ -1847,8 +1849,8 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView):
def post(self, request, *args, **kwargs):
self.object = self.get_object()
ordem_id = kwargs['mid']
expediente = ExpedienteMateria.objects.get(id=ordem_id)
expediente_id = kwargs['mid']
expediente = ExpedienteMateria.objects.get(id=expediente_id)
form = VotacaoNominalForm(request.POST)
@ -1859,7 +1861,7 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView):
if form.is_valid():
materia_id = kwargs['oid']
ordem_id = kwargs['mid']
expediente_id = kwargs['mid']
votos_sim = 0
votos_nao = 0
@ -1887,7 +1889,7 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView):
votacao.numero_abstencoes = abstencoes
votacao.observacao = request.POST['observacao']
votacao.materia_id = materia_id
votacao.ordem_id = ordem_id
votacao.expediente = expediente
votacao.tipo_resultado_votacao_id = int(
request.POST['resultado_votacao'])
votacao.save()
@ -1896,7 +1898,7 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView):
else:
votacao = RegistroVotacao.objects.get(
materia_id=materia_id,
ordem_id=ordem_id)
expediente_id=expediente)
for votos in request.POST.getlist('voto_parlamentar'):
v = votos.split(':')
@ -1916,14 +1918,14 @@ class VotacaoNominalExpedienteView(FormMixin, sessao_crud.CrudDetailView):
voto_parlamentar.votacao_id = votacao.id
voto_parlamentar.save()
ordem = ExpedienteMateria.objects.get(
expediente = ExpedienteMateria.objects.get(
sessao_plenaria_id=self.object.id,
materia_id=materia_id)
resultado = TipoResultadoVotacao.objects.get(
id=request.POST['resultado_votacao'])
ordem.resultado = resultado.nome
ordem.votacao_aberta = False
ordem.save()
expediente.resultado = resultado.nome
expediente.votacao_aberta = False
expediente.save()
return self.form_valid(form)
else:
@ -1959,12 +1961,12 @@ class VotacaoNominalExpedienteEditView(FormMixin, sessao_crud.CrudDetailView):
context = self.get_context_data(object=self.object)
materia_id = kwargs['oid']
ordem_id = kwargs['mid']
expediente_id = kwargs['mid']
votacao = RegistroVotacao.objects.get(
materia_id=materia_id,
ordem_id=ordem_id)
ordem = ExpedienteMateria.objects.get(id=ordem_id)
expediente_id=expediente_id)
expediente = ExpedienteMateria.objects.get(id=expediente_id)
votos = VotoParlamentar.objects.filter(votacao_id=votacao.id)
list_votos = []
@ -1974,9 +1976,9 @@ class VotacaoNominalExpedienteEditView(FormMixin, sessao_crud.CrudDetailView):
context.update({'votos': list_votos})
materia = {'materia': ordem.materia,
materia = {'materia': expediente.materia,
'ementa': sub(
'&nbsp;', ' ', strip_tags(ordem.observacao))}
'&nbsp;', ' ', strip_tags(expediente.observacao))}
context.update({'materia': materia})
votacao_existente = {'observacao': sub(
@ -1992,19 +1994,19 @@ class VotacaoNominalExpedienteEditView(FormMixin, sessao_crud.CrudDetailView):
form = VotacaoEdit(request.POST)
materia_id = kwargs['oid']
ordem_id = kwargs['mid']
expediente_id = kwargs['mid']
if(int(request.POST['anular_votacao']) == 1):
registro = RegistroVotacao.objects.get(
materia_id=materia_id,
ordem_id=ordem_id)
expediente_id=expediente_id)
ordem = ExpedienteMateria.objects.get(
expediente = ExpedienteMateria.objects.get(
sessao_plenaria_id=self.object.id,
materia_id=materia_id)
ordem.resultado = None
ordem.votacao_aberta = False
ordem.save()
expediente.resultado = None
expediente.votacao_aberta = False
expediente.save()
try:
votacao = VotoParlamentar.objects.filter(
@ -2049,12 +2051,13 @@ class VotacaoExpedienteView(FormMixin, sessao_crud.CrudDetailView):
else:
titulo = "Não definida"
ordem_id = kwargs['mid']
ordem = ExpedienteMateria.objects.get(id=ordem_id)
expediente_id = kwargs['mid']
expediente = ExpedienteMateria.objects.get(id=expediente_id)
qtde_presentes = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=self.object.id).count()
materia = {'materia': ordem.materia, 'ementa': ordem.observacao}
materia = {'materia': expediente.materia,
'ementa': expediente.observacao}
context.update({'votacao_titulo': titulo,
'materia': materia,
'total_presentes': qtde_presentes})
@ -2075,12 +2078,13 @@ class VotacaoExpedienteView(FormMixin, sessao_crud.CrudDetailView):
else:
titulo = "Não definida"
ordem_id = kwargs['mid']
ordem = ExpedienteMateria.objects.get(id=ordem_id)
expediente_id = kwargs['mid']
expediente = ExpedienteMateria.objects.get(id=expediente_id)
qtde_presentes = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=self.object.id).count()
materia = {'materia': ordem.materia, 'ementa': ordem.observacao}
materia = {'materia': expediente.materia,
'ementa': expediente.observacao}
context.update({'votacao_titulo': titulo,
'materia': materia,
'total_presentes': qtde_presentes})
@ -2088,13 +2092,15 @@ class VotacaoExpedienteView(FormMixin, sessao_crud.CrudDetailView):
# ====================================================
if 'cancelar-votacao' in request.POST:
ordem.votacao_aberta = False
ordem.save()
expediente.votacao_aberta = False
expediente.save()
return self.form_valid(form)
# import ipdb; ipdb.set_trace()
if form.is_valid():
materia_id = kwargs['oid']
ordem_id = kwargs['mid']
expediente_id = kwargs['mid']
qtde_presentes = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=self.object.id).count()
@ -2116,21 +2122,21 @@ class VotacaoExpedienteView(FormMixin, sessao_crud.CrudDetailView):
votacao.numero_abstencoes = int(request.POST['abstencoes'])
votacao.observacao = request.POST['observacao']
votacao.materia_id = materia_id
votacao.ordem_id = ordem_id
votacao.expediente_id = expediente_id
votacao.tipo_resultado_votacao_id = int(
request.POST['resultado_votacao'])
votacao.save()
except:
return self.form_invalid(form)
else:
ordem = ExpedienteMateria.objects.get(
expediente = ExpedienteMateria.objects.get(
sessao_plenaria_id=self.object.id,
materia_id=materia_id)
resultado = TipoResultadoVotacao.objects.get(
id=request.POST['resultado_votacao'])
ordem.resultado = resultado.nome
ordem.votacao_aberta = False
ordem.save()
expediente.resultado = resultado.nome
expediente.votacao_aberta = False
expediente.save()
return self.form_valid(form)
else:
@ -2154,29 +2160,17 @@ class VotacaoExpedienteEditView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/votacao/votacao_edit.html'
def post(self, request, *args, **kwargs):
self.object = self.get_object()
form = VotacaoEdit(request.POST)
materia_id = kwargs['oid']
ordem_id = kwargs['mid']
if(int(request.POST['anular_votacao']) == 1):
RegistroVotacao.objects.get(
materia_id=materia_id,
ordem_id=ordem_id).delete()
ordem = ExpedienteMateria.objects.get(
sessao_plenaria_id=self.object.id,
materia_id=materia_id)
ordem.votacao_aberta = False
ordem.resultado = None
ordem.save()
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sessaoplenaria:expedienteordemdia_list',
kwargs={'pk': pk})
return self.form_valid(form)
def get_tipos_votacao(self):
for tipo in TipoResultadoVotacao.objects.all():
yield tipo
def get(self, request, *args, **kwargs):
# import ipdb; ipdb.set_trace()
self.object = self.get_object()
context = self.get_context_data(object=self.object)
@ -2190,16 +2184,17 @@ class VotacaoExpedienteEditView(FormMixin, sessao_crud.CrudDetailView):
titulo = "Não definida"
materia_id = kwargs['oid']
ordem_id = kwargs['mid']
expediente_id = kwargs['mid']
ordem = ExpedienteMateria.objects.get(id=ordem_id)
expediente = ExpedienteMateria.objects.get(id=expediente_id)
materia = {'materia': ordem.materia, 'ementa': ordem.observacao}
materia = {'materia': expediente.materia,
'ementa': expediente.observacao}
context.update({'materia': materia})
votacao = RegistroVotacao.objects.get(
materia_id=materia_id,
ordem_id=ordem_id)
expediente_id=expediente_id)
votacao_existente = {'observacao': sub(
'&nbsp;', ' ', strip_tags(votacao.observacao)),
'tipo_resultado':
@ -2209,14 +2204,27 @@ class VotacaoExpedienteEditView(FormMixin, sessao_crud.CrudDetailView):
return self.render_to_response(context)
def get_tipos_votacao(self):
for tipo in TipoResultadoVotacao.objects.all():
yield tipo
def post(self, request, *args, **kwargs):
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sessaoplenaria:expedienteordemdia_list',
kwargs={'pk': pk})
self.object = self.get_object()
form = VotacaoEdit(request.POST)
materia_id = kwargs['oid']
expediente_id = kwargs['mid']
if(int(request.POST['anular_votacao']) == 1):
RegistroVotacao.objects.get(
materia_id=materia_id,
expediente_id=expediente_id).delete()
expediente = ExpedienteMateria.objects.get(
sessao_plenaria_id=self.object.id,
materia_id=materia_id)
expediente.votacao_aberta = False
expediente.resultado = None
expediente.save()
return self.form_valid(form)
class SessaoListView(ListView):

4
templates/materia/materialegislativa_list.html

@ -5,4 +5,8 @@
<dd><a href="{% url 'formulario_simplificado' %}">
{% blocktrans with verbose_name=view.verbose_name %} Formulário Simplificado {% endblocktrans %}
</a></dd>
<dd><a href="{% url 'pesquisar_materia' %}">
{% blocktrans with verbose_name=view.verbose_name %} Pesquisar Matéria {% endblocktrans %}
</a></dd>
{% endblock more_buttons %}

29
templates/painel/index.html

@ -93,22 +93,45 @@
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"]
}
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) {
$('<li />', {text: parlamentar.parlamentar + ' / ' + parlamentar.partido + '/ Voto: ' + parlamentar.voto}).appendTo(presentes);
});
}
}else{
jQuery.each(presentes_ordem_dia, function(index, parlamentar) {
/* $('<li />', {text: parlamentar.nome + '/' + parlamentar.partido + ' ' + parlamentar.voto }).appendTo(presentes);*/
$('<li />', {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("<li>Sim: " + data["numero_votos_sim"] + "</li>")
votacao.append("<li>Não: " + data["numero_votos_nao"] + "</li>")
votacao.append("<li>Abstenções: " + data["numero_abstencoes"] + "</li>")
votacao.append("<li>Presentes: " + data["num_presentes_ordem_dia"] + "</li>")
votacao.append("<li>Presentes: " + num_presentes_ordem_dia + "</li>")
votacao.append("<li>Total votos: " + data["total_votos"] + "</li>")
var discurso_current = data["cronometro_discurso"];
if (discurso_current != discurso_previous) {
$('#cronometro_discurso').runner(discurso_current);

2
templates/sessao/pauta_sessao_detail.html

@ -4,6 +4,8 @@
{% block actions %}{% endblock %}
{% block detail_content %}
<br>
<div align=right><a href="{% url 'relatorio_sessao_plenaria' object.id %}">> PDF</a></li></div>
<fieldset>
<legend>Pauta da Sessão</legend>
<h5 align="center">{{ sessaoplenaria }}</h5>

Loading…
Cancel
Save