Browse Source

Adiciona matérias apenas lidas no painel

pull/2953/head
Cesar Carvalho 6 years ago
parent
commit
5dea6ed9e6
  1. 82
      sapl/painel/views.py
  2. 30
      sapl/sessao/migrations/0047_auto_20190829_1253.py
  3. 8
      sapl/sessao/models.py
  4. 25
      sapl/templates/painel/index.html

82
sapl/painel/views.py

@ -21,7 +21,7 @@ from sapl.parlamentares.models import Legislatura, Parlamentar, Votante
from sapl.sessao.models import (ExpedienteMateria, OradorExpediente, OrdemDia, from sapl.sessao.models import (ExpedienteMateria, OradorExpediente, OrdemDia,
PresencaOrdemDia, RegistroVotacao, PresencaOrdemDia, RegistroVotacao,
SessaoPlenaria, SessaoPlenariaPresenca, SessaoPlenaria, SessaoPlenariaPresenca,
VotoParlamentar) VotoParlamentar, RegistroLeitura)
from sapl.utils import filiacao_data, get_client_ip, sort_lista_chave from sapl.utils import filiacao_data, get_client_ip, sort_lista_chave
from .models import Cronometro from .models import Cronometro
@ -408,6 +408,8 @@ def get_presentes(pk, response, materia):
tipo_votacao = 'Nominal' tipo_votacao = 'Nominal'
elif materia.tipo_votacao == 3: elif materia.tipo_votacao == 3:
tipo_votacao = 'Secreta' tipo_votacao = 'Secreta'
elif materia.tipo_votacao == 4:
tipo_votacao = 'Leitura'
response.update({ response.update({
'tipo_resultado': materia.resultado, 'tipo_resultado': materia.resultado,
@ -442,15 +444,27 @@ def response_nenhuma_materia(response):
def get_votos(response, materia): def get_votos(response, materia):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
if type(materia) == OrdemDia: if type(materia) == OrdemDia:
registro = RegistroVotacao.objects.filter( if materia.tipo_votacao != 4:
ordem=materia, materia=materia.materia).last() registro = RegistroVotacao.objects.filter(
ordem=materia, materia=materia.materia).order_by('data_hora').last()
leitura = None
else:
leitura = RegistroLeitura.objects.filter(
ordem=materia, materia=materia.materia).order_by('data_hora').last()
registro = None
tipo = 'ordem' tipo = 'ordem'
elif type(materia) == ExpedienteMateria: elif type(materia) == ExpedienteMateria:
registro = RegistroVotacao.objects.filter( if materia.tipo_votacao != 4:
expediente=materia, materia=materia.materia).last() registro = RegistroVotacao.objects.filter(
expediente=materia, materia=materia.materia).order_by('data_hora').last()
leitura = None
else:
leitura = RegistroLeitura.objects.filter(
expediente=materia, materia=materia.materia).order_by('data_hora').last()
registro = None
tipo = 'expediente' tipo = 'expediente'
if not registro: if not registro and not leitura:
response.update({ response.update({
'numero_votos_sim': 0, 'numero_votos_sim': 0,
'numero_votos_nao': 0, 'numero_votos_nao': 0,
@ -479,7 +493,15 @@ def get_votos(response, materia):
logger.error("Votos do parlamentar (id={}) não encontrados. Retornado vazio." logger.error("Votos do parlamentar (id={}) não encontrados. Retornado vazio."
.format(p['parlamentar_id'])) .format(p['parlamentar_id']))
response['presentes'][i]['voto'] = '' response['presentes'][i]['voto'] = ''
elif leitura:
response.update({
'numero_votos_sim': 0,
'numero_votos_nao': 0,
'numero_abstencoes': 0,
'registro': True,
'total_votos': 0,
'tipo_resultado': 'Matéria lida.',
})
else: else:
total = (registro.numero_votos_sim + total = (registro.numero_votos_sim +
registro.numero_votos_nao + registro.numero_votos_nao +
@ -556,33 +578,33 @@ def get_dados_painel(request, pk):
# Caso não tenha nenhuma aberta, # Caso não tenha nenhuma aberta,
# a matéria a ser mostrada no Painel deve ser a última votada # a matéria a ser mostrada no Painel deve ser a última votada
last_ordem_voto = RegistroVotacao.objects.filter( last_ordem_voto = RegistroVotacao.objects.filter(
ordem__sessao_plenaria=sessao).last() ordem__sessao_plenaria=sessao).order_by('data_hora').last()
last_expediente_voto = RegistroVotacao.objects.filter( last_expediente_voto = RegistroVotacao.objects.filter(
expediente__sessao_plenaria=sessao).last() expediente__sessao_plenaria=sessao).order_by('data_hora').last()
if last_ordem_voto:
ultima_ordem_votada = last_ordem_voto.ordem
if last_expediente_voto:
ultimo_expediente_votado = last_expediente_voto.expediente
if last_ordem_voto or last_expediente_voto: last_ordem_leitura = RegistroLeitura.objects.filter(
# Se alguma ordem E algum expediente já tiver sido votado... ordem__sessao_plenaria=sessao).order_by('data_hora').last()
if last_ordem_voto and last_expediente_voto: last_expediente_leitura = RegistroLeitura.objects.filter(
materia = ultima_ordem_votada\ expediente__sessao_plenaria=sessao).order_by('data_hora').last()
if last_ordem_voto.pk >= last_expediente_voto.pk\
else ultimo_expediente_votado
# Caso somente um deles tenha resultado, prioriza a Ordem do Dia
elif last_ordem_voto:
materia = ultima_ordem_votada
# Caso a Ordem do dia não tenha resultado, mostra o último expediente
elif last_expediente_voto:
materia = ultimo_expediente_votado
# Obtém última matéria que foi votada, através do timestamp mais recente
if last_ordem_voto:
ordem_expediente = last_ordem_voto.ordem
ultimo_timestamp = last_ordem_voto.data_hora
if last_expediente_voto and last_expediente_voto.data_hora > ultimo_timestamp:
ordem_expediente = last_expediente_voto.expediente
ultimo_timestamp = last_expediente_voto.data_hora
if last_ordem_leitura and last_ordem_leitura.data_hora > ultimo_timestamp:
ordem_expediente = last_ordem_leitura.ordem
ultimo_timestamp = last_ordem_leitura.data_hora
if last_expediente_leitura and last_expediente_leitura.data_hora > ultimo_timestamp:
ordem_expediente = last_expediente_leitura.expediente
ultimo_timestamp = last_expediente_leitura.data_hora
if ordem_expediente:
return JsonResponse(get_votos( return JsonResponse(get_votos(
get_presentes(pk, response, materia), get_presentes(pk, response, ordem_expediente),
materia)) ordem_expediente))
# Retorna que não há nenhuma matéria já votada ou aberta # Retorna que não há nenhuma matéria já votada ou aberta
return response_nenhuma_materia(get_presentes(pk, response, None)) return response_nenhuma_materia(get_presentes(pk, response, None))

30
sapl/sessao/migrations/0047_auto_20190829_1253.py

@ -0,0 +1,30 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.20 on 2019-08-29 15:53
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('sessao', '0046_auto_20190827_1228'),
]
operations = [
migrations.AlterField(
model_name='registroleitura',
name='data_hora',
field=models.DateTimeField(auto_now=True, null=True, verbose_name='Data/Hora'),
),
migrations.AlterField(
model_name='registrovotacao',
name='data_hora',
field=models.DateTimeField(auto_now=True, null=True, verbose_name='Data/Hora'),
),
migrations.AlterField(
model_name='votoparlamentar',
name='data_hora',
field=models.DateTimeField(auto_now=True, null=True, verbose_name='Data/Hora'),
),
]

8
sapl/sessao/models.py

@ -544,7 +544,7 @@ class RegistroVotacao(models.Model):
default='') default='')
data_hora = models.DateTimeField( data_hora = models.DateTimeField(
verbose_name=_('Data/Hora'), verbose_name=_('Data/Hora'),
auto_now_add=True, auto_now=True,
blank=True, blank=True,
null=True) null=True)
@ -595,7 +595,7 @@ class VotoParlamentar(models.Model): # RegistroVotacaoParlamentar
default='') default='')
data_hora = models.DateTimeField( data_hora = models.DateTimeField(
verbose_name=_('Data/Hora'), verbose_name=_('Data/Hora'),
auto_now_add=True, auto_now=True,
blank=True, blank=True,
null=True) null=True)
@ -886,7 +886,7 @@ class RegistroLeitura(models.Model):
default='') default='')
data_hora = models.DateTimeField( data_hora = models.DateTimeField(
verbose_name=_('Data/Hora'), verbose_name=_('Data/Hora'),
auto_now_add=True, auto_now=True,
blank=True, blank=True,
null=True) null=True)
@ -906,6 +906,6 @@ class RegistroLeitura(models.Model):
# forem reestruturados e os campos ordem e expediente forem unificados # forem reestruturados e os campos ordem e expediente forem unificados
if not xor(bool(self.ordem), bool(self.expediente)): if not xor(bool(self.ordem), bool(self.expediente)):
raise ValidationError( raise ValidationError(
'RegistroVotacao deve ter exatamente um dos campos ' 'RegistroLeitura deve ter exatamente um dos campos '
'ordem ou expediente preenchido. Ambos estão preenchidos: ' 'ordem ou expediente preenchido. Ambos estão preenchidos: '
'{}, {}'. format(self.ordem, self.expediente)) '{}, {}'. format(self.ordem, self.expediente))

25
sapl/templates/painel/index.html

@ -421,23 +421,40 @@
else{ else{
$("#observacao_materia").text(''); $("#observacao_materia").text('');
} }
if (data['tipo_resultado'] && data['status_painel'] == true){ if (data['tipo_resultado'] && data['status_painel'] == true){
if(data['tipo_votacao'] != 'Leitura'){
$("#resultado_votacao").css("color", "#45919D");
$("#mat_em_votacao").text("Matéria em Votação");
$("#resultado_votacao_div").show();
}
else{
$("#resultado_votacao_div").hide();
$("#mat_em_votacao").text("Matéria em Leitura");
}
console.log(data["tipo_resultado"], data['tipo_votacao']);
$("#resultado_votacao").text(data["tipo_resultado"]); $("#resultado_votacao").text(data["tipo_resultado"]);
$("#resultado_votacao").css("color", "#45919D");
var resultado_votacao_upper = $("#resultado_votacao").text().toUpperCase(); var resultado_votacao_upper = $("#resultado_votacao").text().toUpperCase();
console.log(resultado_votacao_upper, data['tipo_resultado']);
if (resultado_votacao_upper.search("APROV") != -1){ if (resultado_votacao_upper.search("APROV") != -1){
$("#resultado_votacao").css("color", "green"); $("#resultado_votacao").css("color", "green");
$("#mat_em_votacao").text("Matéria Votada"); $("#mat_em_votacao").text("Matéria Votada");
} }
if (resultado_votacao_upper.search("REJEIT") != -1){ else if (resultado_votacao_upper.search("REJEIT") != -1){
$("#resultado_votacao").css("color", "red"); $("#resultado_votacao").css("color", "red");
$("#mat_em_votacao").text("Matéria Votada"); $("#mat_em_votacao").text("Matéria Votada");
} }
else if (resultado_votacao_upper.search("LIDA") != -1){
$("#mat_em_votacao").text("Matéria Lida");
}
} }
else{ else{
$("#resultado_votacao").text(''); $("#resultado_votacao").text('');
$("#mat_em_votacao").text("Matéria em Votação"); if(data['tipo_votacao'] != 'Leitura')
$("#mat_em_votacao").text("Matéria em Votação");
else{
$("#mat_em_votacao").text("Matéria em Leitura");
}
} }
}, },
error: function(err) { error: function(err) {

Loading…
Cancel
Save