Browse Source

Finish votação

pull/7/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
df0099e00e
  1. 1
      compilacao/templatetags/compilacao_filters.py
  2. 18
      sessao/urls.py
  3. 198
      sessao/views.py
  4. 2
      templates/sessao/votacao/nominal.html
  5. 54
      templates/sessao/votacao/simbolica.html
  6. 55
      templates/sessao/votacao/simbolica_edit.html
  7. 10
      templates/sessao/votacao/votacao.html
  8. 2
      templates/sessao/votacao/votacao_edit.html

1
compilacao/templatetags/compilacao_filters.py

@ -4,7 +4,6 @@ from django.db.models import Q
from compilacao.models import Dispositivo
register = template.Library()

18
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<pk>\d+)/expediente$',
@ -55,13 +55,13 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [
url(r'^(?P<pk>\d+)/matordemdia/votnom/edit/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoNominalEditView.as_view(), name='votacaonominaledit'),
url(r'^(?P<pk>\d+)/matordemdia/votsec/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoSecretaView.as_view(), name='votacaosecreta'),
VotacaoView.as_view(), name='votacaosecreta'),
url(r'^(?P<pk>\d+)/matordemdia/votsec/view/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoSecretaEditView.as_view(), name='votacaosecretaedit'),
VotacaoEditView.as_view(), name='votacaosecretaedit'),
url(r'^(?P<pk>\d+)/matordemdia/votsimb/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoSimbolicaView.as_view(), name='votacaosimbolica'),
VotacaoView.as_view(), name='votacaosimbolica'),
url(r'^(?P<pk>\d+)/matordemdia/votsimb/view/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoSimbolicaEditView.as_view(), name='votacaosimbolicaedit'),
VotacaoEditView.as_view(), name='votacaosimbolicaedit'),
]
sessao_urls = urlpatterns_sessao, sessao_crud.namespace, sessao_crud.namespace

198
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(
'&nbsp;', ' ', strip_tags(votacao.observacao)),
'tipo_resultado':
votacao.tipo_resultado_votacao_id}
context.update({'votacao': votacao_existente})
'&nbsp;', ' ', 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(
'&nbsp;', ' ', 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(
'&nbsp;', ' ', strip_tags(ordem.observacao))}
'&nbsp;', ' ', 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(
'&nbsp;', ' ', strip_tags(ordem.observacao))}
'&nbsp;', ' ', strip_tags(ordem.observacao))}
context.update({'materia': materia})
votacao_existente = {'observacao': sub(
'&nbsp;', ' ', strip_tags(votacao.observacao)),
'tipo_resultado':
votacao.tipo_resultado_votacao_id}
'&nbsp;', ' ', strip_tags(votacao.observacao)),
'tipo_resultado':
votacao.tipo_resultado_votacao_id}
context.update({'votacao': votacao_existente})
return self.render_to_response(context)

2
templates/sessao/votacao/nominal.html

@ -20,7 +20,6 @@
<li>{{parlamentar.nome_parlamentar}}</li>
<li>
<select id="voto_parlamentar" name="voto_parlamentar">
<option value=""></option>
<option value="sim:{{parlamentar.id}}">Sim</option>
<option value="nao:{{parlamentar.id}}">Não</option>
<option value="abstencao:{{parlamentar.id}}">Abstenção</option>
@ -35,7 +34,6 @@
<li>
Resultado da Votação
<select id="resultado_votacao" name="resultado_votacao">
<option value="" selected></option>
{% for tipo in view.get_tipos_votacao %}
<option value="{{tipo.id}}">{{tipo.nome}}</option>
{% endfor %}

54
templates/sessao/votacao/simbolica.html

@ -1,54 +0,0 @@
{% extends "sessao/sessaoplenaria_detail.html" %}
{% load i18n %}
{% block detail_content %}
<form method="post">
{% csrf_token %}
<fieldset>
<legend>Votação Simbólica</legend>
<div>
Matéria: {{materia.materia|safe}}
<br />
Ementa: {{materia.ementa|safe}}
</div>
<br />
<ul class="small-block-grid-3 medium-block-grid-3 large-block-grid-3">
<li>Sim: <input type="text" id="votos_sim" name="votos_sim" value=""/></li>
<li>Não: <input type="text" id="votos_nao" name="votos_nao" value=""/></li>
<li>Abstenções: <input type="text" id="abstencoes" name="abstencoes" value=""/></li>
</ul>
<ul class="small-block-grid-2 medium-block-grid-2 large-block-grid-2">
<li>
A totalização inclui o voto do Presidente?
<select id="voto_presidente" name="voto_presidente">
<option value="1">Sim</option>
<option value="0" selected>Não</option>
</select>
</li>
<li>
Resultado da Votação
<select id="resultado_votacao" name="resultado_votacao">
<option value="" selected></option>
{% for tipo in view.get_tipos_votacao %}
<option value="{{tipo.id}}">{{tipo.nome}}</option>
{% endfor %}
</select>
</li>
</ul>
<ul class="small-block-grid-1 medium-block-grid-1 large-block-grid-1">
<li>
Observações
<textarea id="observacao" name="observacao" cols="10" rows="10"></textarea>
</li>
</ul>
<br /><br />
<input type="submit" value="Salvar" />
</fieldset>
</form>
{% endblock detail_content %}

55
templates/sessao/votacao/simbolica_edit.html

@ -1,55 +0,0 @@
{% extends "sessao/sessaoplenaria_detail.html" %}
{% load i18n %}
{% block detail_content %}
<form method="post">
{% csrf_token %}
<fieldset>
<legend>Votação Simbólica</legend>
<div>
Matéria: {{materia.materia|safe}}
<br />
Ementa: {{materia.ementa|safe}}
</div>
<br />
<ul class="small-block-grid-1 medium-block-grid-1 large-block-grid-1">
<li>
Anular Votação
<select id="anular_votacao" name="anular_votacao">
<option value="1">Sim</option>
<option value="0" selected>Não</option>
</select>
</li>
</ul>
<ul class="small-block-grid-1 medium-block-grid-1 large-block-grid-1">
<li>
Resultado da Votação:
{% for tipo in view.get_tipos_votacao %}
{% if votacao.tipo_resultado == tipo.id %}
<b>{{ tipo.nome }}</b>
{% endif %}
{% endfor %}
</li>
</ul>
<ul class="small-block-grid-1 medium-block-grid-1 large-block-grid-1">
<li>
Observações
<textarea id="observacao" name="observacao" cols="10" rows="10">{{votacao.observacao|safe}}</textarea>
</li>
</ul>
<br /><br />
<input type="submit" value="Salvar" />
</fieldset>
</form>
{% endblock detail_content %}
{% block foot_js %}
<script language="JavaScript">
document.getElementById("observacao").disabled = true;
</script>
{% endblock %}

10
templates/sessao/votacao/secreta.html → templates/sessao/votacao/votacao.html

@ -6,11 +6,14 @@
{% csrf_token %}
<fieldset>
<legend>Votação Secreta</legend>
<legend>{{votacao_titulo}}</legend>
<div>
Matéria: {{materia.materia|safe}}
<b>Matéria:</b> {{materia.materia|safe}}
<br />
Ementa: {{materia.ementa|safe}}
<b>Ementa:</b> {{materia.ementa|safe}}
<br />
<br />
<b>Total presentes:</b> {{total_presentes}} (com presidente)
</div>
<br />
@ -32,7 +35,6 @@
<li>
Resultado da Votação
<select id="resultado_votacao" name="resultado_votacao">
<option value="" selected></option>
{% for tipo in view.get_tipos_votacao %}
<option value="{{tipo.id}}">{{tipo.nome}}</option>
{% endfor %}

2
templates/sessao/votacao/secreta_edit.html → templates/sessao/votacao/votacao_edit.html

@ -6,7 +6,7 @@
{% csrf_token %}
<fieldset>
<legend>Votação Secreta</legend>
<legend>{{votacao_titulo}}</legend>
<div>
Matéria: {{materia.materia|safe}}
<br />
Loading…
Cancel
Save