Browse Source

feat: cria filterset para seleção de legislatura

3828_refatorar_mesa_diretora
LeandroJatai 3 days ago
parent
commit
652e74fccf
  1. 29
      sapl/parlamentares/forms.py
  2. 2
      sapl/parlamentares/urls.py
  3. 19
      sapl/parlamentares/views.py
  4. 2
      sapl/templates/crud/list.html
  5. 5
      sapl/utils.py

29
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,)
)

2
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()
)),
]

19
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)

2
sapl/templates/crud/list.html

@ -7,6 +7,8 @@
<div class="actions search flex-grow-1 pr-3">
{% if form %}
{% crispy form %}
{% elif filter.form %}
{% crispy filter.form %}
{% endif %}
</div>
{% block actions %}

5
sapl/utils.py

@ -262,6 +262,11 @@ def montar_helper_autor(self):
' class="btn btn-dark">Cancelar</a>')]))
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__(

Loading…
Cancel
Save