Browse Source

Evita ciclos na recuperação de mat. anexadas

pull/2811/head
Edward Ribeiro 6 years ago
committed by Leandro Roberto
parent
commit
06f604e7c0
  1. 45
      sapl/materia/tests/test_materia.py
  2. 17
      sapl/utils.py

45
sapl/materia/tests/test_materia.py

@ -78,6 +78,51 @@ def test_lista_materias_anexadas():
assert lista[1] == materia_anexada_anexada
@pytest.mark.django_db(transaction=False)
def test_lista_materias_anexadas_ciclo():
tipo_materia = mommy.make(
TipoMateriaLegislativa,
descricao="Tipo_Teste"
)
regime_tramitacao = mommy.make(
RegimeTramitacao,
descricao="Regime_Teste"
)
materia_principal = mommy.make(
MateriaLegislativa,
numero=20,
ano=2018,
data_apresentacao="2018-01-04",
regime_tramitacao=regime_tramitacao,
tipo=tipo_materia
)
materia_anexada = mommy.make(
MateriaLegislativa,
numero=21,
ano=2019,
data_apresentacao="2019-05-04",
regime_tramitacao=regime_tramitacao,
tipo=tipo_materia
)
mommy.make(
Anexada,
materia_principal=materia_principal,
materia_anexada=materia_anexada,
data_anexacao="2019-05-11"
)
mommy.make(
Anexada,
materia_principal=materia_anexada,
materia_anexada=materia_principal,
data_anexacao="2020-11-05"
)
lista = lista_anexados(materia_principal)
assert len(lista) == 1
assert lista[0] == materia_anexada
@pytest.mark.django_db(transaction=False)
def make_unidade_tramitacao(descricao):
# Cria uma comissão para ser a unidade de tramitação

17
sapl/utils.py

@ -965,16 +965,21 @@ def lista_anexados(principal, isMateriaLegislativa=True):
else: #DocAdm
from sapl.protocoloadm.models import Anexado
anexados_iterator = Anexado.objects.filter(documento_principal=principal)
while anexados_iterator:
anexados_tmp = []
for anx in anexados_iterator:
anexadas_temp = list(anexados_iterator)
while anexadas_temp:
anx = anexadas_temp.pop()
if isMateriaLegislativa:
if anx.materia_anexada not in anexados_total:
anexados_total.append(anx.materia_anexada)
anexados_anexado = Anexada.objects.filter(materia_principal=anx.materia_anexada)
anexadas_temp.extend(anexados_anexado)
else:
if anx.documento_anexado not in anexados_total:
anexados_total.append(anx.documento_anexado)
anexados_anexado = Anexado.objects.filter(documento_principal=anx.documento_anexado)
anexados_tmp.extend(anexados_anexado)
anexados_iterator = anexados_tmp
anexadas_temp.extend(anexados_anexado)
if principal in anexados_total:
anexados_total.remove(principal)
return anexados_total

Loading…
Cancel
Save