Browse Source

Merge pull request #735 from interlegis/700-cadastro-legislatura

fix #700 Cadastro legislatura
pull/736/merge
Edward 8 years ago
committed by GitHub
parent
commit
7499a3eadb
  1. 62
      sapl/parlamentares/forms.py
  2. 18
      sapl/parlamentares/views.py
  3. 2
      sapl/templates/parlamentares/layouts.yaml

62
sapl/parlamentares/forms.py

@ -16,27 +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 = []
class LegislaturaCreateForm(LegislaturaForm):
def clean(self): def clean(self):
cleaned_data = self.cleaned_data cleaned_data = self.cleaned_data
numero = cleaned_data['numero'] eleicao = cleaned_data['data_eleicao']
data_inicio = cleaned_data['data_inicio'] inicio = cleaned_data['data_inicio']
data_fim = cleaned_data['data_fim'] 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'))
if Legislatura.objects.filter(numero=numero).exists():
raise ValidationError(
_('Já cadastrada uma legislatura com este número'))
valida_datas = validar_datas_legislatura(eleicao, inicio, fim)
if not valida_datas[0]:
raise ValidationError(valida_datas[1])
return cleaned_data
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']
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 return cleaned_data

18
sapl/parlamentares/views.py

@ -11,7 +11,8 @@ 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, ParlamentarCreateForm, from .forms import (FiliacaoForm, LegislaturaCreateForm,
LegislaturaUpdateForm, ParlamentarCreateForm,
ParlamentarForm) 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,
@ -149,8 +150,19 @@ class LegislaturaCrud(CrudAux):
model = Legislatura model = Legislatura
help_path = 'tabelas_auxiliares#legislatura' help_path = 'tabelas_auxiliares#legislatura'
class BaseMixin(CrudAux.BaseMixin): class CreateView(CrudAux.CreateView):
form_class = LegislaturaForm form_class = LegislaturaCreateForm
def get_initial(self):
try:
ultima_legislatura = Legislatura.objects.latest('numero')
numero = ultima_legislatura.numero + 1
except Legislatura.DoesNotExist:
numero = 1
return {'numero': numero}
class UpdateView(CrudAux.UpdateView):
form_class = LegislaturaUpdateForm
class FiliacaoCrud(MasterDetailCrud): class FiliacaoCrud(MasterDetailCrud):

2
sapl/templates/parlamentares/layouts.yaml

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

Loading…
Cancel
Save