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. 276
      sapl/sessao/views.py
  3. 24
      sapl/templates/sessao/votacao/votacao_bloco_expediente.html
  4. 11
      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,

276
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
# 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.')
return self.get(request, self.kwargs)
# return self.get(request, self.kwargs)
tipo_votacao = request.POST['tipo_votacao_']
# tipo_votacao = request.POST['tipo_votacao']
qs = self.get_queryset()
# qs = self.get_queryset()
qs = qs.filter(id__in=marcadas).distinct()
# qs = qs.filter(id__in=marcadas).distinct()
kwargs.update({
'queryset': qs,
'tipo_votacao': tipo_votacao,
})
# kwargs.update({
# 'queryset': qs,
# 'tipo_votacao': tipo_votacao,
# })
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))
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()
# 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))
# 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")
# # # 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()
# 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})
# # materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa}
# # context.update({'votacao_titulo': titulo,
# # 'materia': materia,
# # 'total_presentes': qtde_presentes})
return self.render_to_response(context)
# 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"
# def post(self, request, *args, **kwargs):
# 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()
return self.form_valid(form)
# if 'cancelar-votacao' in request.POST:
# ordem.votacao_aberta = False
# ordem.save()
# 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']))
# 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)
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 (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>
@ -63,12 +63,11 @@
<input type="checkbox" id="id_check_all" onchange="checkAll(event)" /> Marcar/Desmarcar Todos
</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%}

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

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

Loading…
Cancel
Save