Browse Source

Otimizações no código

pull/1174/head
Eduardo Calil 9 years ago
parent
commit
dcc07edf35
  1. 21
      sapl/sessao/migrations/0004_votonominal_registro_votacao.py
  2. 34
      sapl/sessao/models.py
  3. 116
      sapl/sessao/views.py

21
sapl/sessao/migrations/0004_votonominal_registro_votacao.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.7 on 2017-06-01 11:06
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('sessao', '0003_resumoordenacao'),
]
operations = [
migrations.AddField(
model_name='votonominal',
name='registro_votacao',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='sessao.RegistroVotacao'),
),
]

34
sapl/sessao/models.py

@ -414,38 +414,26 @@ class RegistroVotacao(models.Model):
class VotoParlamentar(models.Model): # RegistroVotacaoParlamentar
votacao = models.ForeignKey(RegistroVotacao, on_delete=models.PROTECT)
parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
# XXX change to restricted choices
voto = models.CharField(max_length=10)
class Meta:
verbose_name = _('Registro de Votação de Parlamentar')
verbose_name_plural = _('Registros de Votações de Parlamentares')
def __str__(self):
return _('Votação: %(votacao)s - Parlamentar: %(parlamentar)s') % {
'votacao': self.votacao, 'parlamentar': self.parlamentar}
@reversion.register()
class VotoNominal(models.Model):
parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT)
voto = models.CharField(verbose_name=_('Voto'), max_length=10)
sessao = models.ForeignKey(SessaoPlenaria, on_delete=models.PROTECT)
materia = models.ForeignKey(MateriaLegislativa, on_delete=models.PROTECT)
user = models.ForeignKey(get_settings_auth_user_model(),
on_delete=models.PROTECT)
ip = models.CharField(verbose_name=_('IP'), max_length=30)
on_delete=models.PROTECT,
null=True,
black=True)
ip = models.CharField(verbose_name=_('IP'),
max_length=30,
null=True,
black=True)
data_hora = models.DateTimeField(
verbose_name=_('Data/Hora'), auto_now_add=True)
class Meta:
verbose_name = _('Registro do Voto do Parlamentar')
verbose_name_plural = _('Registros dos Votos dos Parlamentares')
verbose_name = _('Registro de Votação de Parlamentar')
verbose_name_plural = _('Registros de Votações de Parlamentares')
def __str__(self):
return '%s - %s' % (self.parlamentar.nome_parlamentar, self.voto)
return _('Votação: %(votacao)s - Parlamentar: %(parlamentar)s') % {
'votacao': self.votacao, 'parlamentar': self.parlamentar}
@reversion.register()

116
sapl/sessao/views.py

@ -1568,8 +1568,40 @@ class VotacaoView(SessaoPermissionMixin):
kwargs={'pk': pk})
def fechar_votacao_materia(sessao, materia, ordem=None, expediente=None):
def fechar_votacao_materia(presentes, ordem=None, expediente=None):
if ordem:
for p in presentes:
try:
voto_nominal = VotoNominal.objects.get(
parlamentar=p.parlamentar,
registro_votacao__ordem=ordem)
except ObjectDoesNotExist:
pass
else:
registro_votacao = voto_nominal.registro_votacao
registro_votacao.delete()
voto_nominal.delete()
ordem.votacao_aberta = False
ordem.save()
elif expediente:
for p in presentes:
try:
voto_nominal = VotoNominal.objects.get(
parlamentar=p.parlamentar,
registro_votacao__expediente=expediente)
except ObjectDoesNotExist:
pass
else:
registro_votacao = voto_nominal.registro_votacao
registro_votacao.delete()
voto_nominal.delete()
expediente.votacao_aberta = False
expediente.save()
class VotacaoNominalView(SessaoPermissionMixin):
@ -1595,28 +1627,20 @@ class VotacaoNominalView(SessaoPermissionMixin):
self.object = self.get_object()
ordem_id = kwargs['mid']
ordem = OrdemDia.objects.get(id=ordem_id)
try:
ordem = OrdemDia.objects.get(id=ordem_id)
except ObjectDoesNotExist:
raise Http404()
form = VotacaoNominalForm(request.POST)
if 'cancelar-votacao' in request.POST:
sessao = self.object
materia = ordem.materia
presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=expediente.sessao_plenaria_id)
for p in presentes:
try:
voto = VotoNominal.objects.get(
parlamentar=p.parlamentar,
sessao=self.object.pk,
materia=materia)
except ObjectDoesNotExist:
pass
else:
voto.delete()
sessao_plenaria_id=ordem.sessao_plenaria_id)
fechar_votacao_materia(presentes, ordem=ordem)
ordem.votacao_aberta = False
ordem.save()
return self.form_valid(form)
if form.is_valid():
@ -1642,7 +1666,14 @@ class VotacaoNominalView(SessaoPermissionMixin):
elif(voto == 'Não Votou'):
nao_votou += 1
# Caso todas as opções sejam 'Não votou', fecha a votação
if nao_votou == len(request.POST.getlist('voto_parlamentar')):
presentes = PresencaOrdemDia.objects.filter(
sessao_plenaria_id=ordem.sessao_plenaria_id)
fechar_votacao_materia(presentes, ordem=ordem)
return self.form_valid(form)
votacao = RegistroVotacao.objects.filter(
materia_id=materia_id,
@ -1699,9 +1730,9 @@ class VotacaoNominalView(SessaoPermissionMixin):
if parlamentar in presentes:
try:
voto = VotoNominal.objects.get(
parlamentar=parlamentar,
sessao=self.object.pk,
materia=materia)
parlamentar=parlamentar,
sessao=self.object.pk,
materia=materia)
except ObjectDoesNotExist:
yield [parlamentar, None]
else:
@ -1796,6 +1827,8 @@ class VotacaoNominalEditView(SessaoPermissionMixin):
ordem.votacao_aberta = False
ordem.save()
registro.delete()
try:
votacao = VotoParlamentar.objects.filter(
votacao_id=registro.id)
@ -1839,30 +1872,20 @@ class VotacaoNominalExpedienteView(SessaoPermissionMixin):
self.object = self.get_object()
expediente_id = kwargs['mid']
expediente = ExpedienteMateria.objects.get(id=expediente_id)
try:
expediente = ExpedienteMateria.objects.get(id=expediente_id)
except ObjectDoesNotExist:
raise Http404()
form = VotacaoNominalForm(request.POST)
if 'cancelar-votacao' in request.POST:
sessao = self.object
expediente_id = kwargs['mid']
expediente = ExpedienteMateria.objects.get(id=expediente_id)
materia = expediente.materia
presentes = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=expediente.sessao_plenaria_id)
for p in presentes:
try:
voto = VotoNominal.objects.get(
parlamentar=p.parlamentar,
sessao=self.object.pk,
materia=materia)
except ObjectDoesNotExist:
pass
else:
voto.delete()
expediente.votacao_aberta = False
expediente.save()
fechar_votacao_materia(presentes, expediente=expediente)
return self.form_valid(form)
if form.is_valid():
@ -1888,6 +1911,23 @@ class VotacaoNominalExpedienteView(SessaoPermissionMixin):
elif(voto == 'Não Votou'):
nao_votou += 1
# Caso todas as opções sejam 'Não votou', fecha a votação
if nao_votou == len(request.POST.getlist('voto_parlamentar')):
presentes = SessaoPlenariaPresenca.objects.filter(
sessao_plenaria_id=expediente.sessao_plenaria_id)
fechar_votacao_materia(presentes, expediente=expediente)
return self.form_valid(form)
votacao = RegistroVotacao.objects.filter(
materia_id=materia_id,
expediente=expediente)
# Remove todas as votação desta matéria, caso existam
for v in votacao:
v.delete()
try:
votacao = RegistroVotacao()
votacao.numero_votos_sim = votos_sim

Loading…
Cancel
Save