Browse Source

Ajusta a performance da lista de Matérias em Tramitação em uma Comissão (#2965)

* Refatora a função lista_materias_comissao

* Refatoração
pull/2940/head
João Rodrigues 5 years ago
committed by Edward
parent
commit
43acff6531
  1. 22
      sapl/comissoes/views.py
  2. 20
      sapl/templates/comissoes/materias_em_tramitacao.html

22
sapl/comissoes/views.py

@ -18,11 +18,12 @@ from sapl.comissoes.forms import (ComissaoForm, ComposicaoForm,
DocumentoAcessorioCreateForm, DocumentoAcessorioCreateForm,
DocumentoAcessorioEditForm, DocumentoAcessorioEditForm,
ParticipacaoCreateForm, ParticipacaoEditForm, ParticipacaoCreateForm, ParticipacaoEditForm,
PeriodoForm, ReuniaoForm, PautaReuniaoForm) PautaReuniaoForm, PeriodoForm, ReuniaoForm)
from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux, from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux,
MasterDetailCrud, MasterDetailCrud,
PermissionRequiredForAppCrudMixin) PermissionRequiredForAppCrudMixin)
from sapl.materia.models import MateriaLegislativa, Tramitacao, PautaReuniao from sapl.materia.models import (MateriaLegislativa, Tramitacao, PautaReuniao,
MateriaEmTramitacao)
from .models import (CargoComissao, Comissao, Composicao, DocumentoAcessorio, from .models import (CargoComissao, Comissao, Composicao, DocumentoAcessorio,
Participacao, Periodo, Reuniao, TipoComissao) Participacao, Periodo, Reuniao, TipoComissao)
@ -165,16 +166,11 @@ class ComissaoCrud(Crud):
return super(Crud.UpdateView, self).form_valid(form) return super(Crud.UpdateView, self).form_valid(form)
# Essa função retorna objetos MateriaEmTramitacao
def lista_materias_comissao(comissao_pk): def lista_materias_comissao(comissao_pk):
ts = Tramitacao.objects.order_by( materias = MateriaEmTramitacao.objects.filter(
'materia_id', '-data_tramitacao', '-id').annotate( tramitacao__unidade_tramitacao_destino__comissao=comissao_pk
comissao=F('unidade_tramitacao_destino__comissao')).distinct( ).order_by('materia__tipo', '-materia__ano', '-materia__numero')
'materia').values_list('materia', 'comissao')
ts = [m for (m,c) in ts if c == int(comissao_pk)]
materias = MateriaLegislativa.objects.filter(
pk__in=ts).order_by('tipo', '-ano', '-numero')
return materias return materias
@ -184,13 +180,13 @@ class MateriasTramitacaoListView(ListView):
paginate_by = 10 paginate_by = 10
def get_queryset(self): def get_queryset(self):
return lista_materias_comissao(self.kwargs['pk']) return list(lista_materias_comissao(self.kwargs['pk']))
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
context = super( context = super(
MateriasTramitacaoListView, self).get_context_data(**kwargs) MateriasTramitacaoListView, self).get_context_data(**kwargs)
context['object'] = Comissao.objects.get(id=self.kwargs['pk']) context['object'] = Comissao.objects.get(id=self.kwargs['pk'])
context['qtde'] = self.object_list.count() context['qtde'] = len(self.object_list)
return context return context

20
sapl/templates/comissoes/materias_em_tramitacao.html

@ -13,14 +13,20 @@
<fieldset> <fieldset>
<legend>{{ comissao }}</legend> <legend>{{ comissao }}</legend>
<b>Há {{ qtde }} matéria(s) em tramitação nesta unidade.</b> <br><br> <b>Há {{ qtde }} matéria(s) em tramitação nesta unidade.</b> <br><br>
{% for materia in page_obj %} {% for materia_em_tramitacao in page_obj %}
<b><a href="{% url 'sapl.materia:materialegislativa_detail' materia.id %}"> <b><a href="{% url 'sapl.materia:materialegislativa_detail' materia_em_tramitacao.materia.id %}">
{{materia.tipo.sigla}} {{materia.numero}} {{materia.ano}} - {{materia.tipo}} {{ materia_em_tramitacao.materia.tipo.sigla }} {{ materia_em_tramitacao.materia.numero }}
{{ materia_em_tramitacao.materia.ano }} - {{ materia_em_tramitacao.materia.tipo }}
</b></a><br> </b></a><br>
{{materia}}<br> {{ materia_em_tramitacao.materia }}<br>
<b>Autor: </b>{{materia.autoria_set.first.autor.nome}}<br> <b>Autor: </b>{{ materia_em_tramitacao.materia.autoria_set.first.autor.nome }}<br>
<b>Situação: </b>{{materia.tramitacao_set.last.status.descricao}}<br> <b>Situação: </b>{{ materia_em_tramitacao.tramitacao.status.descricao }}<br>
<b>Data Fim Prazo da Última Tramitação: </b>{% if materia.tramitacao_set.last.data_fim_prazo %} {{materia.tramitacao_set.last.data_fim_prazo}} {% else %} Não definida. {% endif %}<br> <b>Data Fim Prazo da Última Tramitação: </b>
{% if materia_em_tramitacao.tramitacao.data_fim_prazo %}
{{ materia_em_tramitacao.tramitacao.data_fim_prazo }}
{% else %}
Não definida.
{% endif %}<br>
<br> <br>
{% endfor %} {% endfor %}
</fieldset> </fieldset>

Loading…
Cancel
Save