Browse Source

Refactor painel

pull/44/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
2540bdd796
  1. 15
      compilacao/migrations/0031_merge.py
  2. 227
      painel/views.py

15
compilacao/migrations/0031_merge.py

@ -0,0 +1,15 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
('compilacao', '0030_auto_20151203_1114'),
('compilacao', '0030_auto_20151203_1117'),
]
operations = [
]

227
painel/views.py

@ -1,21 +1,19 @@
import datetime
from datetime import date from datetime import date
import datetime
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.http import HttpResponse, JsonResponse from django.http import HttpResponse, JsonResponse
from django.shortcuts import render from django.shortcuts import render
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from painel.models import Painel from painel.models import Painel
from parlamentares.models import Filiacao from parlamentares.models import Filiacao
from sapl.crud import build_crud from sapl.crud import build_crud
from sessao.models import (OrdemDia, PresencaOrdemDia, RegistroVotacao, from sessao.models import (OrdemDia, PresencaOrdemDia, RegistroVotacao,
SessaoPlenaria, SessaoPlenariaPresenca, SessaoPlenaria, SessaoPlenariaPresenca,
VotoParlamentar) TipoResultadoVotacao, VotoParlamentar)
from .models import Cronometro from .models import Cronometro
cronometro_painel_crud = build_crud( cronometro_painel_crud = build_crud(
Cronometro, '', [ Cronometro, '', [
@ -46,7 +44,7 @@ def controlador_painel(request):
def painel_view(request, pk): def painel_view(request, pk):
context = {'head_title': 'Painel Plenário', 'sessao_id': pk} context = {'head_title': 'Painel Plenário', 'sessao_id': pk}
return render(request, 'painel/index.html', context) return render(request, 'painel/index.html', context)
@ -75,54 +73,40 @@ def get_cronometro_status(request, name):
return cronometro return cronometro
def get_dados_painel(request, pk): def get_materia_aberta(pk):
# Sessão Plenária
sessao_plenaria_id = pk
sessao_plenaria = SessaoPlenaria.objects.get(id=sessao_plenaria_id)
status_painel = "FECHADO"
try: try:
painel = Painel.objects.get(data_painel=datetime.date.today()) materia = OrdemDia.objects.filter(
sessao_plenaria_id=pk, votacao_aberta=True).first()
return materia
except ObjectDoesNotExist:
return False
if painel.aberto:
status_painel = "ABERTO"
else:
response = {"sessao_plenaria": str(sessao_plenaria),
"sessao_plenaria_data": sessao_plenaria.data_inicio.strftime("%d/%m/%Y"),
"sessao_plenaria_hora_inicio": sessao_plenaria.hora_inicio,
"status_painel": status_painel,
}
return JsonResponse(response)
def get_last_materia(pk):
try:
materia = OrdemDia.objects.filter(
sessao_plenaria_id=pk).order_by('-data_ordem').first()
return materia
except ObjectDoesNotExist: except ObjectDoesNotExist:
response = {"sessao_plenaria": str(sessao_plenaria), return None
"sessao_plenaria_data": sessao_plenaria.data_inicio.strftime("%d/%m/%Y"),
"sessao_plenaria_hora_inicio": sessao_plenaria.hora_inicio,
"status_painel": status_painel,
}
return JsonResponse(response)
# # Pra recuperar o partido do parlamentar def get_presentes(pk, response, materia):
# # tem que fazer OUTRA query, deve ter uma
# # forma de fazer isso na base do join de data models.
filiacao = Filiacao.objects.filter( filiacao = Filiacao.objects.filter(
data_desfiliacao__isnull=True, parlamentar__ativo=True) data_desfiliacao__isnull=True, parlamentar__ativo=True)
parlamentar_partido = {} parlamentar_partido = {}
for f in filiacao: for f in filiacao:
parlamentar_partido[f.parlamentar.nome_parlamentar] = f.partido.sigla parlamentar_partido[
f.parlamentar.nome_parlamentar] = f.partido.sigla
# Presença Sessão Plenária
sessao_plenaria_presenca = SessaoPlenariaPresenca.objects.filter( sessao_plenaria_presenca = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=sessao_plenaria_id) sessao_plenaria_id=pk)
presentes_sessao_plenaria = [ presentes_sessao_plenaria = [
p.parlamentar.nome_parlamentar for p in sessao_plenaria_presenca] p.parlamentar.nome_parlamentar for p in sessao_plenaria_presenca]
num_presentes_sessao_plen = len(presentes_sessao_plenaria) num_presentes_sessao_plen = len(presentes_sessao_plenaria)
# Presença Ordem do dia
presenca_ordem_dia = PresencaOrdemDia.objects.filter( presenca_ordem_dia = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=sessao_plenaria_id) sessao_plenaria_id=pk)
presentes_ordem_dia = [] presentes_ordem_dia = []
for p in presenca_ordem_dia: for p in presenca_ordem_dia:
nome_parlamentar = p.parlamentar.nome_parlamentar nome_parlamentar = p.parlamentar.nome_parlamentar
@ -133,76 +117,115 @@ def get_dados_painel(request, pk):
}) })
num_presentes_ordem_dia = len(presentes_ordem_dia) num_presentes_ordem_dia = len(presentes_ordem_dia)
try: 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_ordem_dia': presentes_ordem_dia,
'num_presentes_ordem_dia': num_presentes_ordem_dia,
'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
def response_null_materia(response):
response.update({
'status_painel': 'FECHADO',
'msg_painel': 'Nenhuma matéria disponivel para votação.'
})
return JsonResponse(response)
ordemdia = OrdemDia.objects.get(
sessao_plenaria_id=sessao_plenaria_id, votacao_aberta=True)
votacao_aberta = True
materia_legislativa_texto = ordemdia.materia.ementa
materia_observacao = ordemdia.materia.observacao
tipo_votacao = ordemdia.tipo_votacao
# materia_titulo = ordemdia.materia
materia_titulo = ""
try:
votacao = RegistroVotacao.objects.get(
ordem_id=ordemdia.id, materia_id=ordemdia.materia.id)
numero_votos_sim = votacao.numero_votos_sim
numero_votos_nao = votacao.numero_votos_nao
numero_abstencoes = votacao.numero_abstencoes
tipo_resultado = votacao.tipo_resultado_votacao.nome
votacao_id = votacao.id
except ObjectDoesNotExist:
votacao_id = -1
numero_votos_sim = 0
numero_votos_nao = 0
numero_abstencoes = 0
tipo_resultado = ""
total_votos = numero_votos_sim + numero_votos_nao + numero_abstencoes
votos = {}
try:
voto_parlamentar = VotoParlamentar.objects.filter(
votacao_id=votacao_id)
for vp in voto_parlamentar:
votos[vp.parlamentar.id] = vp.voto
except ObjectDoesNotExist:
pass
except ObjectDoesNotExist: def get_votos(response, materia):
votacao_aberta = False registro = RegistroVotacao.objects.get(
materia_titulo = "" ordem=materia, materia=materia.materia)
materia_legislativa_texto = "" total = (registro.numero_votos_sim +
materia_observacao = "" registro.numero_votos_nao +
tipo_votacao = "" registro.numero_abstencoes)
response.update({
'numero_votos_sim': registro.numero_votos_sim,
'numero_votos_nao': registro.numero_votos_nao,
'numero_abstencoes': registro.numero_abstencoes,
'total_votos': total,
'tipo_resultado': registro.tipo_resultado_votacao.nome
})
return response
def get_votos_nominal(response, materia):
votos = {}
registro = RegistroVotacao.objects.get(
ordem=materia, materia=materia.materia)
votos_parlamentares = VotoParlamentar.objects.filter(
votacao_id=registro.id)
for v in votos_parlamentares:
votos.update({v.parlamentar.id: {
'parlamentar': v.parlamentar.nome_parlamentar,
'voto': str(v.voto)
}})
total = (registro.numero_votos_sim +
registro.numero_votos_nao +
registro.numero_abstencoes)
response.update({
'numero_votos_sim': registro.numero_votos_sim,
'numero_votos_nao': registro.numero_votos_nao,
'numero_abstencoes': registro.numero_abstencoes,
'total_votos': total,
'tipo_resultado': registro.tipo_resultado_votacao.nome,
'votos': votos
})
return response
def get_dados_painel(request, pk):
sessao = SessaoPlenaria.objects.get(id=pk)
cronometro_discurso = get_cronometro_status(request, 'discurso') cronometro_discurso = get_cronometro_status(request, 'discurso')
cronometro_aparte = get_cronometro_status(request, 'aparte') cronometro_aparte = get_cronometro_status(request, 'aparte')
cronometro_ordem = get_cronometro_status(request, 'ordem') cronometro_ordem = get_cronometro_status(request, 'ordem')
response = {"sessao_plenaria": str(sessao_plenaria), response = {
"sessao_plenaria_data": sessao_plenaria.data_inicio.strftime("%d/%m/%Y"), 'sessao_plenaria': str(sessao),
"sessao_plenaria_hora_inicio": sessao_plenaria.hora_inicio, 'sessao_plenaria_data': sessao.data_inicio.strftime('%d/%m/%Y'),
"materia_titulo": materia_titulo, 'sessao_plenaria_hora_inicio': sessao.hora_inicio,
"materia_legislativa_texto": materia_legislativa_texto, "cronometro_aparte": cronometro_aparte,
"materia_observacao": materia_observacao, "cronometro_discurso": cronometro_discurso,
"tipo_votacao": tipo_votacao, "cronometro_ordem": cronometro_ordem,
"presentes_ordem_dia": presentes_ordem_dia, }
"num_presentes_ordem_dia": num_presentes_ordem_dia,
"presentes_sessao_plenaria": presentes_sessao_plenaria, materia = get_materia_aberta(pk)
"num_presentes_sessao_plenaria": num_presentes_sessao_plen, if materia:
"votacao_aberta": votacao_aberta, return JsonResponse(get_presentes(pk, response, materia))
"numero_votos_sim": numero_votos_sim, else:
"numero_votos_nao": numero_votos_nao, materia = get_last_materia(pk)
"numero_abstencoes": numero_abstencoes, if materia:
"total_votos": total_votos, if materia.resultado:
"tipo_resultado": tipo_resultado, if materia.tipo_votacao in [1, 3]:
"votos": votos, return JsonResponse(
"cronometro_aparte": cronometro_aparte, get_votos(get_presentes(
"cronometro_discurso": cronometro_discurso, pk, response, materia), materia))
"cronometro_ordem": cronometro_ordem, elif materia.tipo_votacao == 2:
"status_painel": status_painel, return JsonResponse(
} get_votos_nominal(get_presentes(
pk, response, materia), materia))
return JsonResponse(response) else:
return JsonResponse(get_presentes(pk, response, materia))
else:
return response_null_materia(response)

Loading…
Cancel
Save