Browse Source

Fix #1556 - Salvar um registro prévio com os Votos dos Parlamentares (#2883)

* Fix #1556

* Salvar registro de voto do parlamentar na votação pelo operador
pull/2894/head
Cesar Augusto de Carvalho 6 years ago
committed by Edward
parent
commit
c0d89812f0
  1. 7
      sapl/painel/views.py
  2. 8
      sapl/sessao/urls.py
  3. 58
      sapl/sessao/views.py
  4. 4
      sapl/templates/painel/index.html
  5. 6
      sapl/templates/painel/voto_nominal.html
  6. 107
      sapl/templates/sessao/votacao/nominal.html

7
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:

8
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'
),
]

58
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({})

4
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('<tr><td style="padding-right:20px; color:white" >' +
parlamentar.nome +
'</td> <td style="padding-right:20px; color:white">' +
@ -314,7 +314,7 @@
votacao.append('</span>');
}
if (data['materia_legislativa_texto'] && data["status_painel"] == true){
if (data['materia_legislativa_texto'] && data["status_painel"]){
var votacao = $("#votacao")

6
sapl/templates/painel/voto_nominal.html

@ -92,11 +92,11 @@
{% csrf_token %}
<div class="row" align="center">
<div class="col-md-12" id="votos">
<div id="votosim"><input type="submit" class="btn btn-lg btn-success" id="voto" name="voto" type="submit" value="Sim" /></div>
<div id="votosim"><input type="submit" class="btn btn-lg btn-success" name="voto" type="submit" value="Sim" /></div>
&nbsp;
<div id="votonao"><input type="submit" class="btn btn-lg btn-danger" id="voto" name="voto" type="submit" value="Não"/></div>
<div id="votonao"><input type="submit" class="btn btn-lg btn-danger" name="voto" type="submit" value="Não"/></div>
&nbsp;
<div id="votoabstencao"><input type="submit" class="btn btn-lg btn-secondary" id="voto" name="voto" type="submit" value="Abstenção"/></div>
<div id="votoabstencao"><input type="submit" class="btn btn-lg btn-secondary" name="voto" type="submit" value="Abstenção"/></div>
</div>
</div>
</br>

107
sapl/templates/sessao/votacao/nominal.html

@ -21,49 +21,48 @@
{% else %}
<fieldset class="form-group">
<legend>Votos</legend>
<div class="row">
{% for parlamentar in parlamentares %}
<div class="col-md-4" id="styleparlamentar">{{parlamentar.0.nome_parlamentar}}</div>
<div class="col-md-5">
{% if parlamentar.1 %} <input type="hidden" name="voto_parlamentar" value="{{parlamentar.1}}:{{parlamentar.0.id}}" /> {% endif %}
<select id="voto_parlamentar" name="voto_parlamentar" class="form-control" {% if parlamentar.1 %} disabled {% endif %}>
<option value="Não Votou:{{parlamentar.0.id}}">Não Votou</option>
<option value="Sim:{{parlamentar.0.id}}" {% if parlamentar.1 == 'Sim' %} selected {% endif %}>Sim</option>
<option value="Não:{{parlamentar.0.id}}" {% if parlamentar.1 == 'Não' %} selected {% endif %}>Não</option>
<option value="Abstenção:{{parlamentar.0.id}}" {% if parlamentar.1 == 'Abstenção' %} selected {% endif %}>Abstenção</option>
</select>
</div>
{% endfor %}
</div>
<legend>Situação da Votação:</legend>
<div id="soma_votos"></div>
</fieldset>
<div class="row">
<div class="col-md-12">
{{ form.resultado_votacao|as_crispy_field }}
</div>
</div>
<div class="row">
{% for parlamentar in parlamentares %}
<div class="col-md-4" id="styleparlamentar">{{parlamentar.0.nome_parlamentar}}</div>
<div class="col-md-5">
{% if parlamentar.1 %} <input type="hidden" name="voto_parlamentar" value="{{parlamentar.1}}:{{parlamentar.0.id}}" /> {% endif %}
<select onchange="salva_votos(this)" id="voto_parlamentar" name="voto_parlamentar" class="form-control" {% if parlamentar.1 %} disabled {% endif %}>
<option value="Não Votou:{{parlamentar.0.id}}">Não Votou</option>
<option value="Sim:{{parlamentar.0.id}}" {% if parlamentar.1 == 'Sim' %} selected {% endif %}>Sim</option>
<option value="Não:{{parlamentar.0.id}}" {% if parlamentar.1 == 'Não' %} selected {% endif %}>Não</option>
<option value="Abstenção:{{parlamentar.0.id}}" {% if parlamentar.1 == 'Abstenção' %} selected {% endif %}>Abstenção</option>
</select>
</div>
{% endfor %}
</div>
<legend>Situação da Votação:</legend>
<div id="soma_votos"></div>
</fieldset>
<div class="row">
<div class="col-md-12">
{{ form.resultado_votacao|as_crispy_field }}
</div>
</div>
<br />
<div class="row">
<div class="col-md-12">
Observações<br/>
<textarea id="observacao" name="observacao" style="width:100%;" rows="7"></textarea>
</div>
</div>
<br />
<div class="row">
<div class="col-md-12">
Observações<br/>
<textarea id="observacao" name="observacao" style="width:100%;" rows="7"></textarea>
</div>
</div>
<br /><br />
<input type="submit" id="salvar-votacao" name="salvar-votacao" value="Fechar Votação" class="btn btn-primary" />
<input type="submit" id="cancelar-votacao" name="cancelar-votacao" value="Cancelar Votação" class="btn btn-warning" />
</fieldset>
</form>
{% endif %}
{% endif %}
</fieldset>
</form>
{% endblock detail_content %}
{% block extra_js %}
@ -102,15 +101,39 @@
$("#soma_votos").append("<div class='row'><div class='col-md-12'>Abstenções: " + votos_abstencao + "</div></div>");
$("#soma_votos").append("<div class='row'><div class='col-md-12'>Ainda não votaram: " + nao_votou + "</div></div>");
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();
});
</script>

Loading…
Cancel
Save