From 3a0289747255f817f5d9b192ef76bd22b7b53a2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Rodrigues?= Date: Wed, 27 Nov 2019 16:52:04 -0300 Subject: [PATCH] =?UTF-8?q?Criar=20o=20formul=C3=A1rio=20parlamentarbancad?= =?UTF-8?q?aedit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sapl/parlamentares/forms.py | 30 +++++++++++++++++++++++++++++- sapl/parlamentares/views.py | 7 ++++--- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index 5e9312d37..e441e6e87 100755 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -711,7 +711,7 @@ class BancadaForm(ModelForm): return bancada -class ParlamentarBancadaForm(ModelForm): +class ParlamentarBancadaCreateForm(ModelForm): logger = logging.getLogger(__name__) def __init__(self, *args, **kwargs): @@ -762,6 +762,34 @@ class ParlamentarBancadaForm(ModelForm): return data +class ParlamentarBancadaEditForm(ModelForm): + logger = logging.getLogger(__name__) + + def __init__(self, *args, **kwargs): + super(ParlamentarBancadaEditForm, self).__init__(*args, **kwargs) + self.fields['bancada'].widget = forms.HiddenInput() + + class Meta: + model = ParlamentarBancada + fields = '__all__' + + def clean(self): + super(ParlamentarBancadaEditForm, self).clean() + + 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 é unico para esta Bancada.") + + return data + + class CargoBlocoForm(ModelForm): class Meta: model = CargoBloco diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index eeca73b23..3cc59454a 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -40,7 +40,8 @@ from sapl.utils import parlamentares_ativos, show_results_filter_set from .forms import (AfastamentoParlamentarForm, BancadaForm, BlocoForm, CargoBlocoForm, CargoBlocoPartidoForm, FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm, - ParlamentarBancadaForm, ParlamentarCreateForm, + ParlamentarBancadaCreateForm, + ParlamentarBancadaEditForm, ParlamentarCreateForm, ParlamentarFilterSet, ParlamentarForm, ParlamentarFrenteForm, VincularParlamentarForm, VotanteForm) @@ -151,7 +152,7 @@ class ParlamentarBancadaCrud(MasterDetailCrud): public = [RP_LIST, RP_DETAIL] class CreateView(MasterDetailCrud.CreateView): - form_class = ParlamentarBancadaForm + form_class = ParlamentarBancadaCreateForm def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -163,7 +164,7 @@ class ParlamentarBancadaCrud(MasterDetailCrud): return self.initial class UpdateView(MasterDetailCrud.UpdateView): - form_class = ParlamentarBancadaForm + form_class = ParlamentarBancadaEditForm def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs)