From 20102682f8ad76c139ec88ae2757a2f24e925e10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Pedro=20Sconetto?= Date: Fri, 23 Mar 2018 14:33:25 -0300 Subject: [PATCH] Fix #1776 Co-authored-by: Mariana Mendes --- sapl/comissoes/forms.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/sapl/comissoes/forms.py b/sapl/comissoes/forms.py index dd2c037da..2f63f5120 100644 --- a/sapl/comissoes/forms.py +++ b/sapl/comissoes/forms.py @@ -18,6 +18,7 @@ class ParticipacaoCreateForm(forms.ModelForm): class Meta: model = Participacao + fields = '__all__' exclude = ['composicao'] def __init__(self, user=None, **kwargs): @@ -51,6 +52,29 @@ class ParticipacaoCreateForm(forms.ModelForm): qs = Parlamentar.objects.filter(id__in=ids) self.fields['parlamentar'].queryset = qs + + def clean(self): + cleaned_data = super(ParticipacaoCreateForm, self).clean() + if not self.is_valid(): + return cleaned_data + + composicao = Composicao.objects.get(id=self.initial['parent_pk']) + participantes = composicao.participacao_set.all() + + cargos = {} + for parlamentar in participantes: + cargos.update({str(parlamentar.cargo): parlamentar.cargo.unico}) + + for cargo, unico in cargos.items(): + if cleaned_data['cargo'].nome == cargo: + if cleaned_data['cargo'].unico: + msg = _('Este cargo é único para esta composição') + raise ValidationError(msg) + + return cleaned_data + + + def create_participacao(self): composicao = Composicao.objects.get(id=self.initial['parent_pk']) data_inicio_comissao = composicao.periodo.data_inicio