Browse Source

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

3828_refatorar_mesa_diretora
LeandroJatai 2 days 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')) data_fim = models.DateField(verbose_name=_('Data Fim'))
legislatura = models.ForeignKey(Legislatura, legislatura = models.ForeignKey(Legislatura,
on_delete=models.PROTECT, on_delete=models.PROTECT,
verbose_name=_('Legislatura')) verbose_name=_('Legislatura'),
related_name='mesadiretora_set'
)
descricao = models.TextField(verbose_name=_('Descrição'), blank=True) descricao = models.TextField(verbose_name=_('Descrição'), blank=True)
class Meta: 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.core.exceptions import MultipleObjectsReturned, ObjectDoesNotExist
from django.db.models import F, Q from django.db.models import F, Q
from django.db.models.aggregates import Count 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.http.response import HttpResponseRedirect
from django.shortcuts import render from django.shortcuts import render
from django.templatetags.static import static from django.templatetags.static import static
@ -1023,13 +1023,22 @@ class MesaDiretoraCrud(Crud):
filterset_class = MesaDiretoraFilterSet filterset_class = MesaDiretoraFilterSet
paginate_by = None 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): def get_filterset_kwargs(self, filterset_class):
fk = super().get_filterset_kwargs(filterset_class) fk = super().get_filterset_kwargs(filterset_class)
if 'legislatura' not in self.request.GET: if 'legislatura' not in self.request.GET and not 'mesa' in self.request.GET:
legislatura = Legislatura.objects.filter( fk['data'] = {'legislatura': self.get_id_legislatura_atual()}
data_inicio__lte=timezone.now()).order_by('-data_inicio').values_list('id', flat=True).first() elif 'legislatura' not in self.request.GET and 'mesa' in self.request.GET:
if legislatura: legislatura_da_mesa = Legislatura.objects.filter(
fk['data'] = {'legislatura': legislatura} 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 return fk
def get_queryset(self): def get_queryset(self):

10
sapl/templates/parlamentares/mesadiretora_filter.html

@ -18,11 +18,7 @@
<ul class="nav nav-tabs" role="tablist"> <ul class="nav nav-tabs" role="tablist">
{% for md in object_list %} {% for md in object_list %}
{% if forloop.first and request.GET.mesa == md.id|stringformat:"s" or request.GET.mesa == md.id|stringformat:"s" %} {% 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>
{% elif forloop.first%}
<li class="nav-item" role="presentation"> <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> <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> </li>
@ -35,13 +31,13 @@
</ul> </ul>
<div class="tab-content"> <div class="tab-content">
{% for md in object_list %} {% 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"> <div class="lista-parlamentares tab-pane fade show active" id="tab-mesa-{{ md.id }}" role="tabpanel" aria-labelledby="tab-mesa-{{ md.id }}-tab">
{% else %} {% else %}
<div class="lista-parlamentares tab-pane fade" id="tab-mesa-{{ md.id }}" role="tabpanel" aria-labelledby="tab-mesa-{{ md.id }}-tab"> <div class="lista-parlamentares tab-pane fade" id="tab-mesa-{{ md.id }}" role="tabpanel" aria-labelledby="tab-mesa-{{ md.id }}-tab">
{% endif %} {% endif %}
<i class="text-muted p-2 d-inline-block">(De {{md.data_inicio }} a {{ md.data_fim }})</i> <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> <i class="fas fa-external-link-alt"></i>
</a> </a>
<table class="table table-striped table-hover table-link-ordering m-0 p-0"> <table class="table table-striped table-hover table-link-ordering m-0 p-0">

Loading…
Cancel
Save