From 4ebb0c2c1b8f8b7b1dacc8a43b9ceed8477b8964 Mon Sep 17 00:00:00 2001 From: AndreSouto Date: Fri, 16 Nov 2018 16:15:48 -0200 Subject: [PATCH] Alteracoes na votacao em bloco --- sapl/sessao/forms.py | 23 +- sapl/sessao/views.py | 276 ++++++++---------- .../votacao/votacao_votacaoembloco.html | 3 +- 3 files changed, 144 insertions(+), 158 deletions(-) diff --git a/sapl/sessao/forms.py b/sapl/sessao/forms.py index a53227430..e014a020d 100644 --- a/sapl/sessao/forms.py +++ b/sapl/sessao/forms.py @@ -443,14 +443,25 @@ class VotacaoFormBloco(forms.Form): 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.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): - votacao = super(VotacaoFormBloco, self).save(commit) - votacao.materia = self.cleaned_data['materia'] - import pdb; pdb.set_trace() - votacao.save() - return votacao + 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() class VotacaoNominalForm(forms.Form): diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py index fe7b25566..5a4d622a4 100755 --- a/sapl/sessao/views.py +++ b/sapl/sessao/views.py @@ -3329,63 +3329,11 @@ class VotacaoEmBlocoOrdemDia(ListView): 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.') - - # return self.get(request, self.kwargs) - - # tipo_votacao = request.POST['tipo_votacao'] - - # qs = self.get_queryset() - - # qs = qs.filter(id__in=marcadas).distinct() - - # 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() - return HttpResponseRedirect( reverse('sapl.sessao:votacaoblocosimbod', kwargs=self.kwargs)) -class VotacaoEmBlocoView(FormView): +class VotacaoEmBlocoView(TemplateView): """ Votação Simbólica e Nominal @@ -3393,134 +3341,160 @@ class VotacaoEmBlocoView(FormView): template_name = 'sessao/votacao/votacao_votacaoembloco.html' 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) - # context = {} - # # url = request.get_full_path() + def get_initial(self): + import ipdb; ipdb.set_trace() + return {'resultado_votacao': TipoResultadoVotacao.objects.all()} - # # # 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 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() - # 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() + # # 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") - # # materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa} - # # context.update({'votacao_titulo': titulo, - # # 'materia': materia, - # # 'total_presentes': qtde_presentes}) + # ordem_id = kwargs['oid'] + ordem = OrdemDia.objects.get(id=ordem_id) + qtde_presentes = PresencaOrdemDia.objects.filter( + sessao_plenaria_id=self.object.id).count() - # return self.render_to_response(context) + 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() + return self.render_to_response(context) def post(self, request, *args, **kwargs): - 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" - - # self.object = self.get_object() - form = VotacaoFormBloco(request.POST) context = {} - # context = self.get_context_data(object=self.object) - # url = request.get_full_path() - - # # ==================================================== - # if "votsimb" in url: - # titulo = _("Votação Simbólica") - # elif "votsec" in url: - # titulo = _("Votação Secreta") - # else: - # titulo = _("Não definida") - - # ordem_id = kwargs['oid'] 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, 'materias': materias, + 'resultado_votacao': TipoResultadoVotacao.objects.all(), '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 form.is_valid(): - # materia_id = kwargs['mid'] - # ordem_id = kwargs['oid'] + + if 'salvar-votacao' in request.POST: + form = VotacaoFormBloco(request.POST) + if form.is_valid(): + form.save() + # pass + context.update({'form': form}) + + 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.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) + # 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(): - # yield tipo + def get_tipos_votacao(self): + for tipo in TipoResultadoVotacao.objects.all(): + yield tipo def get_success_url(self): pk = self.kwargs['pk'] diff --git a/sapl/templates/sessao/votacao/votacao_votacaoembloco.html b/sapl/templates/sessao/votacao/votacao_votacaoembloco.html index fb4282085..3d80e769a 100644 --- a/sapl/templates/sessao/votacao/votacao_votacaoembloco.html +++ b/sapl/templates/sessao/votacao/votacao_votacaoembloco.html @@ -27,6 +27,7 @@
{% for materia in materias %} + Matéria: {{materia.materia|safe}}
Ementa: {{materia.ementa|safe}} @@ -55,7 +56,7 @@
Resultado da Votação