Browse Source

Coloca validação nas datas

pull/341/head
Eduardo Edson Batista Cordeiro Alves 9 years ago
committed by Edward Ribeiro
parent
commit
09b30241f7
  1. 101
      parlamentares/forms.py
  2. 34
      parlamentares/views.py

101
parlamentares/forms.py

@ -53,67 +53,68 @@ class ParlamentarCreateForm(ParlamentarForm):
return parlamentar return parlamentar
class FiliacaoForm(ModelForm): def validate(data, data_desfiliacao, parlamentar, filiacao):
data_filiacao = data
def validate(data, data_desfiliacao, parlamentar, filiacao): data_desfiliacao = data_desfiliacao
data_filiacao = data
data_desfiliacao = data_desfiliacao # Dá erro caso a data de desfiliação seja anterior a de filiação
if data_desfiliacao and data_desfiliacao < data_filiacao:
# Dá erro caso a data de desfiliação seja anterior a de filiação error_msg = _("A data de filiação não pode anterior \
if data_desfiliacao and data_desfiliacao < data_filiacao: à data de desfiliação")
error_msg = _("A data de filiação não pode anterior \ raise forms.ValidationError(error_msg)
à data de desfiliação") return False
# Esse bloco garante que não haverá intersecção entre os
# períodos de filiação
id_filiacao_atual = filiacao.pk
todas_filiacoes = parlamentar.filiacao_set.all()
for filiacoes in todas_filiacoes:
if (not filiacoes.data_desfiliacao and
filiacoes.id != id_filiacao_atual):
error_msg = _("O parlamentar não pode se filiar a algum partido \
sem antes se desfiliar do partido anterior")
raise forms.ValidationError(error_msg) raise forms.ValidationError(error_msg)
return False return False
# Esse bloco garante que não haverá intersecção entre os error_msg = None
# períodos de filiação for filiacoes in todas_filiacoes:
id_filiacao_atual = filiacao.pk if filiacoes.id != id_filiacao_atual:
todas_filiacoes = parlamentar.filiacao_set.all()
for filiacoes in todas_filiacoes: data_init = filiacoes.data
if (not filiacoes.data_desfiliacao and data_fim = filiacoes.data_desfiliacao
filiacoes.id != id_filiacao_atual):
error_msg = _("O parlamentar não pode se filiar a algum partido \
sem antes se desfiliar do partido anterior")
raise forms.ValidationError(error_msg)
return False
error_msg = None if data_init <= data_filiacao < data_fim:
for filiacoes in todas_filiacoes:
if filiacoes.id != id_filiacao_atual:
data_init = filiacoes.data error_msg = _("A data de filiação e \
data_fim = filiacoes.data_desfiliacao desfiliação não podem estar no intervalo \
de outro período de filiação")
break
if data_init <= data_filiacao < data_fim: if (data_desfiliacao and
data_init < data_desfiliacao < data_fim):
error_msg = _("A data de filiação e \ error_msg = _("A data de filiação e \
desfiliação não podem estar no intervalo \ desfiliação não podem estar no intervalo \
de outro período de filiação") de outro período de filiação")
break break
if (data_desfiliacao and if (data_desfiliacao and
data_init < data_desfiliacao < data_fim): data_filiacao <= data_init and
data_desfiliacao >= data_fim):
error_msg = _("A data de filiação e \ error_msg = _("A data de filiação e \
desfiliação não podem estar no intervalo \ desfiliação não podem estar no intervalo \
de outro período de filiação") de outro período de filiação")
break break
if (data_desfiliacao and if error_msg:
data_filiacao <= data_init and raise forms.ValidationError(error_msg)
data_desfiliacao >= data_fim):
error_msg = _("A data de filiação e \ return True
desfiliação não podem estar no intervalo \
de outro período de filiação")
break
if error_msg:
raise forms.ValidationError(error_msg)
return True class FiliacaoForm(ModelForm):
class Meta: class Meta:
model = Filiacao model = Filiacao
@ -126,9 +127,9 @@ class FiliacaoForm(ModelForm):
filiacao = super(FiliacaoForm, self).save(commit) filiacao = super(FiliacaoForm, self).save(commit)
if not validate(self.cleaned_data['data'], if not validate(self.cleaned_data['data'],
self.cleaned_data['data_desfiliacao'], self.cleaned_data['data_desfiliacao'],
filiacao.parlamentar, filiacao.parlamentar,
filiacao): filiacao):
return self.form_invalid(form) return self.form_invalid(form)
filiacao.save() filiacao.save()

34
parlamentares/views.py

@ -29,19 +29,27 @@ TipoMilitarCrud = Crud.build(SituacaoMilitar, 'tipo_situa_militar')
DependenteCrud = MasterDetailCrud.build(Dependente, 'parlamentar', '') DependenteCrud = MasterDetailCrud.build(Dependente, 'parlamentar', '')
MandatoCrud = MasterDetailCrud.build(Mandato, 'parlamentar', '') MandatoCrud = MasterDetailCrud.build(Mandato, 'parlamentar', '')
FiliacaoCrud = MasterDetailCrud.build(Filiacao, 'parlamentar', '') # FiliacaoCrud = MasterDetailCrud.build(Filiacao, 'parlamentar', '')
# class FiliacaoCrud(MasterDetailCrud): class FiliacaoCrud(MasterDetailCrud):
# model = Filiacao model = Filiacao
# parent_field = 'parlamentar' parent_field = 'parlamentar'
# help_path = '' help_path = ''
#
# class CreateView(crud.masterdetail.CrudCreateView): class CreateView(crud.masterdetail.CrudCreateView):
# form_class = FiliacaoForm form_class = FiliacaoForm
#
# class UpdateView(crud.masterdetail.CrudUpdateView): @classmethod
# form_class = FiliacaoForm def get_url_regex(self):
return r'^(?P<pk>\d+)/%s/create$' % self.model._meta.model_name
class UpdateView(crud.masterdetail.CrudUpdateView):
form_class = FiliacaoForm
@classmethod
def get_url_regex(self):
return r'^%s/(?P<pk>\d+)/edit$' % self.model._meta.model_name
class ParlamentarCrud(Crud): class ParlamentarCrud(Crud):

Loading…
Cancel
Save