diff --git a/sapl/comissoes/forms.py b/sapl/comissoes/forms.py index e69de29bb..2a34176d3 100644 --- a/sapl/comissoes/forms.py +++ b/sapl/comissoes/forms.py @@ -0,0 +1,30 @@ +from django import forms + +from sapl.comissoes.models import Participacao +from sapl.parlamentares.models import Parlamentar, Legislatura, Mandato + + +class ParticipacaoForm(forms.ModelForm): + + # composicao = forms.CharField(widget=forms.HiddenInput) + + class Meta: + model = Participacao + # exclude = [] + exclude = ['composicao'] + + def __init__(self, user=None, **kwargs): + super(ParticipacaoForm, self).__init__(**kwargs) + legislatura = Legislatura.objects.order_by('-data_inicio').first() + parlamentares = Mandato.objects.filter(legislatura=legislatura, + parlamentar__ativo=True + ).prefetch_related('parlamentar').\ + values_list('parlamentar', + flat=True) + qs = Parlamentar.objects.filter(id__in=parlamentares).distinct() + self.fields['parlamentar'].queryset = qs + + def clean(self): + super(ParticipacaoForm, self).clean() + + return self.cleaned_data diff --git a/sapl/comissoes/models.py b/sapl/comissoes/models.py index 510071d4f..df8cd6549 100644 --- a/sapl/comissoes/models.py +++ b/sapl/comissoes/models.py @@ -154,9 +154,14 @@ class Composicao(models.Model): # IGNORE class Participacao(models.Model): # ComposicaoComissao composicao = models.ForeignKey(Composicao, related_name='participacao_set', - on_delete=models.PROTECT) - parlamentar = models.ForeignKey(Parlamentar, on_delete=models.PROTECT) - cargo = models.ForeignKey(CargoComissao, on_delete=models.PROTECT) + on_delete=models.PROTECT, + verbose_name=_('Composição')) + parlamentar = models.ForeignKey(Parlamentar, + on_delete=models.PROTECT, + verbose_name='Parlamentar') + cargo = models.ForeignKey(CargoComissao, + on_delete=models.PROTECT, + verbose_name='Cargo') titular = models.BooleanField( verbose_name=_('Titular'), default=False, diff --git a/sapl/comissoes/views.py b/sapl/comissoes/views.py index 0c315f0d9..3409219dc 100644 --- a/sapl/comissoes/views.py +++ b/sapl/comissoes/views.py @@ -4,6 +4,7 @@ from django.db.models import F from django.views.decorators.clickjacking import xframe_options_exempt from django.views.generic import ListView +from sapl.comissoes.forms import ParticipacaoForm from sapl.crud.base import RP_DETAIL, RP_LIST, Crud, CrudAux, MasterDetailCrud from sapl.materia.models import MateriaLegislativa, Tramitacao @@ -36,6 +37,16 @@ class ParticipacaoCrud(MasterDetailCrud): class BaseMixin(MasterDetailCrud.BaseMixin): list_field_names = ['composicao', 'parlamentar', 'cargo'] + class CreateView(MasterDetailCrud.CreateView): + form_class = ParticipacaoForm + + def get_initial(self): + initial = super().get_initial() + return initial + + class UpdateView(MasterDetailCrud.UpdateView): + form_class = ParticipacaoForm + class ComposicaoCrud(MasterDetailCrud): model = Composicao