Browse Source

inicio da tela de votacao para votacao em bloco ordem dia

pull/2416/head
AndreSouto 7 years ago
parent
commit
7c72fa7e39
  1. 15
      sapl/sessao/forms.py
  2. 264
      sapl/sessao/views.py
  3. 24
      sapl/templates/sessao/votacao/votacao_bloco_expediente.html
  4. 5
      sapl/templates/sessao/votacao/votacao_votacaoembloco.html

15
sapl/sessao/forms.py

@ -438,6 +438,21 @@ class VotacaoForm(forms.Form):
return votacao
class VotacaoFormBloco(forms.Form):
votos_sim = forms.CharField(label='Sim')
votos_nao = forms.CharField(label='Não')
abstencoes = forms.CharField(label='Abstenções')
total_votos = forms.CharField(required=False, label='total')
resultado_votacao = forms.CharField(required=False, label='Resultado da Votação')
def save(self, commit=False):
votacao = super(VotacaoFormBloco, self).save(commit)
votacao.materia = self.cleaned_data['materia']
import pdb; pdb.set_trace()
votacao.save()
return votacao
class VotacaoNominalForm(forms.Form):
resultado_votacao = forms.ModelChoiceField(label='Resultado da Votação',
required=False,

264
sapl/sessao/views.py

@ -42,7 +42,7 @@ from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, BlocoForm,
MesaForm, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet,
PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
SessaoPlenariaForm, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm)
VotacaoNominalForm, VotacaoFormBloco)
from .models import (Bancada, Bloco, CargoBancada, CargoMesa, ExpedienteMateria,
ExpedienteSessao, JustificativaAusencia, OcorrenciaSessao, IntegranteMesa,
MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
@ -3325,104 +3325,120 @@ class VotacaoEmBlocoOrdemDia(ListView):
def get_context_data(self, **kwargs):
context = super(VotacaoEmBlocoOrdemDia, self).get_context_data(**kwargs)
context['turno_choices'] = Tramitacao.TURNO_CHOICES
context['pk'] = self.kwargs['pk']
return context
def post(self, request, *args, **kwargs):
marcadas = request.POST.getlist('materia_id')
username = request.user.username
import ipdb; ipdb.set_trace()
if not 'tipo_votacao_' in request.POST:
msg = _('Formulário Inválido. Você esqueceu de selecionar ' +
'o tipo de votação.')
messages.add_message(request, messages.ERROR, msg)
self.logger.error('user=' + username + '. Formulário Inválido. Você esqueceu de selecionar '
'o tipo de votação.')
# marcadas = request.POST.getlist('materia_id')
# username = request.user.username
return self.get(request, self.kwargs)
# import ipdb; ipdb.set_trace()
tipo_votacao = request.POST['tipo_votacao_']
# if not 'tipo_votacao' in request.POST:
# msg = _('Formulário Inválido. Você esqueceu de selecionar ' +
# 'o tipo de votação.')
# messages.add_message(request, messages.ERROR, msg)
# self.logger.error('user=' + username + '. Formulário Inválido. Você esqueceu de selecionar '
# 'o tipo de votação.')
qs = self.get_queryset()
# return self.get(request, self.kwargs)
qs = qs.filter(id__in=marcadas).distinct()
# tipo_votacao = request.POST['tipo_votacao']
kwargs.update({
'queryset': qs,
'tipo_votacao': tipo_votacao,
})
# qs = self.get_queryset()
for m in marcadas:
import ipdb; ipdb.set_trace()
tipo_votacao = request.POST['tipo_votacao_']
msg = _('%s adicionado(a) com sucesso!'
% MateriaLegislativa.objects.get(id=m))
messages.add_message(request, messages.SUCCESS, msg)
self.logger.debug('user=' + username + '. MateriaLegislativa de id={} adicionado(a) com sucesso!'.format(m))
# qs = qs.filter(id__in=marcadas).distinct()
if tipo_votacao:
lista_materias_ordem_dia = OrdemDia.objects.filter(
sessao_plenaria_id=self.kwargs[
'pk'])
# kwargs.update({
# 'queryset': qs,
# 'tipo_votacao': tipo_votacao,
# })
materia = MateriaLegislativa.objects.get(id=m)
# for m in marcadas:
# import ipdb; ipdb.set_trace()
# tipo_votacao = request.POST['tipo_votacao']
# msg = _('%s adicionado(a) com sucesso!'
# % MateriaLegislativa.objects.get(id=m))
# messages.add_message(request, messages.SUCCESS, msg)
# self.logger.debug('user=' + username + '. MateriaLegislativa de id={} adicionado(a) com sucesso!'.format(m))
ordem_dia = OrdemDia()
ordem_dia.sessao_plenaria_id = self.kwargs['pk']
ordem_dia.materia_id = materia.id
if lista_materias_ordem_dia:
posicao = lista_materias_ordem_dia.last().numero_ordem + 1
ordem_dia.numero_ordem = posicao
else:
ordem_dia.numero_ordem = 1
ordem_dia.data_ordem = timezone.now()
ordem_dia.tipo_votacao = tipo_votacao
ordem_dia.save()
# if tipo_votacao:
# lista_materias_ordem_dia = OrdemDia.objects.filter(
# sessao_plenaria_id=self.kwargs[
# 'pk'])
# materia = MateriaLegislativa.objects.get(id=m)
# ordem_dia = OrdemDia()
# ordem_dia.sessao_plenaria_id = self.kwargs['pk']
# ordem_dia.materia_id = materia.id
# if lista_materias_ordem_dia:
# posicao = lista_materias_ordem_dia.last().numero_ordem + 1
# ordem_dia.numero_ordem = posicao
# else:
# ordem_dia.numero_ordem = 1
# ordem_dia.data_ordem = timezone.now()
# ordem_dia.tipo_votacao = tipo_votacao
# ordem_dia.save()
return HttpResponseRedirect(
reverse('sapl.sessao:votacaoblocosimbod', kwargs=self.kwargs))
class VotacaoEmBlocoView(SessaoPermissionMixin):
class VotacaoEmBlocoView(FormView):
"""
Votação Simbólica e Nominal
"""
template_name = 'sessao/votacao/votacao_votacaoembloco.html'
form_class = VotacaoForm
form_class = VotacaoFormBloco
logger = logging.getLogger(__name__)
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
url = request.get_full_path()
# def get(self, request, *args, **kwargs):
# # self.object = self.get_object()
# # context = self.get_context_data(object=self.object)
# context = {}
# # url = request.get_full_path()
# # # TODO: HACK, VERIFICAR MELHOR FORMA DE FAZER ISSO
# # if "votsimb" in url:
# # titulo = _("Votação Simbólica")
# # elif "votsec" in url:
# # titulo = _("Votação Secreta")
# # else:
# # titulo = _("Não definida")
# import ipdb; ipdb.set_trace()
# # ordem_id = kwargs['oid']
# # ordem = OrdemDia.objects.get(id=ordem_id)
# # qtde_presentes = PresencaOrdemDia.objects.filter(
# # sessao_plenaria_id=self.object.id).count()
# # materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa}
# # context.update({'votacao_titulo': titulo,
# # 'materia': materia,
# # 'total_presentes': qtde_presentes})
# TODO: HACK, VERIFICAR MELHOR FORMA DE FAZER ISSO
if "votsimb" in url:
titulo = _("Votação Simbólica")
elif "votsec" in url:
titulo = _("Votação Secreta")
else:
titulo = _("Não definida")
# return self.render_to_response(context)
import ipdb; ipdb.set_trace()
ordem_id = kwargs['oid']
ordem = OrdemDia.objects.get(id=ordem_id)
qtde_presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id).count()
materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa}
context.update({'votacao_titulo': titulo,
'materia': materia,
'total_presentes': qtde_presentes})
def post(self, request, *args, **kwargs):
return self.render_to_response(context)
# def post(self, request, *args, **kwargs):
tipo_votacao = request.POST.get('tipo_votacao')
if tipo_votacao == '1':
marcadas = request.POST.getlist('materia_id_1')
titulo = "Votação Simbólica"
elif tipo_votacao == '2':
marcadas = request.POST.getlist('materia_id_2')
titulo = "Votação Nominal"
# self.object = self.get_object()
# form = VotacaoForm(request.POST)
form = VotacaoFormBloco(request.POST)
context = {}
# context = self.get_context_data(object=self.object)
# url = request.get_full_path()
@ -3435,75 +3451,79 @@ class VotacaoEmBlocoView(SessaoPermissionMixin):
# titulo = _("Não definida")
# ordem_id = kwargs['oid']
# ordem = OrdemDia.objects.get(id=ordem_id)
# qtde_presentes = PresencaOrdemDia.objects.filter(
# sessao_plenaria_id=self.object.id).count()
ordens = OrdemDia.objects.filter(id__in=marcadas)
qtde_presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.kwargs['pk']).count()
materias = []
for o in ordens:
materias.append({'materia': o.materia, 'ementa': o.materia.ementa})
# materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa}
# context.update({'votacao_titulo': titulo,
# 'materia': materia,
# 'total_presentes': qtde_presentes})
# context.update({'form': form})
context.update({'votacao_titulo': titulo,
'materias': materias,
'total_presentes': qtde_presentes})
context.update({'form': form})
# # ====================================================
if 'cancelar-votacao' in request.POST:
for ordem in ordens:
ordem.votacao_aberta = False
ordem.save()
# if 'cancelar-votacao' in request.POST:
# ordem.votacao_aberta = False
# ordem.save()
# return self.form_valid(form)
return self.form_valid(form)
# if form.is_valid():
if form.is_valid():
# materia_id = kwargs['mid']
# ordem_id = kwargs['oid']
# qtde_presentes = PresencaOrdemDia.objects.filter(
# sessao_plenaria_id=self.object.id).count()
# qtde_votos = (int(request.POST['votos_sim']) +
# int(request.POST['votos_nao']) +
# int(request.POST['abstencoes']))
qtde_votos = (int(request.POST['votos_sim']) +
int(request.POST['votos_nao']) +
int(request.POST['abstencoes']))
# if (int(request.POST['voto_presidente']) == 0):
# qtde_presentes -= 1
if (int(request.POST['voto_presidente']) == 0):
qtde_presentes -= 1
# if (qtde_votos > qtde_presentes or qtde_votos < qtde_presentes):
# form._errors["total_votos"] = ErrorList([u""])
# return self.render_to_response(context)
# elif (qtde_presentes == qtde_votos):
# try:
# 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_id = materia_id
# votacao.ordem_id = ordem_id
# votacao.tipo_resultado_votacao_id = int(
# request.POST['resultado_votacao'])
# votacao.save()
# except Exception as e:
# username = request.user.username
# self.logger.error('user=' + username + '. Problemas ao salvar RegistroVotacao da materia de id={} '
# 'e da ordem de id={}. '.format(materia_id, ordem_id) + str(e))
# return self.form_invalid(form)
# else:
# ordem = OrdemDia.objects.get(
# sessao_plenaria_id=self.object.id,
# materia_id=materia_id)
# resultado = TipoResultadoVotacao.objects.get(
# id=request.POST['resultado_votacao'])
# ordem.resultado = resultado.nome
# ordem.votacao_aberta = False
# ordem.save()
# return self.form_valid(form)
# else:
# return self.render_to_response(context)
if (qtde_votos > qtde_presentes or qtde_votos < qtde_presentes):
form._errors["total_votos"] = ErrorList([u""])
return self.render_to_response(context)
elif (qtde_presentes == qtde_votos):
for ordem in ordens:
try:
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_id = ordem.materia.id
votacao.ordem_id = ordem.id
votacao.tipo_resultado_votacao_id = int(
request.POST['resultado_votacao'])
votacao.save()
except Exception as e:
username = request.user.username
self.logger.error('user=' + username + '. Problemas ao salvar RegistroVotacao da materia de id={} '
'e da ordem de id={}. '.format(materia_id, ordem_id) + str(e))
return self.form_invalid(form)
else:
ordem = OrdemDia.objects.get(
sessao_plenaria_id=self.kwargs['pk'],
materia_id=ordem.materia.id)
resultado = TipoResultadoVotacao.objects.get(
id=request.POST['resultado_votacao'])
ordem.resultado = resultado.nome
ordem.votacao_aberta = False
ordem.save()
return self.form_valid(form)
else:
return self.render_to_response(context)
# def get_tipos_votacao(self):
# for tipo in TipoResultadoVotacao.objects.all():
# yield tipo
# def get_success_url(self):
# pk = self.kwargs['pk']
# return reverse('sapl.sessao:ordemdia_list',
# kwargs={'pk': pk})
def get_success_url(self):
pk = self.kwargs['pk']
return reverse('sapl.sessao:ordemdia_list',
kwargs={'pk': pk})

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

@ -25,7 +25,7 @@
<p></p>
{% comment %} {% if paginator.count %} {% endcomment %}
<form method="POST" enctype="application/x-www-form-urlencoded">
<form method="POST" enctype="application/x-www-form-urlencoded" action="{% url 'sapl.sessao:votacaoblocosimbod' pk %}">
{% csrf_token %}
{% comment %} {% if paginator.count > 1 %}
<h3>{% blocktrans with paginator.count as total_materias %}Pesquisa concluída com sucesso! Foram encontradas {{total_materias}} matérias.{% endblocktrans %}</h3>
@ -41,9 +41,9 @@
</thead>
<tr>
<td class="col-md-12">
<input type="radio" name="tipo_votacao_{{m.id}}" id="tipo_votacao_{{m.id}}" value="1"> <label for="tipo">Simbólica</label>
<input type="radio" name="tipo_votacao" id="tipo_votacao" value="1" checked="checked" onchange="alteraTipoVotacao()" > <label for="tipo">Simbólica</label>
</br>
<input type="radio" name="tipo_votacao_{{m.id}}" id="tipo_votacao_{{m.id}}" value="2"> <label for="tipo">Nominal</label>
<input type="radio" name="tipo_votacao" id="tipo_votacao" value="2" onchange="alteraTipoVotacao()" > <label for="tipo">Nominal</label>
</br>
</td>
</tr>
@ -64,11 +64,10 @@
</label>
</div>
{% for m in ordem_dia %}
<tr>
<tr class="{% if m.tipo_votacao == 1 %}Simbolica{% else %}Nominal{% endif %}" {% if m.tipo_votacao == 2 %} style="display:none;" {% endif %}>
<td>
<input type="checkbox" name="materia_id" id="{{m.id}}" value="{{m.id}}" {% if check %} checked {% endif %}>
<input type="checkbox" name="materia_id_{{m.tipo_votacao}}" id="{{m.id}}" value="{{m.id}}" {% if check %} checked {% endif %}>
<strong><a href="{% url 'sapl.materia:materialegislativa_detail' m.id %}">{{m.materia.tipo.sigla}} {{m.materia.numero}}/{{m.materia.ano}} - {{m.materia.tipo}}</strong></a></br>
{% if m.materia.numeracao_set.last %}
<strong>Processo:</strong> &nbsp; {{m.materia.numeracao_set.last}}</br>
@ -127,10 +126,21 @@
<script language="JavaScript">
function checkAll(event) {
$('[name=materia_id]').each(function() {
$('[name=materia_id_1]').each(function() {
$(this).prop('unchecked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
$('[name=materia_id_2]').each(function() {
$(this).prop('unchecked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
}
function alteraTipoVotacao() {
$(".Simbolica").toggle();
$(".Nominal").toggle();
}
</script>
{% endblock extra_js%}

5
sapl/templates/sessao/votacao/votacao_votacaoembloco.html

@ -26,11 +26,12 @@
{% endif %}
<div>
{% for materia in materias %}
<b>Matéria:</b> {{materia.materia|safe}}
<br />
<b>Ementa:</b> {{materia.ementa|safe}}
<br />
<br />
<br /> <br />
{% endfor %}
<b>Total presentes:</b> {{total_presentes}} (com presidente)
<input type="hidden" id="total_votos" name="total_votos">
</div>

Loading…
Cancel
Save