Browse Source

votacao nominal em bloco

pull/2416/head
Cesar Carvalho 7 years ago
parent
commit
ed262a9a77
  1. 178
      sapl/sessao/views.py
  2. 3
      sapl/templates/sessao/votacao/votacao_bloco_expediente.html
  3. 128
      sapl/templates/sessao/votacao/votacao_nominal_bloco.html

178
sapl/sessao/views.py

@ -3403,11 +3403,14 @@ class VotacaoEmBlocoNominalView(TemplateView):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def post(self, request, *args, **kwargs): def post(self, request, *args, **kwargs):
username = request.user.username
form = VotacaoNominalForm(request.POST)
if not 'context' in locals(): if not 'context' in locals():
context = {} context = {}
if 'origem' in request.POST: if 'origem' in request.POST:
form = VotacaoNominalForm(request.POST) # form = VotacaoNominalForm(request.POST)
marcadas = request.POST.getlist('marcadas_id_2') marcadas = request.POST.getlist('marcadas_id_2')
@ -3427,26 +3430,144 @@ class VotacaoEmBlocoNominalView(TemplateView):
sessao_plenaria_id=kwargs['pk']) sessao_plenaria_id=kwargs['pk'])
context.update({'expedientes':expedientes}) context.update({'expedientes':expedientes})
total = presentes.count() total = presentes.count()
context.update({'parlamentares':self.get_parlamentares(request)}) context.update({'parlamentares':self.get_parlamentares(),
'total':total})
if 'cancelar-votacao' in request.POST:
if request.POST['origem'] == 'ordem':
for ordem_id in request.POST['ordens']:
ordem = OrdemDia.objects.get(id=ordem_id)
fechar_votacao_materia(ordem)
return HttpResponseRedirect(reverse(
'sapl.sessao:ordemdia_list', kwargs={'pk': self.kwargs['pk']}))
else:
for expediente_id in request.POST['expedientes']:
expediente = ExpedienteMateria.objects.get(id=expediente_id)
fechar_votacao_materia(expediente)
return HttpResponseRedirect(reverse(
'sapl.sessao:expedientemateria_list',
kwargs={'pk': self.kwargs['pk']}))
if 'salvar-votacao' in request.POST:
if form.is_valid():
if form.cleaned_data['resultado_votacao'] == None:
form.add_error(None, 'Não é possível finalizar a votação sem '
'nenhum resultado da votação')
return self.form_invalid(form)
#import ipdb; ipdb.set_trace()
qtde_votos = (int(request.POST['votos_sim']) +
int(request.POST['votos_nao']) +
int(request.POST['abstencoes']) +
int(request.POST['nao_votou']))
origem = request.POST['origem2']
# Caso todas as opções sejam 'Não votou', fecha a votação
if int(request.POST['nao_votou']) == qtde_votos:
self.logger.error('user=' + username + '. Não é possível finalizar a votação sem '
'nenhum voto')
form.add_error(None, 'Não é possível finalizar a votação sem '
'nenhum voto')
return self.form_invalid(form)
if origem=='ordem':
for ordem_id in request.POST.getlist('ordens'):
ordem = OrdemDia.objects.get(id=ordem_id)
# Remove todas as votação desta matéria, caso existam
RegistroVotacao.objects.filter(ordem_id=ordem_id).delete()
votacao = RegistroVotacao()
votacao.numero_votos_sim = int(request.POST['votos_sim'])
votacao.numero_votos_nao = int(request.POST['votos_nao'])
votacao.numero_abstencoes = int(request.POST['abstencoes'])
votacao.observacao = request.POST['observacao']
votacao.materia = ordem.materia
votacao.ordem = ordem
votacao.tipo_resultado_votacao = form.cleaned_data['resultado_votacao']
votacao.save()
for votos in request.POST.getlist('voto_parlamentar'):
v = votos.split(':')
voto = v[0]
parlamentar_id = v[1]
voto_parlamentar = VotoParlamentar.objects.get_or_create(
parlamentar_id=parlamentar_id,
ordem_id=ordem_id)[0]
voto_parlamentar.voto = voto
voto_parlamentar.parlamentar_id = parlamentar_id
voto_parlamentar.votacao_id = votacao.id
voto_parlamentar.save()
ordem.resultado = form.cleaned_data['resultado_votacao'].nome
ordem.votacao_aberta = False
ordem.save()
VotoParlamentar.objects.filter(
ordem_id=ordem_id,
votacao__isnull=True).delete()
else:
for expediente_id in request.POST['expedientes']:
expediente = ExpedienteMateria.objects.get(id=expediente_id)
RegistroVotacao.objects.filter(
expediente_id=expediente_id).delete()
votacao = RegistroVotacao()
votacao.numero_votos_sim = int(request.POST['votos_sim'])
votacao.numero_votos_nao = int(request.POST['votos_nao'])
votacao.numero_abstencoes = int(request.POST['abstencoes'])
votacao.observacao = request.POST['observacao']
votacao.materia = expediente.materia
votacao.expediente = expediente
votacao.tipo_resultado_votacao = form.cleaned_data['resultado_votacao']
votacao.save()
# Salva os votos de cada parlamentar
for votos in request.POST.getlist('voto_parlamentar'):
v = votos.split(':')
voto = v[0]
parlamentar_id = v[1]
voto_parlamentar = VotoParlamentar.objects.get_or_create(
parlamentar_id=parlamentar_id,
expediente_id=expediente_id)[0]
voto_parlamentar.voto = voto
voto_parlamentar.parlamentar_id = parlamentar_id
voto_parlamentar.votacao_id = votacao.id
voto_parlamentar.save()
expediente.resultado = form.cleaned_data['resultado_votacao'].nome
expediente.votacao_aberta = False
expediente.save()
VotoParlamentar.objects.filter(
expediente_id=expediente_id,
votacao__isnull=True).delete()
return HttpResponseRedirect(self.get_success_url())
else:
return self.form_invalid(form)
return self.render_to_response(context) return self.render_to_response(context)
def get_parlamentares(self, request): def get_parlamentares(self):
if request.POST['origem']=='ordem': if self.request.POST['origem']=='ordem':
presencas = PresencaOrdemDia.objects.filter( presencas = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.kwargs['pk']) sessao_plenaria_id=self.kwargs['pk'])
ordens_id = request.POST.getlist('marcadas_id_2') ordens_id = self.request.POST.getlist('marcadas_id_2')
for oid in ordens_id: voto_parlamentar = VotoParlamentar.objects.filter(
voto_parlamentar = VotoParlamentar.objects.filter( ordem=ordens_id[0])
ordem=oid) #TODO
else: else:
presencas = PresencaOrdemDia.objects.filter( presencas = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.kwargs['pk']) sessao_plenaria_id=self.kwargs['pk'])
expedientes_id = request.POST.getlist('marcadas_id_2') expedientes_id = self.request.POST.getlist('marcadas_id_2')
for eid in expedientes_id: voto_parlamentar = VotoParlamentar.objects.filter(
voto_parlamentar = VotoParlamentar.objects.filter( expediente=expedientes_id[0])
expediente=eid) #TODO
presentes = [p.parlamentar for p in presencas] presentes = [p.parlamentar for p in presencas]
@ -3462,3 +3583,36 @@ class VotacaoEmBlocoNominalView(TemplateView):
yield [parlamentar, None] yield [parlamentar, None]
else: else:
yield [parlamentar, voto.voto] yield [parlamentar, voto.voto]
def get_success_url(self):
pk = self.kwargs['pk']
import ipdb; ipdb.set_trace()
if self.request.POST['origem2']=='ordem':
return reverse('sapl.sessao:ordemdia_list',
kwargs={'pk': pk})
else:
return reverse('sapl.sessao:expedientemateria_list',
kwargs={'pk': pk})
def form_invalid(self, form):
errors_tuple = [(form[e].label, form.errors[e])
for e in form.errors if e in form.fields]
error_message = '''<ul>'''
for e in errors_tuple:
error_message += '''<li><b>%s</b>: %s</li>''' % (e[0], e[1][0])
for e in form.non_field_errors():
error_message += '''<li>%s</li>''' % e
error_message += '''</ul>'''
messages.add_message(self.request, messages.ERROR, error_message)
if self.request.POST['origem2'] == 'ordem':
view = 'sapl.sessao:votacaobloconom'
elif self.request.POST['origem2'] == 'expediente':
view = 'sapl.sessao:votacaobloconom'
else:
view = None
return HttpResponseRedirect(reverse(
view,
kwargs={'pk': self.kwargs['pk']}))

3
sapl/templates/sessao/votacao/votacao_bloco_expediente.html

@ -24,7 +24,7 @@
<p></p> <p></p>
<form method="POST" enctype="application/x-www-form-urlencoded" action="{% url 'sapl.sessao:votacaoblocosimb' pk %}"> <form method="POST" enctype="application/x-www-form-urlencoded" id="form" action="{% url 'sapl.sessao:votacaoblocosimb' pk %}">
{% csrf_token %} {% csrf_token %}
<br><br> <br><br>
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">
@ -114,6 +114,7 @@
<script> <script>
$(document).ready(function(){ $(document).ready(function(){
checa_tipo_votacao(); checa_tipo_votacao();
$('#tipo_votacao1').prop('checked', true)
}); });
$(window).on('beforeunload', function () { $(window).on('beforeunload', function () {

128
sapl/templates/sessao/votacao/votacao_nominal_bloco.html

@ -7,76 +7,90 @@
<fieldset> <fieldset>
<legend>Votação Nominal</legend> <legend>Votação Nominal</legend>
{% if ordens %} {% if ordens %}
{% for o in ordens %} {% for o in ordens %}
<div> <input type="hidden" id="ordens" name="ordens" value="{{o.id}}">
Matéria: {{o.materia}} <div>
<br /> Matéria: {{o.materia}}
Ementa: {{o.materia.ementa|safe}} <br />
</div> Ementa: {{o.materia.ementa|safe}}
<br /> </div>
{% endfor %} <br />
{% else %} {% endfor %}
{% for e in expedientes %} {% else %}
<div> {% for e in expedientes %}
Matéria: {{e.materia}} <input type="hidden" id="expedientes" name="expedientes" value="{{e.id}}">
<br /> <div>
Ementa: {{e.materia.ementa|safe}} Matéria: {{e.materia}}
</div> <br />
<br /> Ementa: {{e.materia.ementa|safe}}
{% endfor %} </div>
{% endif %} <br />
{% endfor %}
{% endif %}
{% if total == 0 %} {% if total == 0 %}
<div class="alert alert-info alert-dismissible fade in" role="alert"> <div class="alert alert-info alert-dismissible fade in" role="alert">
<div>Não existe nenhum parlamentar presente para que a votação ocorra.</div> <div>Não existe nenhum parlamentar presente para que a votação ocorra.</div>
</div> </div>
<a href="{% url 'sapl.sessao:sessaoplenaria_detail' object.pk %}" class="btn btn-warning">Voltar</a> <a href="{% url 'sapl.sessao:sessaoplenaria_detail' object.pk %}" class="btn btn-warning">Voltar</a>
{% else %} {% else %}
<fieldset class="form-group">
<fieldset class="form-group">
<legend>Votos</legend> <legend>Votos</legend>
<div class="row"> <div class="row">
{% for parlamentar in parlamentares %} {% for parlamentar in parlamentares %}
<div class="col-md-4" id="styleparlamentar">{{parlamentar.0.nome_parlamentar}}</div> <div class="col-md-4" id="styleparlamentar">{{parlamentar.0.nome_parlamentar}}</div>
<div class="col-md-5"> <div class="col-md-5">
{% if parlamentar.1 %} <input type="hidden" name="voto_parlamentar" value="{{parlamentar.1}}:{{parlamentar.0.id}}" /> {% endif %} {% 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 %}> <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="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="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="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> <option value="Abstenção:{{parlamentar.0.id}}" {% if parlamentar.1 == 'Abstenção' %} selected {% endif %}>Abstenção</option>
</select> </select>
</div> </div>
{% endfor %} {% endfor %}
</div> </div>
<br>
<legend>Situação da Votação:</legend>
<div id="soma_votos">
</div>
<input type="hidden" id="votos_sim" name="votos_sim" value="">
<input type="hidden" id="votos_nao" name="votos_nao" value="">
<input type="hidden" id="abstencoes" name="abstencoes" value="">
<input type="hidden" id="nao_votou" name="nao_votou" value="">
</fieldset>
<div class="row">
<div class="col-md-12">
Resultado da Votação
<select id="resultado_votacao" name="resultado_votacao" class="form-control">
{% for tipo in resultado_votacao %}
<option value="{{tipo.id}}">{{tipo.nome}}</option>
{% endfor %}
</select>
</div>
</div>
<legend>Situação da Votação:</legend> <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>
<div id="soma_votos"></div> <input type="hidden" id="origem2" name="origem2" value="{{origem}}">
<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" />
{% endif %}
</fieldset> </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 /><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> </form>
{% endif %}
{% endblock detail_content %} {% endblock detail_content %}
{% block extra_js %} {% block extra_js %}
@ -108,6 +122,10 @@
}; };
}; };
}); });
$("#votos_sim").attr('value', votos_sim);
$("#votos_nao").attr('value', votos_nao);
$("#abstencoes").attr('value', votos_abstencao);
$("#nao_votou").attr('value', nao_votou);
$("#soma_votos").empty(); $("#soma_votos").empty();
$("#soma_votos").append("<div class='row'><div class='col-md-12'>Sim: " + votos_sim + "</div></div>"); $("#soma_votos").append("<div class='row'><div class='col-md-12'>Sim: " + votos_sim + "</div></div>");

Loading…
Cancel
Save