diff --git a/sapl/painel/views.py b/sapl/painel/views.py index e253d270f..4c3a85baf 100644 --- a/sapl/painel/views.py +++ b/sapl/painel/views.py @@ -531,6 +531,13 @@ def get_votos(response, materia): votos_parlamentares = VotoParlamentar.objects.filter( expediente_id=materia.id).order_by( 'parlamentar__nome_parlamentar') + + if PainelConfig.attr('mostrar_votos_antecedencia'): + response['numero_votos_sim'] = votos_parlamentares.filter(voto="Sim").count() + response['numero_votos_nao'] = votos_parlamentares.filter(voto="Não").count() + response['numero_abstencoes'] = votos_parlamentares.filter(voto="Abstenção").count() + response['total_votos'] = response['numero_votos_sim'] + response['numero_votos_nao'] + \ + response['numero_abstencoes'] for i, p in enumerate(response['presentes']): try: diff --git a/sapl/sessao/urls.py b/sapl/sessao/urls.py index 19e5a37e7..328c1da5e 100644 --- a/sapl/sessao/urls.py +++ b/sapl/sessao/urls.py @@ -34,7 +34,8 @@ from sapl.sessao.views import (AdicionarVariasMateriasExpediente, VotacaoEmBlocoOrdemDia, VotacaoEmBlocoExpediente, VotacaoEmBlocoSimbolicaView, VotacaoEmBlocoNominalView, resumo_ordenacao, - recuperar_nome_tipo_sessao) + recuperar_nome_tipo_sessao, + voto_nominal_parlamentar) from .apps import AppConfig @@ -188,4 +189,9 @@ urlpatterns = [ url(r'^sessao/mudar-ordem-materia-sessao/', mudar_ordem_materia_sessao, name='mudar_ordem_materia_sessao'), + + url(r'^sessao/votacao-nominal-parlamentar/', + voto_nominal_parlamentar, + name='votacao_nominal_parlamentar' + ), ] diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 3cbddee5a..e6f112aab 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -4327,3 +4327,61 @@ class RetiradaPautaCrud(MasterDetailCrud): class DeleteView(MasterDetailCrud.DeleteView): pass + + +def voto_nominal_parlamentar(request): + parlamentar_id = request.GET.get('parlamentar_id') + parlamentar_voto = request.GET.get('parlamentar_voto') + id_ordem_expediente = request.GET.get('id_ordem_expediente') + is_ordemdia = request.GET.get('is_ordemdia') == 'true' + + if is_ordemdia: + # Apaga o voto (opção selecionada: Não Votou) + if parlamentar_voto == "Não ": + VotoParlamentar.objects.filter(ordem_id=id_ordem_expediente, parlamentar_id=parlamentar_id).delete() + else: + # Salva o voto + parlamentar_voto = "Abstenção" if parlamentar_voto == 'Abst' else parlamentar_voto[:3] + try: + voto = VotoParlamentar.objects.get( + parlamentar_id=parlamentar_id, + ordem_id=id_ordem_expediente) + except ObjectDoesNotExist: + voto = VotoParlamentar.objects.create( + parlamentar_id=parlamentar_id, + voto=parlamentar_voto, + user=request.user, + ip=get_client_ip(request), + ordem_id=id_ordem_expediente) + else: + voto.voto = parlamentar_voto + voto.ip = get_client_ip(request) + voto.user = request.user + voto.save() + + # expediente + else: + # Apaga o voto (opção selecionada: Não Votou) + if parlamentar_voto == "Não ": + VotoParlamentar.objects.filter(expediente_id=id_ordem_expediente, parlamentar_id=parlamentar_id).delete() + # Salva o voto + else: + parlamentar_voto = parlamentar_voto[:3] + try: + voto = VotoParlamentar.objects.get( + parlamentar_id=parlamentar_id, + expediente_id=id_ordem_expediente) + except ObjectDoesNotExist: + voto = VotoParlamentar.objects.create( + parlamentar_id=parlamentar_id, + voto=parlamentar_voto, + user=request.user, + ip=get_client_ip(request), + expediente_id=id_ordem_expediente) + else: + voto.voto = parlamentar_voto + voto.ip = get_client_ip(request) + voto.user = request.user + voto.save() + + return JsonResponse({}) \ No newline at end of file diff --git a/sapl/templates/painel/index.html b/sapl/templates/painel/index.html index 0587042d5..3de48acd2 100644 --- a/sapl/templates/painel/index.html +++ b/sapl/templates/painel/index.html @@ -252,7 +252,7 @@ // Parlamentar já votou? if (parlamentar.voto){ // Se a votação já foi finalizada, mostra todos os votos - if (data['tipo_resultado']){ + if (data['tipo_resultado'] && data['tipo_resultado'] != "Ainda não foi votada."){ $('#parlamentares_list').append('' + parlamentar.nome + ' ' + @@ -314,7 +314,7 @@ votacao.append(''); } - if (data['materia_legislativa_texto'] && data["status_painel"] == true){ + if (data['materia_legislativa_texto'] && data["status_painel"]){ var votacao = $("#votacao") diff --git a/sapl/templates/painel/voto_nominal.html b/sapl/templates/painel/voto_nominal.html index ecd915c25..c05844156 100644 --- a/sapl/templates/painel/voto_nominal.html +++ b/sapl/templates/painel/voto_nominal.html @@ -92,11 +92,11 @@ {% csrf_token %}
-
+
  -
+
  -
+

diff --git a/sapl/templates/sessao/votacao/nominal.html b/sapl/templates/sessao/votacao/nominal.html index 470b02228..840d4e00c 100644 --- a/sapl/templates/sessao/votacao/nominal.html +++ b/sapl/templates/sessao/votacao/nominal.html @@ -21,49 +21,48 @@ {% else %}
- Votos -
- {% for parlamentar in parlamentares %} -
{{parlamentar.0.nome_parlamentar}}
-
- {% if parlamentar.1 %} {% endif %} - -
- {% endfor %} -
- - Situação da Votação: - -
- -
- -
-
- {{ form.resultado_votacao|as_crispy_field }} -
-
+
+ {% for parlamentar in parlamentares %} +
{{parlamentar.0.nome_parlamentar}}
+
+ {% if parlamentar.1 %} {% endif %} + +
+ {% endfor %} +
+ + Situação da Votação: + +
+ + + +
+
+ {{ form.resultado_votacao|as_crispy_field }} +
+
-
-
-
- Observações
- -
-
+
+
+
+ Observações
+ +
+


- - - {% endif %} + {% endif %} + + {% endblock detail_content %} {% block extra_js %} @@ -102,15 +101,39 @@ $("#soma_votos").append("
Abstenções: " + votos_abstencao + "
"); $("#soma_votos").append("
Ainda não votaram: " + nao_votou + "
"); var t = setTimeout(function(){ - conta_votos() - }, 500); + conta_votos(); + }, 500); } - conta_votos(); - window.onload = conta_votos(); + function salva_votos(event){ + $(event).each(function() { + let value = $(this).val(); + let parlamentar_id = value.split(":")[1]; + let parlamentar_voto = value.substring(0,4); + let url = window.location.pathname; + let tmp = url.split('/'); + let id_ordem_expediente = tmp[5]; + let is_ordemdia = (tmp[3].split('mat')[1] == 'ordemdia'); + $.get("{% url 'sapl.sessao:votacao_nominal_parlamentar' %}", + { + parlamentar_id: parlamentar_id, + parlamentar_voto: parlamentar_voto, + id_ordem_expediente : id_ordem_expediente, + is_ordemdia: is_ordemdia + }, function(data, status) { + if(status == "success") + console.log("Voto salvo."); + }); + + }); + } $(window).on('beforeunload', function () { - $("input[type=submit], input[type=button]").prop("disabled", "disabled"); + $("input[type=submit], input[type=button]").prop("disabled", "disabled"); + }); + + $(document).ready(function(){ + conta_votos(); });