diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index 90f8e6f59..a53227430 100644 --- a/sapl/sessao/forms.py +++ b/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, diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index 053eb9d2a..fe7b25566 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) + 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}) diff --git a/sapl/templates/sessao/votacao/votacao_bloco_expediente.html b/sapl/templates/sessao/votacao/votacao_bloco_expediente.html index b58e27348..a37799a3b 100644 --- a/sapl/templates/sessao/votacao/votacao_bloco_expediente.html +++ b/sapl/templates/sessao/votacao/votacao_bloco_expediente.html @@ -25,7 +25,7 @@
{% comment %} {% if paginator.count %} {% endcomment %} -