diff --git a/sapl/parlamentares/forms.py b/sapl/parlamentares/forms.py index 89ab424f5..c53fb2db1 100755 --- a/sapl/parlamentares/forms.py +++ b/sapl/parlamentares/forms.py @@ -1,7 +1,7 @@ from datetime import timedelta import logging -from crispy_forms.layout import Fieldset, Layout +from crispy_forms.layout import Fieldset, Layout, Field from django import forms from django.contrib.auth import get_user_model from django.contrib.auth.models import Group, User @@ -19,10 +19,10 @@ from sapl.base.models import Autor, TipoAutor from sapl.crispy_layout_mixin import SaplFormHelper from sapl.crispy_layout_mixin import form_actions, to_row from sapl.rules import SAPL_GROUP_VOTANTE -from sapl.utils import FileFieldCheckMixin +from sapl.utils import FileFieldCheckMixin, SelectSubmitChangeWidget from .models import (Coligacao, ComposicaoColigacao, Filiacao, Frente, Legislatura, - Mandato, Parlamentar, Partido, Votante, Bloco, FrenteParlamentar, BlocoMembro) + Mandato, MesaDiretora, Parlamentar, Partido, Votante, Bloco, FrenteParlamentar, BlocoMembro) class CustomImageCropWidget(ImageCropWidget): @@ -752,3 +752,26 @@ class BlocoMembroForm(ModelForm): _("Parlamentar já é membro do bloco parlamentar.")) return cd + +class MesaDiretoraFilterSet(django_filters.FilterSet): + + legislatura = django_filters.ModelChoiceFilter( + label='', + queryset=Legislatura.objects.all(), + widget=SelectSubmitChangeWidget) + + class Meta: + model = MesaDiretora + fields = ['legislatura'] + + def __init__(self, *args, **kwargs): + super(MesaDiretoraFilterSet, self).__init__(*args, **kwargs) + + row0 = to_row([('legislatura', 5)]) + + self.form.helper = SaplFormHelper() + self.form.helper.form_method = 'GET' + self.form.helper.layout = Layout( + Fieldset(_('Escolha da Legislatura e da Sessão Legislativa'), + row0,) + ) diff --git a/sapl/parlamentares/urls.py b/sapl/parlamentares/urls.py index 08442ee24..c9ed82fe9 100644 --- a/sapl/parlamentares/urls.py +++ b/sapl/parlamentares/urls.py @@ -104,7 +104,7 @@ urlpatterns = [ url(r'^sistema/mesa-diretora/cargo-mesa/', include(CargoMesaCrud.get_urls())), - url(r'^mesadiretora/', include( + url(r'^mesa-diretora/', include( MesaDiretoraCrud.get_urls() + ComposicaoMesaCrud.get_urls() )), ] diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index 9bc605eb3..1a2eeabf7 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -35,7 +35,7 @@ from sapl.parlamentares.apps import AppConfig from sapl.rules import SAPL_GROUP_VOTANTE from sapl.utils import (parlamentares_ativos, show_results_filter_set, ratelimit_ip) -from .forms import (ColigacaoFilterSet, FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm, +from .forms import (ColigacaoFilterSet, FiliacaoForm, FrenteForm, LegislaturaForm, MandatoForm, MesaDiretoraFilterSet, ParlamentarCreateForm, ParlamentarForm, VotanteForm, ParlamentarFilterSet, PartidoFilterSet, VincularParlamentarForm, BlocoForm, FrenteParlamentarForm, BlocoMembroForm) @@ -1019,12 +1019,27 @@ class MesaDiretoraCrud(Crud): context['subnav_template_name'] = 'parlamentares/subnav_mesa.yaml' return context - class ListView(Crud.ListView): + class ListView(FilterView, Crud.ListView): + filterset_class = MesaDiretoraFilterSet + + def get_filterset_kwargs(self, filterset_class): + fk = super().get_filterset_kwargs(filterset_class) + if 'legislatura' not in self.request.GET: + legislatura = Legislatura.objects.filter( + data_inicio__lte=timezone.now()).order_by('-data_inicio').values_list('id', flat=True).first() + if legislatura: + fk['data'] = {'legislatura': legislatura} + return fk + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['subnav_template_name'] = '' + context['title'] = ' ' return context + def get(self, request, *args, **kwargs): + return FilterView.get(self, request, *args, **kwargs) + class CreateView(Crud.CreateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) diff --git a/sapl/templates/crud/list.html b/sapl/templates/crud/list.html index 44b394337..9e6d79cc9 100644 --- a/sapl/templates/crud/list.html +++ b/sapl/templates/crud/list.html @@ -7,6 +7,8 @@ {% block actions %} diff --git a/sapl/utils.py b/sapl/utils.py index ee97094aa..2df06ea02 100644 --- a/sapl/utils.py +++ b/sapl/utils.py @@ -262,6 +262,11 @@ def montar_helper_autor(self): ' class="btn btn-dark">Cancelar')])) +class SelectSubmitChangeWidget(forms.Select): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.attrs.update({'onchange': 'this.form.submit();'}) + class SaplGenericForeignKey(GenericForeignKey): def __init__(