Browse Source

Arruma edição de legislatura

Signed-off-by: Luciano Almeida <lucianoalmeida@interlegis.leg.br>
pull/735/head
Luciano Almeida 8 years ago
parent
commit
a216540c84
  1. 63
      sapl/parlamentares/forms.py
  2. 17
      sapl/parlamentares/views.py
  3. 3
      sapl/templates/parlamentares/layouts.yaml

63
sapl/parlamentares/forms.py

@ -16,42 +16,65 @@ class ImageThumbnailFileInput(ClearableFileInput):
template_name = 'floppyforms/image_thumbnail.html'
def validar_datas_legislatura(eleicao, inicio, fim, pk=None):
# Verifica se data de eleição < inicio < fim
if inicio >= fim or eleicao >= inicio:
msg_error = _('A data início deve ser menor que a ' +
'data fim, e a data eleição deve ser ' +
'menor que a data início')
return [False, msg_error]
# Verifica se há alguma data cadastrada no intervalo de tempo desejado
if Legislatura.objects.filter(
data_inicio__range=[inicio, fim]).exclude(pk=pk).exists()\
or Legislatura.objects.filter(
data_fim__range=[inicio, fim]).exclude(pk=pk).exists():
msg_error = _('Já existe uma legislatura neste intervalo de datas')
return [False, msg_error]
# Verifica se há alguma outra data de eleição cadastrada
if Legislatura.objects.filter(
data_eleicao=eleicao).exclude(pk=pk).exists():
msg_error = _('Esta data de eleição já foi cadastrada')
return [False, msg_error]
return [True, '']
class LegislaturaForm(ModelForm):
class Meta:
model = Legislatura
exclude = []
widgets = {'numero': forms.HiddenInput(), }
class LegislaturaCreateForm(LegislaturaForm):
def clean(self):
cleaned_data = self.cleaned_data
data_inicio = cleaned_data['data_inicio']
data_fim = cleaned_data['data_fim']
data_eleicao = cleaned_data['data_eleicao']
if data_inicio >= data_fim or data_eleicao >= data_inicio:
raise ValidationError(_('A data início deve ser menor que a ' +
'data fim, e a data eleição deve ser ' +
'menor que a data início'))
eleicao = cleaned_data['data_eleicao']
inicio = cleaned_data['data_inicio']
fim = cleaned_data['data_fim']
valida_datas = validar_datas_legislatura(eleicao, inicio, fim)
if not valida_datas[0]:
raise ValidationError(valida_datas[1])
return cleaned_data
class LegislaturaCreateForm(LegislaturaForm):
class LegislaturaUpdateForm(LegislaturaCreateForm):
def clean(self):
cleaned_data = super(LegislaturaCreateForm, self).clean()
eleicao = cleaned_data['data_eleicao']
inicio = cleaned_data['data_inicio']
fim = cleaned_data['data_fim']
eleicao = cleaned_data['data_eleicao']
if Legislatura.objects.filter(
data_inicio__range=[inicio, fim]).exists() or \
Legislatura.objects.filter(
data_fim__range=[inicio, fim]).exists():
raise ValidationError(
_('Já existe uma legislatura neste intervalo de datas'))
if Legislatura.objects.filter(data_eleicao=eleicao):
raise ValidationError(
_('Esta data de eleição já foi cadastrada'))
valida_datas = validar_datas_legislatura(
eleicao, inicio, fim, pk=self.instance.pk)
if not valida_datas[0]:
raise ValidationError(valida_datas[1])
return cleaned_data

17
sapl/parlamentares/views.py

@ -3,7 +3,6 @@ from django.contrib import messages
from django.core.urlresolvers import reverse, reverse_lazy
from django.utils.translation import ugettext_lazy as _
from django.views.generic import FormView
from django.views.generic.edit import ModelFormMixin
from sapl.comissoes.models import Participacao
from sapl.crud.base import (RP_CHANGE, RP_DETAIL, RP_LIST, Crud, CrudAux,
@ -12,8 +11,9 @@ from sapl.crud.base import (RP_CHANGE, RP_DETAIL, RP_LIST, Crud, CrudAux,
from sapl.materia.models import Proposicao, Relatoria
from sapl.parlamentares.apps import AppConfig
from .forms import (FiliacaoForm, LegislaturaForm, LegislaturaCreateForm,
ParlamentarCreateForm, ParlamentarForm)
from .forms import (FiliacaoForm, LegislaturaCreateForm,
LegislaturaUpdateForm, ParlamentarCreateForm,
ParlamentarForm)
from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa,
Dependente, Filiacao, Frente, Legislatura, Mandato,
NivelInstrucao, Parlamentar, Partido, SessaoLegislativa,
@ -161,17 +161,8 @@ class LegislaturaCrud(CrudAux):
numero = 1
return {'numero': numero}
def form_valid(self, form):
self.object = form.save()
queryset = Legislatura.objects.all().order_by('data_inicio')
for i, obj in enumerate(queryset):
obj.numero = i + 1
obj.save()
return super(ModelFormMixin, self).form_valid(form)
class UpdateView(CrudAux.UpdateView):
form_class = LegislaturaForm
form_class = LegislaturaUpdateForm
class FiliacaoCrud(MasterDetailCrud):

3
sapl/templates/parlamentares/layouts.yaml

@ -5,8 +5,7 @@ CargoMesa:
Legislatura:
{% trans 'Legislatura' %}:
- numero:12
- data_eleicao data_inicio data_fim
- numero data_eleicao data_inicio data_fim
Coligacao:
{% trans 'Coligação' %}:

Loading…
Cancel
Save