From 0d238079bc67259dbc7c55f83865071ba73d1bbb Mon Sep 17 00:00:00 2001 From: Eduardo Edson Batista Cordeiro Alves Date: Wed, 23 Sep 2015 16:39:23 -0300 Subject: [PATCH] View da votacao simbolica, falta alguns detalhes ainda --- sessao/urls.py | 2 +- sessao/views.py | 84 +++++++++++++ templates/sessao/materia_ordemdia_list.html | 2 +- templates/sessao/votacao/simbolica.html | 127 +++++++++++++------- 4 files changed, 171 insertions(+), 44 deletions(-) diff --git a/sessao/urls.py b/sessao/urls.py index 647ca18da..a11706088 100644 --- a/sessao/urls.py +++ b/sessao/urls.py @@ -50,7 +50,7 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [ ExplicacaoDelete.as_view(), name='explicacaoexcluir'), url(r'^(?P\d+)/explicacao/editar/(?P\d+)$', ExplicacaoEdit.as_view(), name='explicacaoeditar'), - url(r'^(?P\d+)/materiaordemdia/votacaosimbolica/(?P\d+)$', + url(r'^(?P\d+)/materiaordemdia/votacaosimbolica/(?P\d+)/(?P\d+)$', VotacaoSimbolicaView.as_view(), name='votacaosimbolica'), url(r'^(?P\d+)/materiaordemdia/votacaonominal/(?P\d+)$', VotacaoNomimalView.as_view(), name='votacaonominal'), diff --git a/sessao/views.py b/sessao/views.py index 9b9e40cff..ac0fc338d 100644 --- a/sessao/views.py +++ b/sessao/views.py @@ -239,6 +239,7 @@ class ListMateriaOrdemDiaView(sessao_crud.CrudDetailView): mat = {'pk': pk, 'oid': o.materia_id, + 'ordem_id': o.id, 'ementa': ementa, 'titulo': titulo, 'numero': numero, @@ -1222,9 +1223,92 @@ class ExplicacaoEdit(FormMixin, sessao_crud.CrudDetailView): return self.render_to_response(context) +class VotacaoForm(forms.Form): + votos_sim = forms.CharField(required=True) + votos_nao = forms.CharField(required=True) + abstencoes = forms.CharField(required=True) + + class VotacaoSimbolicaView(FormMixin, sessao_crud.CrudDetailView): template_name = 'sessao/votacao/simbolica.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) + + current_url = self.request.get_full_path() + words = current_url.split('/') + materia_id = words[-2] + ordem_id = words[-1] + ordem = OrdemDia.objects.get(id=ordem_id) + + materia = {'materia': ordem.materia, 'ementa': ordem.observacao} + context.update({'materia': materia}) + + try: + votacao = RegistroVotacao.objects.get( + materia_id=materia_id, + ordem_id=ordem_id) + except: + pass + else: + votacao_existente = {'materia': ordem.materia, + 'ementa': ordem.observacao, + 'votos_sim': votacao.numero_votos_sim, + 'votos_nao': votacao.numero_votos_nao, + 'abstencoes': votacao.numero_abstencoes, + 'observacao': votacao.observacao, + 'tipo_resultado': + votacao.tipo_resultado_votacao_id} + context.update({'votacao_existente': votacao_existente}) + + 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(): + current_url = request.get_full_path() + words = current_url.split('/') + materia_id = words[-2] + ordem_id = words[-1] + + 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() + + return self.form_valid(form) + else: + return self.form_invalid(form) + + def get_success_url(self): + pk = self.kwargs['pk'] + return reverse('sessaoplenaria:materiaordemdia_list', + kwargs={'pk': pk}) + class VotacaoNomimalView(FormMixin, sessao_crud.CrudDetailView): template_name = 'sessao/votacao/nominal.html' diff --git a/templates/sessao/materia_ordemdia_list.html b/templates/sessao/materia_ordemdia_list.html index 9dabe9a67..e4c333ebf 100644 --- a/templates/sessao/materia_ordemdia_list.html +++ b/templates/sessao/materia_ordemdia_list.html @@ -25,7 +25,7 @@ Matérias da Ordem do Dia {% else %} Matéria não votada
{% if m.tipo_votacao == 1 %} - Registrar Votação + Registrar Votação {% elif m.tipo_votacao == 2 %} Registrar Votação {% elif m.tipo_votacao == 3%} diff --git a/templates/sessao/votacao/simbolica.html b/templates/sessao/votacao/simbolica.html index 85cd033dd..d7b83faf9 100644 --- a/templates/sessao/votacao/simbolica.html +++ b/templates/sessao/votacao/simbolica.html @@ -8,49 +8,92 @@
Votação Simbólica - Matéria: + Matéria: {{materia.materia}}
- Ementa: - -
    -
  • Sim:
  • -
  • Não:
  • -
  • Abstenções:
  • -
- -
    -
  • - Anular Votação - -
  • - -
  • - A totalização inclui o voto do Presidente? - -
  • -
- -
    -
  • - Resultado da Votação - -
  • -
- -
    -
  • - Observações - -
  • -
+ Ementa: {{materia.ementa}} + + {% if votacao_existente %} + +
    +
  • Sim:
  • +
  • Não:
  • +
  • Abstenções:
  • +
+ +
    +
  • + Anular Votação + +
  • +
+ +
    +
  • + Resultado da Votação + +
  • +
+ +
    +
  • + Observações + +
  • +
+ + {% else %} + +
    +
  • Sim:
  • +
  • Não:
  • +
  • Abstenções:
  • +
+ +
    +
  • + Anular Votação + +
  • + +
  • + A totalização inclui o voto do Presidente? + +
  • +
+ +
    +
  • + Resultado da Votação + +
  • +
+ +
    +
  • + Observações + +
  • +
+ + {% endif %}