diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index e014a020d..17f7055e5 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -26,7 +26,7 @@ from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES, from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia, Orador, OradorExpediente, OrdemDia, SessaoPlenaria, SessaoPlenariaPresenca, TipoJustificativa, TipoResultadoVotacao, - OcorrenciaSessao) + OcorrenciaSessao, RegistroVotacao) def recupera_anos(): @@ -429,39 +429,16 @@ class VotacaoForm(forms.Form): votos_nao = forms.CharField(label='Não') abstencoes = forms.CharField(label='Abstenções') total_votos = forms.CharField(required=False, label='total') + observacao = forms.CharField(required=False , label='Observação') resultado_votacao = forms.CharField(label='Resultado da Votação') - def save(self, commit=False): - votacao = super(VotacaoForm, self).save(commit) - votacao.materia = self.cleaned_data['materia'] - votacao.save() - 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') - resultado_votacao = forms.ModelChoiceField(label='Resultado da Votação', - required=True, - queryset=TipoResultadoVotacao.objects.all()) + # def save(self, commit=False): + # #TODO Verificar se esse códido é utilizado - def save(self, commit=False): - votos_sim = self.data['votos_sim'] - votos_nao = self.data['votos_nao'] - abstencoes = self.data['abstencoes'] - total_votos = self.data['total_votos'] - - materias = MateriaLegislativa.objects.filter(id__in=self.data['materias']) - for m in materias: - rv = RegistroVotacao(votos_sim=votos_sim, - votos_nao=votos_nao, - abstencoes=abstencoes - materia=materia) - - rv.save() + # votacao = super(VotacaoForm, self).save(commit) + # votacao.materia = self.cleaned_data['materia'] + # votacao.save() + # return votacao class VotacaoNominalForm(forms.Form): diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 5a4d622a4..aed321faf 100755 --- a/sapl/sessao/views.py +++ b/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, VotacaoFormBloco) + VotacaoNominalForm) from .models import (Bancada, Bloco, CargoBancada, CargoMesa, ExpedienteMateria, ExpedienteSessao, JustificativaAusencia, OcorrenciaSessao, IntegranteMesa, MateriaLegislativa, Orador, OradorExpediente, OrdemDia, @@ -3319,8 +3319,8 @@ class VotacaoEmBlocoOrdemDia(ListView): def get_queryset(self): kwargs = self.kwargs - return OrdemDia.objects.filter(sessao_plenaria_id= - kwargs['pk']) + return OrdemDia.objects.filter(sessao_plenaria_id=kwargs['pk'], + resultado='') def get_context_data(self, **kwargs): context = super(VotacaoEmBlocoOrdemDia, self).get_context_data(**kwargs) @@ -3340,157 +3340,87 @@ class VotacaoEmBlocoView(TemplateView): """ template_name = 'sessao/votacao/votacao_votacaoembloco.html' - form_class = VotacaoFormBloco logger = logging.getLogger(__name__) def get_initial(self): - import ipdb; ipdb.set_trace() - return {'resultado_votacao': TipoResultadoVotacao.objects.all()} + pass def get(self, request, *args, **kwargs): - import ipdb; ipdb.set_trace() - self.object = self.get_object() - context = self.get_context_data(object=self.object) - context = {} - url = request.get_full_path() + pass - # # 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") + def post(self, request, *args, **kwargs): + if not 'context' in locals(): + context = {} - # ordem_id = kwargs['oid'] - ordem = OrdemDia.objects.get(id=ordem_id) - qtde_presentes = PresencaOrdemDia.objects.filter( - sessao_plenaria_id=self.object.id).count() + if ('ordem_id_1' in request.POST) or ('ordem_id_2' in request.POST): + tipo_votacao = request.POST.get('tipo_votacao') + if tipo_votacao == '1': + marcadas = request.POST.getlist('ordem_id_1') + titulo = "Votação Simbólica" + elif tipo_votacao == '2': + marcadas = request.POST.getlist('ordem_id_2') + titulo = "Votação Nominal" - materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa} - context.update({'votacao_titulo': titulo, - 'materia': materia, - 'total_presentes': qtde_presentes, - 'resultado_votacao': TipoResultadoVotacao.objects.all() - }) - - import ipdb; ipdb.set_trace() + ordens = OrdemDia.objects.filter(id__in=marcadas) - return self.render_to_response(context) - - def post(self, request, *args, **kwargs): + qtde_presentes = PresencaOrdemDia.objects.filter( + sessao_plenaria_id=self.kwargs['pk']).count() - tipo_votacao = request.POST.get('tipo_votacao') - tipo_votacao = '1' # RETIRAR - 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" - context = {} - 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}) - context.update({'votacao_titulo': titulo, - 'materias': materias, - 'resultado_votacao': TipoResultadoVotacao.objects.all(), - 'total_presentes': qtde_presentes}) + context.update({'tipo_votacao': tipo_votacao, + 'votacao_titulo': titulo, + 'ordens': ordens, + 'total_presentes': qtde_presentes, + 'resultado_votacao': TipoResultadoVotacao.objects.all()}) if 'salvar-votacao' in request.POST: - form = VotacaoFormBloco(request.POST) + form = VotacaoForm(request.POST) + ordens = OrdemDia.objects.filter(id__in=request.POST['ordens']) + qtde_presentes = int(request.POST['total_presentes']) + if form.is_valid(): - form.save() - # pass - context.update({'form': form}) + 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: + form._errors["total_votos"] = ErrorList([u""]) + return self.render_to_response(context) + + 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 = ordem.materia + votacao.ordem = ordem + resultado = TipoResultadoVotacao.objects.get( + id=request.POST['resultado_votacao']) + votacao.tipo_resultado_votacao = resultado + 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(ordem.materia.id, ordem.id) + str(e)) + return self.form_invalid(form) + else: + ordem.resultado = resultado.nome + ordem.votacao_aberta = False + ordem.save() + return HttpResponseRedirect(self.get_success_url()) + if 'cancelar-votacao' in request.POST: + ordens = OrdemDia.objects.filter(id__in=request.POST['ordens']) + for ordem in ordens: + ordem.votacao_aberta = False + ordem.save() + return self.render_to_response(context) - # if 'tipo_votacao' in request.POST: - # 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" - - # form = VotacaoFormBloco(request.POST) - # context = {} - # ordens = OrdemDia.objects.filter(id__in=marcadas) - # import ipdb; ipdb.set_trace() - # 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, - # 'materias': materias, - # 'resultado_votacao': TipoResultadoVotacao.objects.all(), - # 'total_presentes': qtde_presentes}) - # context.update({'form': form}) - - # # # ==================================================== - # import ipdb; ipdb.set_trace() - # if 'cancelar-votacao' in request.POST: - # for ordem in ordens: - # ordem.votacao_aberta = False - # ordem.save() - - # return self.form_valid(form) - - # 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): - # 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(): diff --git a/sapl/templates/sessao/votacao/votacao_bloco_expediente.html b/sapl/templates/sessao/votacao/votacao_bloco_expediente.html index a37799a3b..764934dcf 100644 --- a/sapl/templates/sessao/votacao/votacao_bloco_expediente.html +++ b/sapl/templates/sessao/votacao/votacao_bloco_expediente.html @@ -64,16 +64,16 @@ - {% for m in ordem_dia %} - + {% for o in ordem_dia %} + - - {{m.materia.tipo.sigla}} {{m.materia.numero}}/{{m.materia.ano}} - {{m.materia.tipo}}
- {% if m.materia.numeracao_set.last %} - Processo:   {{m.materia.numeracao_set.last}}
+ + {{o.materia.tipo.sigla}} {{o.materia.numero}}/{{o.materia.ano}} - {{o.materia.tipo}}
+ {% if o.materia.numeracao_set.last %} + Processo:   {{o.materia.numeracao_set.last}}
{% endif %} Autor: - {% for a in m.materia.autoria_set.all %} + {% for a in o.materia.autoria_set.all %} {% if not forloop.first %} ,    {{a.autor|default_if_none:""}} {% else %} @@ -81,20 +81,20 @@ {% endif %} {% endfor %}
- {% if m.materia.numero_protocolo %} - Protocolo:   {{m.materia.numero_protocolo}}
+ {% if o.materia.numero_protocolo %} + Protocolo:   {{o.materia.numero_protocolo}}
{% endif %} - {% if m.materia.tramitacao_set.last %} - {% if m.materia.tramitacao_set.last.turno %} + {% if o.materia.tramitacao_set.last %} + {% if o.materia.tramitacao_set.last.turno %} Turno:  {% for t in turno_choices %} - {% if t.0 == m.materia.tramitacao_set.last.turno %} + {% if t.0 == o.materia.tramitacao_set.last.turno %} {{ t.1 }} {% endif %} {% endfor %}
{% endif %} {% endif %} - Ementa: {{ m.ementa|safe }}
+ Ementa: {{ o.ementa|safe }}

@@ -126,12 +126,12 @@