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

276
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: # import ipdb; ipdb.set_trace()
msg = _('Formulário Inválido. Você esqueceu de selecionar ' +
'o tipo de votação.') # if not 'tipo_votacao' in request.POST:
messages.add_message(request, messages.ERROR, msg) # msg = _('Formulário Inválido. Você esqueceu de selecionar ' +
self.logger.error('user=' + username + '. Formulário Inválido. Você esqueceu de selecionar ' # 'o tipo de votação.')
'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({ # kwargs.update({
'queryset': qs, # 'queryset': qs,
'tipo_votacao': tipo_votacao, # 'tipo_votacao': tipo_votacao,
}) # })
for m in marcadas: # for m in marcadas:
import ipdb; ipdb.set_trace() # import ipdb; ipdb.set_trace()
tipo_votacao = request.POST['tipo_votacao_'] # tipo_votacao = request.POST['tipo_votacao']
msg = _('%s adicionado(a) com sucesso!' # msg = _('%s adicionado(a) com sucesso!'
% MateriaLegislativa.objects.get(id=m)) # % MateriaLegislativa.objects.get(id=m))
messages.add_message(request, messages.SUCCESS, msg) # messages.add_message(request, messages.SUCCESS, msg)
self.logger.debug('user=' + username + '. MateriaLegislativa de id={} adicionado(a) com sucesso!'.format(m)) # self.logger.debug('user=' + username + '. MateriaLegislativa de id={} adicionado(a) com sucesso!'.format(m))
if tipo_votacao: # if tipo_votacao:
lista_materias_ordem_dia = OrdemDia.objects.filter( # lista_materias_ordem_dia = OrdemDia.objects.filter(
sessao_plenaria_id=self.kwargs[ # sessao_plenaria_id=self.kwargs[
'pk']) # 'pk'])
materia = MateriaLegislativa.objects.get(id=m) # materia = MateriaLegislativa.objects.get(id=m)
ordem_dia = OrdemDia() # ordem_dia = OrdemDia()
ordem_dia.sessao_plenaria_id = self.kwargs['pk'] # ordem_dia.sessao_plenaria_id = self.kwargs['pk']
ordem_dia.materia_id = materia.id # ordem_dia.materia_id = materia.id
if lista_materias_ordem_dia: # if lista_materias_ordem_dia:
posicao = lista_materias_ordem_dia.last().numero_ordem + 1 # posicao = lista_materias_ordem_dia.last().numero_ordem + 1
ordem_dia.numero_ordem = posicao # ordem_dia.numero_ordem = posicao
else: # else:
ordem_dia.numero_ordem = 1 # ordem_dia.numero_ordem = 1
ordem_dia.data_ordem = timezone.now() # ordem_dia.data_ordem = timezone.now()
ordem_dia.tipo_votacao = tipo_votacao # ordem_dia.tipo_votacao = tipo_votacao
ordem_dia.save() # 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 # # # TODO: HACK, VERIFICAR MELHOR FORMA DE FAZER ISSO
if "votsimb" in url: # # if "votsimb" in url:
titulo = _("Votação Simbólica") # # titulo = _("Votação Simbólica")
elif "votsec" in url: # # elif "votsec" in url:
titulo = _("Votação Secreta") # # titulo = _("Votação Secreta")
else: # # else:
titulo = _("Não definida") # # titulo = _("Não definida")
import ipdb; ipdb.set_trace() # import ipdb; ipdb.set_trace()
ordem_id = kwargs['oid'] # # ordem_id = kwargs['oid']
ordem = OrdemDia.objects.get(id=ordem_id) # # ordem = OrdemDia.objects.get(id=ordem_id)
qtde_presentes = PresencaOrdemDia.objects.filter( # # qtde_presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id).count() # # sessao_plenaria_id=self.object.id).count()
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, # # 'materia': materia,
'total_presentes': qtde_presentes}) # # '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() # 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()
return self.form_valid(form)
# if 'cancelar-votacao' in request.POST: if form.is_valid():
# ordem.votacao_aberta = False
# ordem.save()
# return self.form_valid(form)
# 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>
@ -63,12 +63,11 @@
<input type="checkbox" id="id_check_all" onchange="checkAll(event)" /> Marcar/Desmarcar Todos <input type="checkbox" id="id_check_all" onchange="checkAll(event)" /> Marcar/Desmarcar Todos
</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).trigger('click');
});
$('[name=materia_id_2]').each(function() {
$(this).prop('unchecked', event.target.checked ? 'checked': null); $(this).prop('unchecked', event.target.checked ? 'checked': null);
$(this).trigger('click'); $(this).trigger('click');
}); });
} }
function alteraTipoVotacao() {
$(".Simbolica").toggle();
$(".Nominal").toggle();
}
</script> </script>
{% endblock extra_js%} {% endblock extra_js%}

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

@ -26,11 +26,12 @@
{% endif %} {% endif %}
<div> <div>
<b>Matéria:</b> {{materia.materia|safe}} {% for materia in materias %}
<br /> <b>Matéria:</b> {{materia.materia|safe}}
<b>Ementa:</b> {{materia.ementa|safe}} <br />
<br /> <b>Ementa:</b> {{materia.ementa|safe}}
<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