From df0099e00e81857e52cf19c6babb862eaf279151 Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Tue, 29 Sep 2015 15:40:35 -0300 Subject: [PATCH] =?UTF-8?q?Finish=20vota=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- compilacao/templatetags/compilacao_filters.py | 1 - sessao/urls.py | 18 +- sessao/views.py | 198 +++++------------- templates/sessao/votacao/nominal.html | 2 - templates/sessao/votacao/simbolica.html | 54 ----- templates/sessao/votacao/simbolica_edit.html | 55 ----- .../votacao/{secreta.html => votacao.html} | 10 +- .../{secreta_edit.html => votacao_edit.html} | 2 +- 8 files changed, 68 insertions(+), 272 deletions(-) delete mode 100644 templates/sessao/votacao/simbolica.html delete mode 100644 templates/sessao/votacao/simbolica_edit.html rename templates/sessao/votacao/{secreta.html => votacao.html} (84%) rename templates/sessao/votacao/{secreta_edit.html => votacao_edit.html} (96%) diff --git a/compilacao/templatetags/compilacao_filters.py b/compilacao/templatetags/compilacao_filters.py index ce0c223d1..49f50e44e 100644 --- a/compilacao/templatetags/compilacao_filters.py +++ b/compilacao/templatetags/compilacao_filters.py @@ -4,7 +4,6 @@ from django.db.models import Q from compilacao.models import Dispositivo - register = template.Library() diff --git a/sessao/urls.py b/sessao/urls.py index 91667bf57..4c2040823 100644 --- a/sessao/urls.py +++ b/sessao/urls.py @@ -1,4 +1,5 @@ from django.conf.urls import include, url + from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView, ExpedienteOrdemDiaView, ExpedienteView, ExplicacaoDelete, ExplicacaoEdit, ExplicacaoView, @@ -7,11 +8,10 @@ from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView, OradorExpedienteDelete, OradorExpedienteEdit, OradorExpedienteView, PainelView, PresencaOrdemDiaView, PresencaView, ResumoView, - VotacaoNominalEditView, VotacaoNominalView, - VotacaoSecretaEditView, VotacaoSecretaView, - VotacaoSimbolicaEditView, VotacaoSimbolicaView, - sessao_crud, tipo_expediente_crud, - tipo_resultado_votacao_crud, tipo_sessao_crud) + VotacaoEditView, VotacaoNominalEditView, + VotacaoNominalView, VotacaoView, sessao_crud, + tipo_expediente_crud, tipo_resultado_votacao_crud, + tipo_sessao_crud) urlpatterns_sessao = sessao_crud.urlpatterns + [ url(r'^(?P\d+)/expediente$', @@ -55,13 +55,13 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [ url(r'^(?P\d+)/matordemdia/votnom/edit/(?P\d+)/(?P\d+)$', VotacaoNominalEditView.as_view(), name='votacaonominaledit'), url(r'^(?P\d+)/matordemdia/votsec/(?P\d+)/(?P\d+)$', - VotacaoSecretaView.as_view(), name='votacaosecreta'), + VotacaoView.as_view(), name='votacaosecreta'), url(r'^(?P\d+)/matordemdia/votsec/view/(?P\d+)/(?P\d+)$', - VotacaoSecretaEditView.as_view(), name='votacaosecretaedit'), + VotacaoEditView.as_view(), name='votacaosecretaedit'), url(r'^(?P\d+)/matordemdia/votsimb/(?P\d+)/(?P\d+)$', - VotacaoSimbolicaView.as_view(), name='votacaosimbolica'), + VotacaoView.as_view(), name='votacaosimbolica'), url(r'^(?P\d+)/matordemdia/votsimb/view/(?P\d+)/(?P\d+)$', - VotacaoSimbolicaEditView.as_view(), name='votacaosimbolicaedit'), + VotacaoEditView.as_view(), name='votacaosimbolicaedit'), ] sessao_urls = urlpatterns_sessao, sessao_crud.namespace, sessao_crud.namespace diff --git a/sessao/views.py b/sessao/views.py index 56ea07110..bd29b703a 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -7,6 +7,7 @@ from django.core.urlresolvers import reverse from django.utils.html import strip_tags from django.utils.translation import ugettext_lazy as _ from django.views.generic.edit import FormMixin + from materia.models import Autoria, TipoMateriaLegislativa from parlamentares.models import Parlamentar from sapl.crud import build_crud @@ -1228,14 +1229,20 @@ class VotacaoEdit(forms.Form): pass -class VotacaoSimbolicaEditView(FormMixin, sessao_crud.CrudDetailView): - template_name = 'sessao/votacao/simbolica_edit.html' +class VotacaoEditView(FormMixin, sessao_crud.CrudDetailView): + + ''' + Votação Simbólica e Secreta + ''' + + template_name = 'sessao/votacao/votacao_edit.html' def get_tipos_votacao(self): for tipo in TipoResultadoVotacao.objects.all(): yield tipo def post(self, request, *args, **kwargs): + self.object = self.get_object() form = VotacaoEdit(request.POST) @@ -1259,6 +1266,15 @@ class VotacaoSimbolicaEditView(FormMixin, sessao_crud.CrudDetailView): self.object = self.get_object() 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" + materia_id = kwargs['oid'] ordem_id = kwargs['mid'] @@ -1271,10 +1287,11 @@ class VotacaoSimbolicaEditView(FormMixin, sessao_crud.CrudDetailView): materia_id=materia_id, ordem_id=ordem_id) votacao_existente = {'observacao': sub( - ' ', ' ', strip_tags(votacao.observacao)), - 'tipo_resultado': - votacao.tipo_resultado_votacao_id} - context.update({'votacao': votacao_existente}) + ' ', ' ', strip_tags(votacao.observacao)), + 'tipo_resultado': + votacao.tipo_resultado_votacao_id} + context.update({'votacao_titulo': titulo, + 'votacao': votacao_existente}) return self.render_to_response(context) @@ -1284,8 +1301,13 @@ class VotacaoSimbolicaEditView(FormMixin, sessao_crud.CrudDetailView): kwargs={'pk': pk}) -class VotacaoSimbolicaView(FormMixin, sessao_crud.CrudDetailView): - template_name = 'sessao/votacao/simbolica.html' +class VotacaoView(FormMixin, sessao_crud.CrudDetailView): + + ''' + Votação Simbólica e Secreta + ''' + + template_name = 'sessao/votacao/votacao.html' def get_tipos_votacao(self): for tipo in TipoResultadoVotacao.objects.all(): @@ -1295,85 +1317,25 @@ class VotacaoSimbolicaView(FormMixin, sessao_crud.CrudDetailView): self.object = self.get_object() context = self.get_context_data(object=self.object) - ordem_id = kwargs['mid'] - ordem = OrdemDia.objects.get(id=ordem_id) - - materia = {'materia': ordem.materia, 'ementa': ordem.observacao} - context.update({'materia': materia}) - - return self.render_to_response(context) - - def post(self, request, *args, **kwargs): - self.object = self.get_object() - form = VotacaoForm(request.POST) - - if form.is_valid(): - materia_id = kwargs['oid'] - ordem_id = kwargs['mid'] - - qtde_presentes = len(PresencaOrdemDia.objects.filter( - sessao_plenaria_id=self.object.id)) - 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): - # context.update ({'error_message': - # 'A quantidade de votos e de - # presentes não correspondem.'}) - return self.form_invalid(form) - 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: - 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.save() + url = request.get_full_path() - return self.form_valid(form) + # 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: - return self.form_invalid(form) - - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('sessaoplenaria:materiaordemdia_list', - kwargs={'pk': pk}) - - -class VotacaoSecretaView(FormMixin, sessao_crud.CrudDetailView): - template_name = 'sessao/votacao/secreta.html' - - def get_tipos_votacao(self): - for tipo in TipoResultadoVotacao.objects.all(): - yield tipo - - def get(self, request, *args, **kwargs): - self.object = self.get_object() - context = self.get_context_data(object=self.object) + titulo = "Não definida" ordem_id = kwargs['mid'] 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.observacao} - context.update({'materia': materia}) + context.update({'votacao_titulo': titulo, + 'materia': materia, + 'total_presentes': qtde_presentes}) return self.render_to_response(context) @@ -1385,16 +1347,16 @@ class VotacaoSecretaView(FormMixin, sessao_crud.CrudDetailView): materia_id = kwargs['oid'] ordem_id = kwargs['mid'] - qtde_presentes = len(PresencaOrdemDia.objects.filter( - sessao_plenaria_id=self.object.id)) + 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): + if (int(request.POST['voto_presidente']) == 0): qtde_presentes -= 1 - if(qtde_votos > qtde_presentes or qtde_votos < qtde_presentes): + if (qtde_votos > qtde_presentes or qtde_votos < qtde_presentes): # context.update ({'error_message': # 'A quantidade de votos e de # presentes não correspondem.'}) @@ -1432,62 +1394,6 @@ class VotacaoSecretaView(FormMixin, sessao_crud.CrudDetailView): kwargs={'pk': pk}) -class VotacaoSecretaEditView(FormMixin, sessao_crud.CrudDetailView): - template_name = 'sessao/votacao/secreta_edit.html' - - def get_tipos_votacao(self): - for tipo in TipoResultadoVotacao.objects.all(): - yield tipo - - def post(self, request, *args, **kwargs): - self.object = self.get_object() - form = VotacaoEdit(request.POST) - - materia_id = kwargs['oid'] - ordem_id = kwargs['mid'] - - if(int(request.POST['anular_votacao']) == 1): - RegistroVotacao.objects.get( - materia_id=materia_id, - ordem_id=ordem_id).delete() - - ordem = OrdemDia.objects.get( - sessao_plenaria_id=self.object.id, - materia_id=materia_id) - ordem.resultado = None - ordem.save() - - return self.form_valid(form) - - def get(self, request, *args, **kwargs): - self.object = self.get_object() - context = self.get_context_data(object=self.object) - - materia_id = kwargs['oid'] - ordem_id = kwargs['mid'] - - ordem = OrdemDia.objects.get(id=ordem_id) - - materia = {'materia': ordem.materia, 'ementa': ordem.observacao} - context.update({'materia': materia}) - - votacao = RegistroVotacao.objects.get( - materia_id=materia_id, - ordem_id=ordem_id) - votacao_existente = {'observacao': sub( - ' ', ' ', strip_tags(votacao.observacao)), - 'tipo_resultado': - votacao.tipo_resultado_votacao_id} - context.update({'votacao': votacao_existente}) - - return self.render_to_response(context) - - def get_success_url(self): - pk = self.kwargs['pk'] - return reverse('sessaoplenaria:materiaordemdia_list', - kwargs={'pk': pk}) - - class VotacaoNominalForm(forms.Form): pass @@ -1526,7 +1432,7 @@ class VotacaoNominalView(FormMixin, sessao_crud.CrudDetailView): materia = {'materia': ordem.materia, 'ementa': sub( - ' ', ' ', strip_tags(ordem.observacao))} + ' ', ' ', strip_tags(ordem.observacao))} context.update({'materia': materia}) return self.render_to_response(context) @@ -1587,7 +1493,7 @@ class VotacaoNominalView(FormMixin, sessao_crud.CrudDetailView): elif(voto == 'nao'): voto_parlamentar.voto = 'Não' elif(voto == 'abstencao'): - voto_parlamentar.voto = 'Abestenção' + voto_parlamentar.voto = 'Abstenção' elif(voto == 'nao_votou'): voto_parlamentar.voto = 'Não Votou' voto_parlamentar.parlamentar_id = parlamentar_id @@ -1632,13 +1538,13 @@ class VotacaoNominalEditView(FormMixin, sessao_crud.CrudDetailView): materia = {'materia': ordem.materia, 'ementa': sub( - ' ', ' ', strip_tags(ordem.observacao))} + ' ', ' ', strip_tags(ordem.observacao))} context.update({'materia': materia}) votacao_existente = {'observacao': sub( - ' ', ' ', strip_tags(votacao.observacao)), - 'tipo_resultado': - votacao.tipo_resultado_votacao_id} + ' ', ' ', strip_tags(votacao.observacao)), + 'tipo_resultado': + votacao.tipo_resultado_votacao_id} context.update({'votacao': votacao_existente}) return self.render_to_response(context) diff --git a/templates/sessao/votacao/nominal.html b/templates/sessao/votacao/nominal.html index 1cb2cdadd..bf39038fa 100644 --- a/templates/sessao/votacao/nominal.html +++ b/templates/sessao/votacao/nominal.html @@ -20,7 +20,6 @@
  • {{parlamentar.nome_parlamentar}}
  • - {% for tipo in view.get_tipos_votacao %} {% endfor %} diff --git a/templates/sessao/votacao/simbolica.html b/templates/sessao/votacao/simbolica.html deleted file mode 100644 index 6b039a22c..000000000 --- a/templates/sessao/votacao/simbolica.html +++ /dev/null @@ -1,54 +0,0 @@ -{% extends "sessao/sessaoplenaria_detail.html" %} -{% load i18n %} - -{% block detail_content %} -
    - {% csrf_token %} - -
    - Votação Simbólica -
    - Matéria: {{materia.materia|safe}} -
    - Ementa: {{materia.ementa|safe}} -
    -
    - -
      -
    • Sim:
    • -
    • Não:
    • -
    • Abstenções:
    • -
    - -
      -
    • - A totalização inclui o voto do Presidente? - -
    • - -
    • - Resultado da Votação - -
    • -
    - -
      -
    • - Observações - -
    • -
    - -

    - -
    -
    -{% endblock detail_content %} \ No newline at end of file diff --git a/templates/sessao/votacao/simbolica_edit.html b/templates/sessao/votacao/simbolica_edit.html deleted file mode 100644 index a7bf120fe..000000000 --- a/templates/sessao/votacao/simbolica_edit.html +++ /dev/null @@ -1,55 +0,0 @@ -{% extends "sessao/sessaoplenaria_detail.html" %} -{% load i18n %} - -{% block detail_content %} -
    - {% csrf_token %} - -
    - Votação Simbólica -
    - Matéria: {{materia.materia|safe}} -
    - Ementa: {{materia.ementa|safe}} -
    -
    - -
      -
    • - Anular Votação - -
    • -
    - -
      -
    • - Resultado da Votação: - {% for tipo in view.get_tipos_votacao %} - {% if votacao.tipo_resultado == tipo.id %} - {{ tipo.nome }} - {% endif %} - {% endfor %} -
    • -
    - -
      -
    • - Observações - -
    • -
    - -

    - -
    -
    -{% endblock detail_content %} - -{% block foot_js %} - -{% endblock %} \ No newline at end of file diff --git a/templates/sessao/votacao/secreta.html b/templates/sessao/votacao/votacao.html similarity index 84% rename from templates/sessao/votacao/secreta.html rename to templates/sessao/votacao/votacao.html index c1b0e42dc..24396df71 100644 --- a/templates/sessao/votacao/secreta.html +++ b/templates/sessao/votacao/votacao.html @@ -6,11 +6,14 @@ {% csrf_token %}
    - Votação Secreta + {{votacao_titulo}}
    - Matéria: {{materia.materia|safe}} + Matéria: {{materia.materia|safe}}
    - Ementa: {{materia.ementa|safe}} + Ementa: {{materia.ementa|safe}} +
    +
    + Total presentes: {{total_presentes}} (com presidente)

    @@ -32,7 +35,6 @@
  • Resultado da Votação