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
import datetime
from django.core.exceptions import ObjectDoesNotExist
from django.http import HttpResponse, JsonResponse
from django.shortcuts import render
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)
TipoResultadoVotacao, VotoParlamentar)
from .models import Cronometro
cronometro_painel_crud = build_crud(
Cronometro, '', [
@ -46,7 +44,7 @@ def controlador_painel(request):
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)
@ -75,54 +73,40 @@ def get_cronometro_status(request, name):
return cronometro
def get_dados_painel(request, pk):
# Sessão Plenária
sessao_plenaria_id = pk
sessao_plenaria = SessaoPlenaria.objects.get(id=sessao_plenaria_id)
status_painel = "FECHADO"
def get_materia_aberta(pk):
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:
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)
return None
# # Pra recuperar o partido do parlamentar
# # tem que fazer OUTRA query, deve ter uma
# # forma de fazer isso na base do join de data models.
def get_presentes(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
parlamentar_partido[
f.parlamentar.nome_parlamentar] = f.partido.sigla
# Presença Sessão Plenária
sessao_plenaria_presenca = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=sessao_plenaria_id)
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)
# Presença Ordem do dia
presenca_ordem_dia = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=sessao_plenaria_id)
sessao_plenaria_id=pk)
presentes_ordem_dia = []
for p in presenca_ordem_dia:
nome_parlamentar = p.parlamentar.nome_parlamentar
@ -133,76 +117,115 @@ def get_dados_painel(request, pk):
})
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:
votacao_aberta = False
materia_titulo = ""
materia_legislativa_texto = ""
materia_observacao = ""
tipo_votacao = ""
def get_votos(response, materia):
registro = RegistroVotacao.objects.get(
ordem=materia, materia=materia.materia)
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
})
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_aparte = get_cronometro_status(request, 'aparte')
cronometro_ordem = get_cronometro_status(request, 'ordem')
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,
"materia_titulo": materia_titulo,
"materia_legislativa_texto": materia_legislativa_texto,
"materia_observacao": materia_observacao,
"tipo_votacao": tipo_votacao,
"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,
"votacao_aberta": votacao_aberta,
"numero_votos_sim": numero_votos_sim,
"numero_votos_nao": numero_votos_nao,
"numero_abstencoes": numero_abstencoes,
"total_votos": total_votos,
"tipo_resultado": tipo_resultado,
"votos": votos,
"cronometro_aparte": cronometro_aparte,
"cronometro_discurso": cronometro_discurso,
"cronometro_ordem": cronometro_ordem,
"status_painel": status_painel,
}
return JsonResponse(response)
response = {
'sessao_plenaria': str(sessao),
'sessao_plenaria_data': sessao.data_inicio.strftime('%d/%m/%Y'),
'sessao_plenaria_hora_inicio': sessao.hora_inicio,
"cronometro_aparte": cronometro_aparte,
"cronometro_discurso": cronometro_discurso,
"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))
else:
return response_null_materia(response)

Loading…
Cancel
Save