diff --git a/sapl/relatorios/views.py b/sapl/relatorios/views.py
index 7112e46df..ccbb4276c 100755
--- a/sapl/relatorios/views.py
+++ b/sapl/relatorios/views.py
@@ -593,16 +593,17 @@ def get_sessao_plenaria(sessao, casa):
# Lista das matérias do Expediente, incluindo o resultado das votacoes
lst_expediente_materia = []
- for expediente_materia in ExpedienteMateria.objects.filter(sessao_plenaria=sessao):
+ for expediente_materia in ExpedienteMateria.objects.select_related("materia").filter(sessao_plenaria=sessao):
# seleciona os detalhes de uma matéria
materia = expediente_materia.materia
+ materia_em_tramitacao = materia.materiaemtramitacao_set.first()
+
dic_expediente_materia = {
"num_ordem": expediente_materia.numero_ordem,
- "id_materia": "{} {} {}/{}".format(materia.tipo.sigla, materia.tipo.descricao, str(materia.numero),
- str(materia.ano)),
+ "id_materia": f"{materia.tipo.sigla} {materia.tipo.descricao} {str(materia.numero)}/{str(materia.ano)}",
"des_numeracao": ' ',
"des_turno": get_turno(materia)[0],
- "situacao": materia.materiaemtramitacao_set.first().tramitacao.status,
+ "situacao": materia_em_tramitacao.tramitacao.status if materia_em_tramitacao else _("Não informada"),
"txt_ementa": str(materia.ementa),
"materia_observacao": materia.observacao,
"ordem_observacao": expediente_materia.observacao,
@@ -701,6 +702,7 @@ def get_sessao_plenaria(sessao, casa):
if numeracao:
dic_votacao["des_numeracao"] = (str(numeracao.numero_materia) + '/' + str(numeracao.ano_materia))
+ materia_em_tramitacao = materia.materiaemtramitacao_set.first()
dic_votacao.update({
"des_turno": get_turno(materia)[0],
# https://github.com/interlegis/sapl/issues/1009
@@ -708,7 +710,7 @@ def get_sessao_plenaria(sessao, casa):
"materia_observacao": materia.observacao,
"ordem_observacao": html.unescape(votacao.observacao),
"nom_autor": '',
- "situacao": materia.materiaemtramitacao_set.first().tramitacao.status
+ "situacao": materia_em_tramitacao.tramitacao.status if materia_em_tramitacao else _("Não informada")
})
autoria = materia.autoria_set.all()
diff --git a/sapl/sessao/views.py b/sapl/sessao/views.py
index b1e35d607..026f9a2fb 100755
--- a/sapl/sessao/views.py
+++ b/sapl/sessao/views.py
@@ -202,60 +202,46 @@ def customize_link_materia(context, pk, has_permission, is_expediente):
for i, row in enumerate(context['rows']):
materia = context['object_list'][i].materia
obj = context['object_list'][i]
- url_materia = reverse('sapl.materia:materialegislativa_detail',
- kwargs={'pk': materia.id})
- numeracao = materia.numeracao_set.first()
- autoria = materia.autoria_set.filter(
- primeiro_autor=True).first()
- autor = autoria.autor if autoria else None
- num_protocolo = materia.numero_protocolo
+ url_materia = reverse('sapl.materia:materialegislativa_detail', kwargs={'pk': materia.id})
+ numeracao = materia.numeracao_set.first() if materia.numeracao_set.first() else "-"
+ autoria = materia.autoria_set.filter(primeiro_autor=True).first()
+ autor = autoria.autor if autoria else "-"
+ num_protocolo = materia.numero_protocolo if materia.numero_protocolo else "-"
data_inicio_sessao = SessaoPlenaria.objects.get(id=pk).data_inicio
- tramitacao = Tramitacao.objects.filter(materia=materia,
- turno__isnull=False,
- data_tramitacao__lte=data_inicio_sessao
- ).exclude(turno__exact=''
- ).select_related(
- 'materia',
- 'status',
- 'materia__tipo').order_by(
- '-data_tramitacao'
- ).first()
- turno = ' '
+ tramitacao = Tramitacao.objects\
+ .select_related('materia', 'status', 'materia__tipo')\
+ .filter(materia=materia, turno__isnull=False, data_tramitacao__lte=data_inicio_sessao)\
+ .exclude(turno__exact='')\
+ .order_by('-data_tramitacao')\
+ .first()
+ turno = '-'
if tramitacao:
for t in Tramitacao.TURNO_CHOICES:
if t[0] == tramitacao.turno:
turno = t[1]
break
- situacao = MateriaEmTramitacao.objects.select_related("materia", "tramitacao")\
- .filter(materia=materia).first().tramitacao.status
-
- title_materia = """%s
- Processo: %s
- Autor: %s
- Protocolo: %s
- Turno: %s
- Situação: %s
- """ % (obj.materia.id,
- url_materia,
- row[1][0],
- numeracao if numeracao else '',
- autor if autor else '',
- num_protocolo if num_protocolo else '',
- turno,
- situacao if situacao else '')
-
+ materia_em_tramitacao = MateriaEmTramitacao.objects\
+ .select_related("materia", "tramitacao")\
+ .filter(materia=materia)\
+ .first()
+ situacao = materia_em_tramitacao.tramitacao.status if materia_em_tramitacao else '-'
+
+ title_materia = f"""{row[1][0]}
+ Processo: {numeracao}
+ Autor: {autor}
+ Protocolo: {num_protocolo}
+ Turno: {turno}
+ Situação: {situacao}
+ """
# Na linha abaixo, o segundo argumento é None para não colocar
# url em toda a string de title_materia
context['rows'][i][1] = (title_materia, None)
- exist_resultado = obj.registrovotacao_set.filter(
- materia=obj.materia).exists()
- exist_retirada = obj.retiradapauta_set.filter(
- materia=obj.materia).exists()
- exist_leitura = obj.registroleitura_set.filter(
- materia=obj.materia).exists()
+ exist_resultado = obj.registrovotacao_set.filter(materia=obj.materia).exists()
+ exist_retirada = obj.retiradapauta_set.filter(materia=obj.materia).exists()
+ exist_leitura = obj.registroleitura_set.filter(materia=obj.materia).exists()
if (obj.tipo_votacao != 4 and not exist_resultado and not exist_retirada) or\
(obj.tipo_votacao == 4 and not exist_leitura):
@@ -1726,13 +1712,13 @@ def get_materias_expediente(sessao_plenaria):
resultado = _('Matéria lida') if m.tipo_votacao == 4 else _('Matéria não votada')
resultado_observacao = _(' ')
-
+ materia_em_tramitacao = m.materia.materiaemtramitacao_set.first()
materias_expediente.append({
'ementa': m.materia.ementa,
'titulo': m.materia,
'numero': m.numero_ordem,
'turno': get_turno(tramitacao.turno) if tramitacao else None,
- 'situacao': m.materia.materiaemtramitacao_set.first().tramitacao.status,
+ 'situacao': materia_em_tramitacao.tramitacao.status if materia_em_tramitacao else _("Não informada"),
'resultado': resultado,
'resultado_observacao': resultado_observacao,
'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=m.materia_id)],
@@ -1846,14 +1832,14 @@ def get_materias_ordem_do_dia(sessao_plenaria):
voto_nao = " Não Informado"
voto_abstencoes = " Não Informado"
-
+ materia_em_tramitacao = o.materia.materiaemtramitacao_set.first()
materias_ordem.append({
'ementa': o.materia.ementa,
'ementa_observacao': o.observacao,
'titulo': o.materia,
'numero': o.numero_ordem,
'turno': get_turno(tramitacao.turno) if tramitacao else None,
- 'situacao': o.materia.materiaemtramitacao_set.first().tramitacao.status,
+ 'situacao': materia_em_tramitacao.tramitacao.status if materia_em_tramitacao else _("Não informada"),
'resultado': resultado,
'resultado_observacao': resultado_observacao,
'autor': [str(x.autor) for x in Autoria.objects.select_related("autor").filter(materia_id=o.materia_id)],