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,
DocumentoAcessorioEditForm,
ParticipacaoCreateForm, ParticipacaoEditForm,
PeriodoForm, ReuniaoForm, PautaReuniaoForm)
PautaReuniaoForm, PeriodoForm, ReuniaoForm)
from sapl.crud.base import (RP_DETAIL, RP_LIST, Crud, CrudAux,
MasterDetailCrud,
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,
Participacao, Periodo, Reuniao, TipoComissao)
@ -165,16 +166,11 @@ class ComissaoCrud(Crud):
return super(Crud.UpdateView, self).form_valid(form)
# Essa função retorna objetos MateriaEmTramitacao
def lista_materias_comissao(comissao_pk):
ts = Tramitacao.objects.order_by(
'materia_id', '-data_tramitacao', '-id').annotate(
comissao=F('unidade_tramitacao_destino__comissao')).distinct(
'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')
materias = MateriaEmTramitacao.objects.filter(
tramitacao__unidade_tramitacao_destino__comissao=comissao_pk
).order_by('materia__tipo', '-materia__ano', '-materia__numero')
return materias
@ -184,13 +180,13 @@ class MateriasTramitacaoListView(ListView):
paginate_by = 10
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):
context = super(
MateriasTramitacaoListView, self).get_context_data(**kwargs)
context['object'] = Comissao.objects.get(id=self.kwargs['pk'])
context['qtde'] = self.object_list.count()
context['qtde'] = len(self.object_list)
return context

20
sapl/templates/comissoes/materias_em_tramitacao.html

@ -13,14 +13,20 @@
<fieldset>
<legend>{{ comissao }}</legend>
<b>Há {{ qtde }} matéria(s) em tramitação nesta unidade.</b> <br><br>
{% for materia in page_obj %}
<b><a href="{% url 'sapl.materia:materialegislativa_detail' materia.id %}">
{{materia.tipo.sigla}} {{materia.numero}} {{materia.ano}} - {{materia.tipo}}
{% for materia_em_tramitacao in page_obj %}
<b><a href="{% url 'sapl.materia:materialegislativa_detail' materia_em_tramitacao.materia.id %}">
{{ materia_em_tramitacao.materia.tipo.sigla }} {{ materia_em_tramitacao.materia.numero }}
{{ materia_em_tramitacao.materia.ano }} - {{ materia_em_tramitacao.materia.tipo }}
</b></a><br>
{{materia}}<br>
<b>Autor: </b>{{materia.autoria_set.first.autor.nome}}<br>
<b>Situação: </b>{{materia.tramitacao_set.last.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>
{{ materia_em_tramitacao.materia }}<br>
<b>Autor: </b>{{ materia_em_tramitacao.materia.autoria_set.first.autor.nome }}<br>
<b>Situação: </b>{{ materia_em_tramitacao.tramitacao.status.descricao }}<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>
{% endfor %}
</fieldset>

Loading…
Cancel
Save