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 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): class VotacaoNominalForm(forms.Form):
resultado_votacao = forms.ModelChoiceField(label='Resultado da Votação', resultado_votacao = forms.ModelChoiceField(label='Resultado da Votação',
required=False, required=False,

264
sapl/sessao/views.py

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

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

@ -25,7 +25,7 @@
<p></p> <p></p>
{% comment %} {% if paginator.count %} {% endcomment %} {% 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 %} {% csrf_token %}
{% comment %} {% if paginator.count > 1 %} {% 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> <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> </thead>
<tr> <tr>
<td class="col-md-12"> <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> </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> </br>
</td> </td>
</tr> </tr>
@ -64,11 +64,10 @@
</label> </label>
</div> </div>
{% for m in ordem_dia %} {% 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> <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> <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 %} {% if m.materia.numeracao_set.last %}
<strong>Processo:</strong> &nbsp; {{m.materia.numeracao_set.last}}</br> <strong>Processo:</strong> &nbsp; {{m.materia.numeracao_set.last}}</br>
@ -127,10 +126,21 @@
<script language="JavaScript"> <script language="JavaScript">
function checkAll(event) { function checkAll(event) {
$('[name=materia_id]').each(function() { $('[name=materia_id_1]').each(function() {
$(this).prop('unchecked', event.target.checked ? 'checked': null); $(this).prop('unchecked', event.target.checked ? 'checked': null);
$(this).trigger('click'); $(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> </script>
{% endblock extra_js%} {% endblock extra_js%}

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

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

Loading…
Cancel
Save