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' 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 LegislaturaForm(ModelForm):
class Meta: class Meta:
model = Legislatura model = Legislatura
exclude = [] exclude = []
widgets = {'numero': forms.HiddenInput(), }
class LegislaturaCreateForm(LegislaturaForm):
def clean(self): def clean(self):
cleaned_data = self.cleaned_data cleaned_data = self.cleaned_data
data_inicio = cleaned_data['data_inicio'] eleicao = cleaned_data['data_eleicao']
data_fim = cleaned_data['data_fim'] inicio = cleaned_data['data_inicio']
data_eleicao = cleaned_data['data_eleicao'] fim = cleaned_data['data_fim']
if data_inicio >= data_fim or data_eleicao >= data_inicio: valida_datas = validar_datas_legislatura(eleicao, inicio, fim)
raise ValidationError(_('A data início deve ser menor que a ' + if not valida_datas[0]:
'data fim, e a data eleição deve ser ' + raise ValidationError(valida_datas[1])
'menor que a data início'))
return cleaned_data return cleaned_data
class LegislaturaCreateForm(LegislaturaForm): class LegislaturaUpdateForm(LegislaturaCreateForm):
def clean(self): def clean(self):
cleaned_data = super(LegislaturaCreateForm, self).clean() cleaned_data = super(LegislaturaCreateForm, self).clean()
eleicao = cleaned_data['data_eleicao']
inicio = cleaned_data['data_inicio'] inicio = cleaned_data['data_inicio']
fim = cleaned_data['data_fim'] fim = cleaned_data['data_fim']
eleicao = cleaned_data['data_eleicao']
if Legislatura.objects.filter( valida_datas = validar_datas_legislatura(
data_inicio__range=[inicio, fim]).exists() or \ eleicao, inicio, fim, pk=self.instance.pk)
Legislatura.objects.filter( if not valida_datas[0]:
data_fim__range=[inicio, fim]).exists(): raise ValidationError(valida_datas[1])
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'))
return cleaned_data 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.core.urlresolvers import reverse, reverse_lazy
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from django.views.generic import FormView from django.views.generic import FormView
from django.views.generic.edit import ModelFormMixin
from sapl.comissoes.models import Participacao from sapl.comissoes.models import Participacao
from sapl.crud.base import (RP_CHANGE, RP_DETAIL, RP_LIST, Crud, CrudAux, 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.materia.models import Proposicao, Relatoria
from sapl.parlamentares.apps import AppConfig from sapl.parlamentares.apps import AppConfig
from .forms import (FiliacaoForm, LegislaturaForm, LegislaturaCreateForm, from .forms import (FiliacaoForm, LegislaturaCreateForm,
ParlamentarCreateForm, ParlamentarForm) LegislaturaUpdateForm, ParlamentarCreateForm,
ParlamentarForm)
from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa, from .models import (CargoMesa, Coligacao, ComposicaoColigacao, ComposicaoMesa,
Dependente, Filiacao, Frente, Legislatura, Mandato, Dependente, Filiacao, Frente, Legislatura, Mandato,
NivelInstrucao, Parlamentar, Partido, SessaoLegislativa, NivelInstrucao, Parlamentar, Partido, SessaoLegislativa,
@ -161,17 +161,8 @@ class LegislaturaCrud(CrudAux):
numero = 1 numero = 1
return {'numero': numero} 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): class UpdateView(CrudAux.UpdateView):
form_class = LegislaturaForm form_class = LegislaturaUpdateForm
class FiliacaoCrud(MasterDetailCrud): class FiliacaoCrud(MasterDetailCrud):

3
sapl/templates/parlamentares/layouts.yaml

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

Loading…
Cancel
Save