Browse Source

fix: https://github.com/interlegis/sapl/pull/3829#discussion_r3093737607

3828_refatorar_mesa_diretora
LeandroJatai 1 day ago
parent
commit
f777e02898
  1. 4
      sapl/parlamentares/models.py
  2. 21
      sapl/parlamentares/views.py
  3. 10
      sapl/templates/parlamentares/mesadiretora_filter.html

4
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:

21
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):

10
sapl/templates/parlamentares/mesadiretora_filter.html

@ -18,11 +18,7 @@
<ul class="nav nav-tabs" role="tablist">
{% for md in object_list %}
{% if forloop.first and request.GET.mesa == md.id|stringformat:"s" or request.GET.mesa == md.id|stringformat:"s" %}
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tab-mesa-{{ md.id }}-tab" data-toggle="tab" data-target="#tab-mesa-{{ md.id }}" type="button" role="tab" aria-controls="tab-mesa-{{ md.id }}" aria-selected="true">{{ md }}</button>
</li>
{% elif forloop.first%}
{% if request.GET.mesa == md.id|stringformat:"s" or not request.GET.mesa and forloop.first %}
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tab-mesa-{{ md.id }}-tab" data-toggle="tab" data-target="#tab-mesa-{{ md.id }}" type="button" role="tab" aria-controls="tab-mesa-{{ md.id }}" aria-selected="true">{{ md }}</button>
</li>
@ -35,13 +31,13 @@
</ul>
<div class="tab-content">
{% 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 %}
<div class="lista-parlamentares tab-pane fade show active" id="tab-mesa-{{ md.id }}" role="tabpanel" aria-labelledby="tab-mesa-{{ md.id }}-tab">
{% else %}
<div class="lista-parlamentares tab-pane fade" id="tab-mesa-{{ md.id }}" role="tabpanel" aria-labelledby="tab-mesa-{{ md.id }}-tab">
{% endif %}
<i class="text-muted p-2 d-inline-block">(De {{md.data_inicio }} a {{ md.data_fim }})</i>
<a href="{% url 'sapl.parlamentares:mesadiretora_list' %}?legislatura={{md.legislatura.id}}&mesa={{ md.id }}" class="btn btn-sm btn-link float-right mb-2">
<a href="{% url 'sapl.parlamentares:mesadiretora_list' %}?mesa={{ md.id }}" class="btn btn-sm btn-link float-right mb-2">
<i class="fas fa-external-link-alt"></i>
</a>
<table class="table table-striped table-hover table-link-ordering m-0 p-0">

Loading…
Cancel
Save