From bc10c637d51ab3cc5304f1e286c47a69b52cb5bd Mon Sep 17 00:00:00 2001 From: Edward Date: Tue, 3 Apr 2018 16:23:08 -0300 Subject: [PATCH] =?UTF-8?q?Fixes=20#1819=20-=20Verifica=20se=20data=20de?= =?UTF-8?q?=20designa=C3=A7=C3=A3o=20superior=20a=20data=20de=20desligamen?= =?UTF-8?q?to=20(#1821)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/comissoes/forms.py | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/sapl/comissoes/forms.py b/sapl/comissoes/forms.py index c642d978c..66e8280cf 100644 --- a/sapl/comissoes/forms.py +++ b/sapl/comissoes/forms.py @@ -65,8 +65,9 @@ class ParticipacaoCreateForm(forms.ModelForm): parlamentares = Mandato.objects.filter(qs, parlamentar__ativo=True ).prefetch_related('parlamentar').\ - values_list('parlamentar', - flat=True).distinct() + values_list('parlamentar', + flat=True + ).distinct() qs = Parlamentar.objects.filter(id__in=parlamentares).distinct().\ exclude(id__in=id_part) @@ -86,12 +87,21 @@ class ParticipacaoCreateForm(forms.ModelForm): if not self.is_valid(): return cleaned_data + data_designacao = cleaned_data['data_designacao'] + data_desligamento = cleaned_data['data_desligamento'] + + if data_desligamento and \ + data_designacao > data_desligamento: + raise ValidationError(_('Data de designação não pode ser superior ' + 'à data de desligamento')) + composicao = Composicao.objects.get(id=self.initial['parent_pk']) cargos_unicos = [c.cargo.nome for c in composicao.participacao_set.filter(cargo__unico=True)] if cleaned_data['cargo'].nome in cargos_unicos: msg = _('Este cargo é único para esta Comissão.') raise ValidationError(msg) + return cleaned_data def create_participacao(self): @@ -154,6 +164,31 @@ class ParticipacaoEditForm(forms.ModelForm): id=self.initial['parlamentar']).nome_parlamentar self.fields['nome_parlamentar'].widget.attrs['disabled'] = 'disabled' + def clean(self): + cleaned_data = super(ParticipacaoEditForm, self).clean() + + if not self.is_valid(): + return cleaned_data + + data_designacao = cleaned_data['data_designacao'] + data_desligamento = cleaned_data['data_desligamento'] + + if data_desligamento and \ + data_designacao > data_desligamento: + raise ValidationError(_('Data de designação não pode ser superior ' + 'à data de desligamento')) + + composicao_id = self.instance.composicao_id + + composicao = Composicao.objects.get(id=composicao_id) + cargos_unicos = [c.cargo.nome for c in composicao.participacao_set.filter(cargo__unico=True)] + + if cleaned_data['cargo'].nome in cargos_unicos: + msg = _('Este cargo é único para esta Comissão.') + raise ValidationError(msg) + + return cleaned_data + class ComissaoForm(forms.ModelForm):