Browse Source

adicionado salvamento da votacao

pull/2416/head
Cesar Carvalho 7 years ago
parent
commit
88cb7cec3a
  1. 39
      sapl/sessao/forms.py
  2. 206
      sapl/sessao/views.py
  3. 30
      sapl/templates/sessao/votacao/votacao_bloco_expediente.html
  4. 12
      sapl/templates/sessao/votacao/votacao_votacaoembloco.html

39
sapl/sessao/forms.py

@ -26,7 +26,7 @@ from sapl.utils import (RANGE_DIAS_MES, RANGE_MESES,
from .models import (Bancada, Bloco, ExpedienteMateria, JustificativaAusencia,
Orador, OradorExpediente, OrdemDia, SessaoPlenaria,
SessaoPlenariaPresenca, TipoJustificativa, TipoResultadoVotacao,
OcorrenciaSessao)
OcorrenciaSessao, RegistroVotacao)
def recupera_anos():
@ -429,39 +429,16 @@ class VotacaoForm(forms.Form):
votos_nao = forms.CharField(label='Não')
abstencoes = forms.CharField(label='Abstenções')
total_votos = forms.CharField(required=False, label='total')
observacao = forms.CharField(required=False , label='Observação')
resultado_votacao = forms.CharField(label='Resultado da Votação')
def save(self, commit=False):
votacao = super(VotacaoForm, self).save(commit)
votacao.materia = self.cleaned_data['materia']
votacao.save()
return votacao
class VotacaoFormBloco(forms.Form):
votos_sim = forms.CharField(label='Sim')
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.ModelChoiceField(label='Resultado da Votação',
required=True,
queryset=TipoResultadoVotacao.objects.all())
# def save(self, commit=False):
# #TODO Verificar se esse códido é utilizado
def save(self, commit=False):
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()
# votacao = super(VotacaoForm, self).save(commit)
# votacao.materia = self.cleaned_data['materia']
# votacao.save()
# return votacao
class VotacaoNominalForm(forms.Form):

206
sapl/sessao/views.py

@ -42,7 +42,7 @@ from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, BlocoForm,
MesaForm, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet,
PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
SessaoPlenariaForm, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm, VotacaoFormBloco)
VotacaoNominalForm)
from .models import (Bancada, Bloco, CargoBancada, CargoMesa, ExpedienteMateria,
ExpedienteSessao, JustificativaAusencia, OcorrenciaSessao, IntegranteMesa,
MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
@ -3319,8 +3319,8 @@ class VotacaoEmBlocoOrdemDia(ListView):
def get_queryset(self):
kwargs = self.kwargs
return OrdemDia.objects.filter(sessao_plenaria_id=
kwargs['pk'])
return OrdemDia.objects.filter(sessao_plenaria_id=kwargs['pk'],
resultado='')
def get_context_data(self, **kwargs):
context = super(VotacaoEmBlocoOrdemDia, self).get_context_data(**kwargs)
@ -3340,157 +3340,87 @@ class VotacaoEmBlocoView(TemplateView):
"""
template_name = 'sessao/votacao/votacao_votacaoembloco.html'
form_class = VotacaoFormBloco
logger = logging.getLogger(__name__)
def get_initial(self):
import ipdb; ipdb.set_trace()
return {'resultado_votacao': TipoResultadoVotacao.objects.all()}
pass
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()
# # 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")
# ordem_id = kwargs['oid']
ordem = OrdemDia.objects.get(id=ordem_id)
qtde_presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.object.id).count()
pass
materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa}
context.update({'votacao_titulo': titulo,
'materia': materia,
'total_presentes': qtde_presentes,
'resultado_votacao': TipoResultadoVotacao.objects.all()
})
def post(self, request, *args, **kwargs):
if not 'context' in locals():
context = {}
import ipdb; ipdb.set_trace()
if ('ordem_id_1' in request.POST) or ('ordem_id_2' in request.POST):
tipo_votacao = request.POST.get('tipo_votacao')
if tipo_votacao == '1':
marcadas = request.POST.getlist('ordem_id_1')
titulo = "Votação Simbólica"
elif tipo_votacao == '2':
marcadas = request.POST.getlist('ordem_id_2')
titulo = "Votação Nominal"
return self.render_to_response(context)
ordens = OrdemDia.objects.filter(id__in=marcadas)
def post(self, request, *args, **kwargs):
qtde_presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=self.kwargs['pk']).count()
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"
context = {}
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})
context.update({'votacao_titulo': titulo,
'materias': materias,
'resultado_votacao': TipoResultadoVotacao.objects.all(),
'total_presentes': qtde_presentes})
context.update({'tipo_votacao': tipo_votacao,
'votacao_titulo': titulo,
'ordens': ordens,
'total_presentes': qtde_presentes,
'resultado_votacao': TipoResultadoVotacao.objects.all()})
if 'salvar-votacao' in request.POST:
form = VotacaoFormBloco(request.POST)
form = VotacaoForm(request.POST)
ordens = OrdemDia.objects.filter(id__in=request.POST['ordens'])
qtde_presentes = int(request.POST['total_presentes'])
if form.is_valid():
form.save()
# pass
context.update({'form': form})
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:
form._errors["total_votos"] = ErrorList([u""])
return self.render_to_response(context)
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 = ordem.materia
votacao.ordem = ordem
resultado = TipoResultadoVotacao.objects.get(
id=request.POST['resultado_votacao'])
votacao.tipo_resultado_votacao = resultado
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(ordem.materia.id, ordem.id) + str(e))
return self.form_invalid(form)
else:
ordem.resultado = resultado.nome
ordem.votacao_aberta = False
ordem.save()
return HttpResponseRedirect(self.get_success_url())
if 'cancelar-votacao' in request.POST:
ordens = OrdemDia.objects.filter(id__in=request.POST['ordens'])
for ordem in ordens:
ordem.votacao_aberta = False
ordem.save()
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.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():

30
sapl/templates/sessao/votacao/votacao_bloco_expediente.html

@ -64,16 +64,16 @@
</label>
</div>
{% for m in ordem_dia %}
<tr class="{% if m.tipo_votacao == 1 %}Simbolica{% else %}Nominal{% endif %}" {% if m.tipo_votacao == 2 %} style="display:none;" {% endif %}>
{% for o in ordem_dia %}
<tr class="{% if o.tipo_votacao == 1 %}Simbolica{% else %}Nominal{% endif %}" {% if o.tipo_votacao == 2 %} style="display:none;" {% endif %}>
<td>
<input type="checkbox" name="materia_id_{{m.tipo_votacao}}" id="{{m.id}}" value="{{m.id}}" {% if check %} checked {% endif %}>
<strong><a href="{% url 'sapl.materia:materialegislativa_detail' m.id %}">{{m.materia.tipo.sigla}} {{m.materia.numero}}/{{m.materia.ano}} - {{m.materia.tipo}}</strong></a></br>
{% if m.materia.numeracao_set.last %}
<strong>Processo:</strong> &nbsp; {{m.materia.numeracao_set.last}}</br>
<input type="checkbox" name="ordem_id_{{o.tipo_votacao}}" id="{{o.id}}" value="{{o.id}}" {% if check %} checked {% endif %}>
<strong><a href="{% url 'sapl.materia:materialegislativa_detail' o.id %}">{{o.materia.tipo.sigla}} {{o.materia.numero}}/{{o.materia.ano}} - {{o.materia.tipo}}</strong></a></br>
{% if o.materia.numeracao_set.last %}
<strong>Processo:</strong> &nbsp; {{o.materia.numeracao_set.last}}</br>
{% endif %}
<strong>Autor:</strong>
{% for a in m.materia.autoria_set.all %}
{% for a in o.materia.autoria_set.all %}
{% if not forloop.first %}
, &nbsp;&nbsp; {{a.autor|default_if_none:""}}
{% else %}
@ -81,20 +81,20 @@
{% endif %}
{% endfor %}
</br>
{% if m.materia.numero_protocolo %}
<strong>Protocolo:</strong> &nbsp; {{m.materia.numero_protocolo}}</br>
{% if o.materia.numero_protocolo %}
<strong>Protocolo:</strong> &nbsp; {{o.materia.numero_protocolo}}</br>
{% endif %}
{% if m.materia.tramitacao_set.last %}
{% if m.materia.tramitacao_set.last.turno %}
{% if o.materia.tramitacao_set.last %}
{% if o.materia.tramitacao_set.last.turno %}
<strong>Turno:</strong>&nbsp;
{% for t in turno_choices %}
{% if t.0 == m.materia.tramitacao_set.last.turno %}
{% if t.0 == o.materia.tramitacao_set.last.turno %}
{{ t.1 }}
{% endif %}
{% endfor %}</br>
{% endif %}
{% endif %}
<strong>Ementa:</strong>&nbsp;{{ m.ementa|safe }}</br>
<strong>Ementa:</strong>&nbsp;{{ o.ementa|safe }}</br>
<p></p>
</td>
</tr>
@ -126,12 +126,12 @@
<script language="JavaScript">
function checkAll(event) {
$('[name=materia_id_1]').each(function() {
$('[name=ordem_id_1]').each(function() {
$(this).prop('unchecked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});
$('[name=materia_id_2]').each(function() {
$('[name=ordem_id_2]').each(function() {
$(this).prop('unchecked', event.target.checked ? 'checked': null);
$(this).trigger('click');
});

12
sapl/templates/sessao/votacao/votacao_votacaoembloco.html

@ -26,15 +26,17 @@
{% endif %}
<div>
{% for materia in materias %}
<input type="hidden" id="materias" name="materias" value="{{materia.materia.id}}">
<b>Matéria:</b> {{materia.materia|safe}}
{{tipo_votacao}}
<input type="hidden" id="tipo_votacao" name="tipo_votacao" value="{{tipo_votacao}}">
{% for o in ordens %}
<input type="hidden" id="ordens" name="ordens" value="{{o.id}}">
<b>Matéria:</b> {{o.materia|safe}}
<br />
<b>Ementa:</b> {{materia.ementa|safe}}
<b>Ementa:</b> {{o.materia.ementa|safe}}
<br /> <br />
{% endfor %}
<b>Total presentes:</b> {{total_presentes}} (com presidente)
<input type="hidden" id="total_votos" name="total_votos">
<input type="hidden" id="total_presentes" name="total_presentes" value="{{total_presentes}}">
</div>
<br />

Loading…
Cancel
Save