From f2e3a96486cb5047e573c8f9facc7701092a36e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Rodrigues?= Date: Wed, 27 Nov 2019 16:30:54 -0300 Subject: [PATCH] =?UTF-8?q?Finaliza=C3=A7=C3=A3o=20cadastro=20parlamentar?= =?UTF-8?q?=20bancada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/parlamentares/forms.py | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index d415b6742..5e9312d37 100755 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -717,6 +717,29 @@ class ParlamentarBancadaForm(ModelForm): def __init__(self, *args, **kwargs): super(ParlamentarBancadaForm, self).__init__(*args, **kwargs) self.fields['bancada'].widget = forms.HiddenInput() + + id_parlamentares_titulares_legislatura_partido = [] + mandatos = Mandato.objects.filter(legislatura=self.initial['bancada'].legislatura, titular=True) + + if self.initial['bancada'].partido: + + for mandato in mandatos: + parlamentar_filiacao_atual = Filiacao.objects.filter(parlamentar__id=mandato.parlamentar.id).order_by('-data').first() + + if parlamentar_filiacao_atual.partido == self.initial['bancada'].partido: + id_parlamentares_titulares_legislatura_partido.append(mandato.parlamentar.id) + + else: + id_parlamentares_titulares_legislatura_partido = [mandato.parlamentar.id for mandato in mandatos] + + parlamentares_adicionados = ParlamentarBancada.objects.filter(bancada=self.initial['bancada']) + id_parlamentares_adicionados = [parlamentar_adicionado.parlamentar.id for parlamentar_adicionado in parlamentares_adicionados] + + parlamentares = Parlamentar.objects.filter(id__in=id_parlamentares_titulares_legislatura_partido, ativo=True).exclude( + id__in=id_parlamentares_adicionados + ) + + self.fields['parlamentar'].queryset = parlamentares class Meta: model = ParlamentarBancada @@ -725,12 +748,18 @@ class ParlamentarBancadaForm(ModelForm): def clean(self): super(ParlamentarBancadaForm, self).clean() - cd = self.cleaned_data - if not self.is_valid(): return self.cleaned_data + + data = self.cleaned_data + + if data['cargo'].cargo_unico: + parlamentares_bancada = ParlamentarBancada.objects.filter(bancada=data['bancada']) + cargos = [parlamentar_bancada.cargo for parlamentar_bancada in parlamentares_bancada] + if data['cargo'] in cargos: + raise ValidationError("Este cargo está ocupado e é único para esta Bancada.") - return cd + return data class CargoBlocoForm(ModelForm):