From 1db135d750c8ced71e6ff6cf6ae23c58ed038f70 Mon Sep 17 00:00:00 2001 From: kemuel Date: Thu, 6 Aug 2026 08:53:34 -0300 Subject: [PATCH] =?UTF-8?q?Fix(IntegracaoHub):=20tipo=20com=20descricao=20?= =?UTF-8?q?no=20poll=20=E2=80=94=20o=20payload=20canonico=20exige=20AB#148?= =?UTF-8?q?0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit O ProposicaoCadastrada/ProtocoloGerado do contrato pedem descricao (e sigla, na materia) do tipo; id sozinho obrigaria o hub a segunda consulta. Co-Authored-By: Claude Fable 5 --- sapl/integracao_hub/serializacao.py | 11 +++++++++-- sapl/integracao_hub/views.py | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/sapl/integracao_hub/serializacao.py b/sapl/integracao_hub/serializacao.py index 7c80f6c4e..ed8f1d581 100644 --- a/sapl/integracao_hub/serializacao.py +++ b/sapl/integracao_hub/serializacao.py @@ -23,7 +23,11 @@ def _materia_da_proposicao(proposicao): return None return { 'id': materia.pk, - 'tipo': materia.tipo_id, + 'tipo': { + 'id': materia.tipo_id, + 'sigla': materia.tipo.sigla if materia.tipo else None, + 'descricao': materia.tipo.descricao if materia.tipo else None, + }, 'numero': materia.numero, 'ano': materia.ano, 'numero_protocolo': materia.numero_protocolo, @@ -36,7 +40,10 @@ def serializar_proposicao(proposicao): 'id': proposicao.pk, 'ano': proposicao.ano, 'numero_proposicao': proposicao.numero_proposicao, - 'tipo': proposicao.tipo_id, + 'tipo': { + 'id': proposicao.tipo_id, + 'descricao': proposicao.tipo.descricao if proposicao.tipo else None, + }, 'autor': proposicao.autor_id, 'ementa': proposicao.descricao, 'rascunho': proposicao.data_envio is None, diff --git a/sapl/integracao_hub/views.py b/sapl/integracao_hub/views.py index 080040995..64d2b664d 100644 --- a/sapl/integracao_hub/views.py +++ b/sapl/integracao_hub/views.py @@ -180,7 +180,7 @@ class ProposicoesCadastradasPollView(PollView): status=status.HTTP_400_BAD_REQUEST) itens = (Proposicao.objects .filter(id__gt=id_gt, cancelado=False) - .select_related('materia_gerada', 'content_type') + .select_related('tipo', 'materia_gerada__tipo', 'content_type') .order_by('id')[:self._limite(request)]) return self._resposta(itens, serializar_proposicao) @@ -197,7 +197,7 @@ class PollPorDataView(PollView): filtro = {'%s__gte' % self.campo_cursor: desde, 'cancelado': False} itens = (Proposicao.objects .filter(**filtro) - .select_related('materia_gerada', 'content_type') + .select_related('tipo', 'materia_gerada__tipo', 'content_type') .order_by(self.campo_cursor, 'id')[:self._limite(request)]) return self._resposta(itens, serializar_proposicao)