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

206
sapl/sessao/views.py

@ -42,7 +42,7 @@ from .forms import (AdicionarVariasMateriasFilterSet, BancadaForm, BlocoForm,
MesaForm, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet, MesaForm, OradorExpedienteForm, OradorForm, PautaSessaoFilterSet,
PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet, PresencaForm, ResumoOrdenacaoForm, SessaoPlenariaFilterSet,
SessaoPlenariaForm, VotacaoEditForm, VotacaoForm, SessaoPlenariaForm, VotacaoEditForm, VotacaoForm,
VotacaoNominalForm, VotacaoFormBloco) VotacaoNominalForm)
from .models import (Bancada, Bloco, CargoBancada, CargoMesa, ExpedienteMateria, from .models import (Bancada, Bloco, CargoBancada, CargoMesa, ExpedienteMateria,
ExpedienteSessao, JustificativaAusencia, OcorrenciaSessao, IntegranteMesa, ExpedienteSessao, JustificativaAusencia, OcorrenciaSessao, IntegranteMesa,
MateriaLegislativa, Orador, OradorExpediente, OrdemDia, MateriaLegislativa, Orador, OradorExpediente, OrdemDia,
@ -3319,8 +3319,8 @@ class VotacaoEmBlocoOrdemDia(ListView):
def get_queryset(self): def get_queryset(self):
kwargs = self.kwargs kwargs = self.kwargs
return OrdemDia.objects.filter(sessao_plenaria_id= return OrdemDia.objects.filter(sessao_plenaria_id=kwargs['pk'],
kwargs['pk']) resultado='')
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super(VotacaoEmBlocoOrdemDia, self).get_context_data(**kwargs) context = super(VotacaoEmBlocoOrdemDia, self).get_context_data(**kwargs)
@ -3340,157 +3340,87 @@ class VotacaoEmBlocoView(TemplateView):
""" """
template_name = 'sessao/votacao/votacao_votacaoembloco.html' template_name = 'sessao/votacao/votacao_votacaoembloco.html'
form_class = VotacaoFormBloco
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def get_initial(self): def get_initial(self):
import ipdb; ipdb.set_trace() pass
return {'resultado_votacao': TipoResultadoVotacao.objects.all()}
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
import ipdb; ipdb.set_trace() pass
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()
materia = {'materia': ordem.materia, 'ementa': ordem.materia.ementa} def post(self, request, *args, **kwargs):
context.update({'votacao_titulo': titulo, if not 'context' in locals():
'materia': materia, context = {}
'total_presentes': qtde_presentes,
'resultado_votacao': TipoResultadoVotacao.objects.all()
})
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') context.update({'tipo_votacao': tipo_votacao,
tipo_votacao = '1' # RETIRAR 'votacao_titulo': titulo,
if tipo_votacao == '1': 'ordens': ordens,
marcadas = request.POST.getlist('materia_id_1') 'total_presentes': qtde_presentes,
titulo = "Votação Simbólica" 'resultado_votacao': TipoResultadoVotacao.objects.all()})
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})
if 'salvar-votacao' in request.POST: 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(): if form.is_valid():
form.save() qtde_votos = (int(request.POST['votos_sim']) +
# pass int(request.POST['votos_nao']) +
context.update({'form': form}) 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) 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): def get_tipos_votacao(self):
for tipo in TipoResultadoVotacao.objects.all(): for tipo in TipoResultadoVotacao.objects.all():

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

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

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

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

Loading…
Cancel
Save