diff --git a/sapl/parlamentares/models.py b/sapl/parlamentares/models.py index 74351957e..1e3266074 100644 --- a/sapl/parlamentares/models.py +++ b/sapl/parlamentares/models.py @@ -498,7 +498,9 @@ class MesaDiretora(models.Model): data_fim = models.DateField(verbose_name=_('Data Fim')) legislatura = models.ForeignKey(Legislatura, on_delete=models.PROTECT, - verbose_name=_('Legislatura')) + verbose_name=_('Legislatura'), + related_name='mesadiretora_set' + ) descricao = models.TextField(verbose_name=_('Descrição'), blank=True) class Meta: diff --git a/sapl/parlamentares/views.py b/sapl/parlamentares/views.py index e98c811b3..ac9ef2620 100644 --- a/sapl/parlamentares/views.py +++ b/sapl/parlamentares/views.py @@ -9,7 +9,7 @@ from django.contrib.contenttypes.models import ContentType from django.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist from django.db.models import F, Q from django.db.models.aggregates import Count -from django.http import JsonResponse +from django.http import Http404, JsonResponse from django.http.response import HttpResponseRedirect from django.shortcuts import render from django.templatetags.static import static @@ -1023,13 +1023,22 @@ class MesaDiretoraCrud(Crud): filterset_class = MesaDiretoraFilterSet paginate_by = None + def get_id_legislatura_atual(self): + return Legislatura.objects.filter( + data_inicio__lte=timezone.now() + ).order_by('-data_inicio').values_list('id', flat=True).first() + 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} + if 'legislatura' not in self.request.GET and not 'mesa' in self.request.GET: + fk['data'] = {'legislatura': self.get_id_legislatura_atual()} + elif 'legislatura' not in self.request.GET and 'mesa' in self.request.GET: + legislatura_da_mesa = Legislatura.objects.filter( + mesadiretora_set__id=self.request.GET['mesa'] + ).values_list('id', flat=True).first() + if not legislatura_da_mesa: + raise Http404("MesaDiretora {} não encontrada.".format(self.request.GET['mesa'])) + fk['data'] = {'legislatura': legislatura_da_mesa} return fk def get_queryset(self): diff --git a/sapl/templates/parlamentares/mesadiretora_filter.html b/sapl/templates/parlamentares/mesadiretora_filter.html index 11dfaf0f2..a1ec31a73 100644 --- a/sapl/templates/parlamentares/mesadiretora_filter.html +++ b/sapl/templates/parlamentares/mesadiretora_filter.html @@ -18,11 +18,7 @@
{% for md in object_list %} - {% if forloop.first or request.GET.mesa == md.id|stringformat:"s" %} + {% if request.GET.mesa == md.id|stringformat:"s" or not request.GET.mesa and forloop.first %}
{% else %}
{% endif %} (De {{md.data_inicio }} a {{ md.data_fim }}) - +