Browse Source

Add Votação Secreta

pull/7/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
parent
commit
b507d32ead
  1. 12
      sessao/urls.py
  2. 140
      sessao/views.py
  3. 8
      templates/sessao/materia_ordemdia_list.html
  4. 10
      templates/sessao/votacao/nominal.html
  5. 0
      templates/sessao/votacao/nominal_edit.html
  6. 23
      templates/sessao/votacao/secreta.html
  7. 55
      templates/sessao/votacao/secreta_edit.html

12
sessao/urls.py

@ -1,5 +1,4 @@
from django.conf.urls import include, url
from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView,
ExpedienteOrdemDiaView, ExpedienteView,
ExplicacaoDelete, ExplicacaoEdit, ExplicacaoView,
@ -8,7 +7,8 @@ from sessao.views import (EditExpedienteOrdemDiaView, EditMateriaOrdemDiaView,
OradorExpedienteDelete, OradorExpedienteEdit,
OradorExpedienteView, PainelView,
PresencaOrdemDiaView, PresencaView, ResumoView,
VotacaoNomimalView, VotacaoSecretaView,
VotacaoNomimalEditView, VotacaoNomimalView,
VotacaoSecretaEditView, VotacaoSecretaView,
VotacaoSimbolicaEditView, VotacaoSimbolicaView,
sessao_crud, tipo_expediente_crud,
tipo_resultado_votacao_crud, tipo_sessao_crud)
@ -50,10 +50,14 @@ urlpatterns_sessao = sessao_crud.urlpatterns + [
ExplicacaoDelete.as_view(), name='explicacaoexcluir'),
url(r'^(?P<pk>\d+)/explicacao/editar/(?P<oid>\d+)$',
ExplicacaoEdit.as_view(), name='explicacaoeditar'),
url(r'^(?P<pk>\d+)/matordemdia/votacaonominal/(?P<oid>\d+)$',
url(r'^(?P<pk>\d+)/matordemdia/votnom/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoNomimalView.as_view(), name='votacaonominal'),
url(r'^(?P<pk>\d+)/matordemdia/votacaosecreta/(?P<oid>\d+)$',
url(r'^(?P<pk>\d+)/matordemdia/votnom/edit/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoNomimalEditView.as_view(), name='votacaonominaledit'),
url(r'^(?P<pk>\d+)/matordemdia/votsec/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoSecretaView.as_view(), name='votacaosecreta'),
url(r'^(?P<pk>\d+)/matordemdia/votsec/view/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoSecretaEditView.as_view(), name='votacaosecretaedit'),
url(r'^(?P<pk>\d+)/matordemdia/votsimb/(?P<oid>\d+)/(?P<mid>\d+)$',
VotacaoSimbolicaView.as_view(), name='votacaosimbolica'),
url(r'^(?P<pk>\d+)/matordemdia/votsimb/view/(?P<oid>\d+)/(?P<mid>\d+)$',

140
sessao/views.py

@ -1311,10 +1311,82 @@ class VotacaoSimbolicaView(FormMixin, sessao_crud.CrudDetailView):
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]
materia_id = kwargs['oid']
ordem_id = kwargs['mid']
qtde_presentes = len(SessaoPlenariaPresenca.objects.filter(
sessao_plen_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()
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 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)
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(SessaoPlenariaPresenca.objects.filter(
sessao_plen_id=self.object.id))
@ -1363,6 +1435,62 @@ class VotacaoSimbolicaView(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 VotacaoNomimalView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/votacao/nominal.html'
@ -1383,5 +1511,5 @@ class VotacaoNomimalView(FormMixin, sessao_crud.CrudDetailView):
yield parlamentar
class VotacaoSecretaView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/votacao/secreta.html'
class VotacaoNomimalEditView(FormMixin, sessao_crud.CrudDetailView):
template_name = 'sessao/votacao/nominal_edit.html'

8
templates/sessao/materia_ordemdia_list.html

@ -24,18 +24,18 @@ Matérias da Ordem do Dia
{% if m.tipo_votacao == 1 %}
<b><a href="{% url 'sessaoplenaria:votacaosimbolicaedit' m.pk m.oid m.ordem_id %}">{{m.resultado}}</a></b>
{% elif m.tipo_votacao == 2 %}
<b><a href="{% url 'sessaoplenaria:votacaonominaledit' m.pk m.oid %}">{{m.resultado}}</a></b>
<b><a href="{% url 'sessaoplenaria:votacaonominaledit' m.pk m.oid m.ordem_id %}">{{m.resultado}}</a></b>
{% elif m.tipo_votacao == 3%}
<b><a href="{% url 'sessaoplenaria:votacaosecretaedit' m.pk m.oid %}">{{m.resultado}}</a></b>
<b><a href="{% url 'sessaoplenaria:votacaosecretaedit' m.pk m.oid m.ordem_id %}">{{m.resultado}}</a></b>
{% endif %}
{% else %}
Matéria não votada <br />
{% if m.tipo_votacao == 1 %}
<b><a href="{% url 'sessaoplenaria:votacaosimbolica' m.pk m.oid m.ordem_id %}">Registrar Votação</a></b>
{% elif m.tipo_votacao == 2 %}
<b><a href="{% url 'sessaoplenaria:votacaonominal' m.pk m.oid %}">Registrar Votação</a></b>
<b><a href="{% url 'sessaoplenaria:votacaonominal' m.pk m.oid m.ordem_id %}">Registrar Votação</a></b>
{% elif m.tipo_votacao == 3%}
<b><a href="{% url 'sessaoplenaria:votacaosecreta' m.pk m.oid %}">Registrar Votação</a></b>
<b><a href="{% url 'sessaoplenaria:votacaosecreta' m.pk m.oid m.ordem_id %}">Registrar Votação</a></b>
{% endif %}
{% endif %}
</li>

10
templates/sessao/votacao/nominal.html

@ -30,16 +30,6 @@
</ul>
</fieldset>
<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

0
templates/sessao/votacao/nominal_edit.html

23
templates/sessao/votacao/secreta.html

@ -7,10 +7,12 @@
<fieldset>
<legend>Votação Secreta</legend>
Matéria:
<div>
Matéria: {{materia.materia|safe}}
<br />
Ementa: {{materia.ementa|safe}}
</div>
<br />
Ementa:
<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>
@ -19,14 +21,6 @@
</ul>
<ul class="small-block-grid-2 medium-block-grid-2 large-block-grid-2">
<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>
<li>
A totalização inclui o voto do Presidente?
<select id="voto_presidente" name="voto_presidente">
@ -34,13 +28,14 @@
<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
<select id="resultado_votacao" name="resultado_votacao">
<option value=""></option>
<option value="" selected></option>
{% for tipo in view.get_tipos_votacao %}
<option value="{{tipo.id}}">{{tipo.nome}}</option>
{% endfor %}
</select>
</li>
</ul>

55
templates/sessao/votacao/secreta_edit.html

@ -0,0 +1,55 @@
{% extends "sessao/sessaoplenaria_detail.html" %}
{% load i18n %}
{% block detail_content %}
<form method="post">
{% csrf_token %}
<fieldset>
<legend>Votação Secreta</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 %}
Loading…
Cancel
Save