Browse Source

Merge pull request #7 from Move-System/fix/inventario-tramitacao-materia

Fix(Reconciliacao): inventario devolve a materia de cada tramitacao AB#1480
pull/3858/head
Kemuel-sepulvida 1 month ago
committed by GitHub
parent
commit
1f33c65c42
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 16
      sapl/integracao_hub/tests/test_reconciliacao.py
  2. 12
      sapl/integracao_hub/views.py

16
sapl/integracao_hub/tests/test_reconciliacao.py

@ -73,7 +73,21 @@ def test_inventario_cursores_independentes_para_tramitacao(cliente_hub):
INVENTARIO, {'id_gt': proposicao.pk - 1, 'tramitacao_id_gt': tramitacao.pk}) INVENTARIO, {'id_gt': proposicao.pk - 1, 'tramitacao_id_gt': tramitacao.pk})
assert proposicao.pk in resposta.data['proposicoes'] assert proposicao.pk in resposta.data['proposicoes']
assert tramitacao.pk not in resposta.data['tramitacoes'] assert tramitacao.pk not in [t['id'] for t in resposta.data['tramitacoes']]
@pytest.mark.django_db(transaction=False)
def test_inventario_traz_a_materia_de_cada_tramitacao(cliente_hub):
# Sem a materia o hub compara id de tramitacao com id de materia e conta o
# acervo inteiro como lacuna (incidente de 14/08). A materia e o que diz se
# aquela tramitacao pertence a algo que o hub deveria ter integrado.
tramitacao = baker.make(Tramitacao)
resposta = cliente_hub.get(INVENTARIO, {'id_gt': 0, 'tramitacao_id_gt': 0})
entrada = next(t for t in resposta.data['tramitacoes']
if t['id'] == tramitacao.pk)
assert entrada['materia'] == tramitacao.materia_id
@pytest.mark.django_db(transaction=False) @pytest.mark.django_db(transaction=False)

12
sapl/integracao_hub/views.py

@ -277,9 +277,15 @@ class InventarioView(PollView):
proposicoes = list( proposicoes = list(
Proposicao.objects.filter(id__gt=id_gt, cancelado=False) Proposicao.objects.filter(id__gt=id_gt, cancelado=False)
.order_by('id').values_list('id', flat=True)[:limite]) .order_by('id').values_list('id', flat=True)[:limite])
tramitacoes = list( # Tramitacao vem com a materia junto porque a conferencia do hub NAO e por
Tramitacao.objects.filter(id__gt=tramitacao_id_gt) # id de tramitacao: o hub so integra tramitacao de materia que ele conhece
.order_by('id').values_list('id', flat=True)[:limite]) # (proposicao que virou materia depois do marco). Devolver so o id fazia o
# hub contar como lacuna toda tramitacao do acervo — falso positivo eterno,
# visto em 14/08: 500 "ausentes" que na verdade eram historico.
tramitacoes = [
{'id': t['id'], 'materia': t['materia_id']}
for t in Tramitacao.objects.filter(id__gt=tramitacao_id_gt)
.order_by('id').values('id', 'materia_id')[:limite]]
return Response({ return Response({
'proposicoes': proposicoes, 'proposicoes': proposicoes,

Loading…
Cancel
Save