Browse Source

Conserta a logica de painel

pull/760/head
Eduardo Calil 9 years ago
parent
commit
0379779b6a
  1. 99
      sapl/painel/views.py
  2. 13
      sapl/sessao/views.py

99
sapl/painel/views.py

@ -86,9 +86,10 @@ def get_materia_aberta(pk):
sessao_plenaria_id=pk, votacao_aberta=True).last() sessao_plenaria_id=pk, votacao_aberta=True).last()
def get_last_materia(pk): def get_last_materia_ordem_dia_votada(pk):
return OrdemDia.objects.filter( return OrdemDia.objects.filter(
sessao_plenaria_id=pk).last() sessao_plenaria_id=pk,
resultado__isnull=False).exclude(resultado__exact='').last()
def get_presentes(pk, response, materia): def get_presentes(pk, response, materia):
@ -159,9 +160,10 @@ def get_materia_expediente_aberta(pk):
sessao_plenaria_id=pk, votacao_aberta=True).last() sessao_plenaria_id=pk, votacao_aberta=True).last()
def get_last_materia_expediente(pk): def get_last_materia_expediente_votado(pk):
return ExpedienteMateria.objects.filter( return ExpedienteMateria.objects.filter(
sessao_plenaria_id=pk).last() sessao_plenaria_id=pk,
resultado__isnull=False).exclude(resultado__exact='').last()
def get_presentes_expediente(pk, response, materia): def get_presentes_expediente(pk, response, materia):
@ -229,13 +231,11 @@ def get_presentes_expediente(pk, response, materia):
def response_nenhuma_materia(response): def response_nenhuma_materia(response):
response.update({ response.update({
'status_painel': 'FECHADO', 'status_painel': 'FECHADO',
'msg_painel': str(_('Nenhuma matéria disponivel para votação.')) 'msg_painel': str(_('Nenhuma matéria disponivel para votação.'))})
})
return JsonResponse(response) return JsonResponse(response)
def get_votos(response, materia): def get_votos(response, materia):
if materia.tipo_votacao == 1: if materia.tipo_votacao == 1:
tipo_votacao = 'Simbólica' tipo_votacao = 'Simbólica'
elif materia.tipo_votacao == 2: elif materia.tipo_votacao == 2:
@ -243,8 +243,12 @@ def get_votos(response, materia):
elif materia.tipo_votacao == 3: elif materia.tipo_votacao == 3:
tipo_votacao = 'Secreta' tipo_votacao = 'Secreta'
registro = RegistroVotacao.objects.filter( if type(materia) == OrdemDia:
ordem=materia, materia=materia.materia).last() registro = RegistroVotacao.objects.filter(
ordem=materia, materia=materia.materia).last()
else:
registro = RegistroVotacao.objects.filter(
expediente=materia, materia=materia.materia).last()
if registro: if registro:
total = (registro.numero_votos_sim + total = (registro.numero_votos_sim +
@ -363,37 +367,48 @@ def get_dados_painel(request, pk):
elif expediente: elif expediente:
return JsonResponse(get_presentes_expediente(pk, response, expediente)) return JsonResponse(get_presentes_expediente(pk, response, expediente))
ultima_ordem = get_last_materia(pk) ultima_ordem_votada = get_last_materia_ordem_dia_votada(pk)
ultimo_expediente_votado = get_last_materia_expediente_votado(pk)
if ultima_ordem:
if ultima_ordem.resultado: # Caso não tenha nenhuma votação aberta
if ultima_ordem.tipo_votacao in [1, 3]: if ultima_ordem_votada or ultimo_expediente_votado:
return JsonResponse(
get_votos(get_presentes( # Se alguma ordem E algum expediente já tiver sido votado...
pk, response, ultima_ordem), ultima_ordem)) if ultima_ordem_votada and ultimo_expediente_votado:
elif ultima_ordem.tipo_votacao == 2: # Verifica se o último resultado é um uma ordem do dia
return JsonResponse( if ultima_ordem_votada >= ultimo_expediente_votado:
get_votos_nominal(get_presentes( if ultima_ordem_votada.tipo_votacao in [1, 3]:
pk, response, ultima_ordem), ultima_ordem)) return JsonResponse(
else: get_votos(get_presentes(
return JsonResponse(get_presentes(pk, response, ultima_ordem)) pk, response, ultima_ordem_votada),
ultima_ordem_votada))
ultimo_expediente = get_last_materia_expediente(pk) elif ultima_ordem_votada.tipo_votacao == 2:
return JsonResponse(
if ultimo_expediente: get_votos_nominal(get_presentes(
if ultimo_expediente.resultado: pk, response, ultima_ordem_votada),
if ultimo_expediente.tipo_votacao in [1, 3]: ultima_ordem_votada))
return JsonResponse( # Caso não seja, verifica se é um expediente
get_votos(get_presentes( else:
pk, response, ultimo_expediente), if ultimo_expediente_votado.tipo_votacao in [1, 3]:
ultimo_expediente)) return JsonResponse(
elif ultimo_expediente.tipo_votacao == 2: get_votos(get_presentes(
return JsonResponse( pk, response, ultimo_expediente_votado),
get_votos_nominal(get_presentes( ultimo_expediente_votado))
pk, response, ultimo_expediente), elif ultimo_expediente_votado.tipo_votacao == 2:
ultimo_expediente)) return JsonResponse(
else: get_votos_nominal(get_presentes(
pk, response,
ultimo_expediente_votado),
ultimo_expediente_votado))
# Caso somente um deles tenha resultado, prioriza a Ordem do Dia
if ultima_ordem_votada:
return JsonResponse(get_presentes(
pk, response, ultima_ordem_votada))
# Caso a Ordem do dia não tenha resultado, mostra o último expediente
if ultimo_expediente_votado:
return JsonResponse(get_presentes(pk, response, return JsonResponse(get_presentes(pk, response,
ultimo_expediente)) ultimo_expediente_votado))
else:
return response_nenhuma_materia(response) # Retorna que não há nenhuma matéria já votada ou aberta
return response_nenhuma_materia(response)

13
sapl/sessao/views.py

@ -1867,7 +1867,7 @@ class VotacaoExpedienteEditView(SessaoPermissionMixin):
materia_id=materia_id, materia_id=materia_id,
expediente_id=expediente_id) expediente_id=expediente_id)
except MultipleObjectsReturned: except MultipleObjectsReturned:
votacao = RegistroVotacao.objects.get( votacao = RegistroVotacao.objects.filter(
materia_id=materia_id, materia_id=materia_id,
expediente_id=expediente_id).last() expediente_id=expediente_id).last()
votacao_existente = {'observacao': sub( votacao_existente = {'observacao': sub(
@ -1888,9 +1888,14 @@ class VotacaoExpedienteEditView(SessaoPermissionMixin):
expediente_id = kwargs['mid'] expediente_id = kwargs['mid']
if(int(request.POST['anular_votacao']) == 1): if(int(request.POST['anular_votacao']) == 1):
RegistroVotacao.objects.get( try:
materia_id=materia_id, RegistroVotacao.objects.get(
expediente_id=expediente_id).delete() materia_id=materia_id,
expediente_id=expediente_id).delete()
except MultipleObjectsReturned:
RegistroVotacao.objects.filter(
materia_id=materia_id,
expediente_id=expediente_id).last().delete()
expediente = ExpedienteMateria.objects.get( expediente = ExpedienteMateria.objects.get(
sessao_plenaria_id=self.object.id, sessao_plenaria_id=self.object.id,

Loading…
Cancel
Save