Browse Source

Fix(IntegracaoHub): tipo com descricao no poll — o payload canonico exige AB#1480

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 <noreply@anthropic.com>
pull/3858/head
kemuel 1 month ago
parent
commit
1db135d750
  1. 11
      sapl/integracao_hub/serializacao.py
  2. 4
      sapl/integracao_hub/views.py

11
sapl/integracao_hub/serializacao.py

@ -23,7 +23,11 @@ def _materia_da_proposicao(proposicao):
return None return None
return { return {
'id': materia.pk, '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, 'numero': materia.numero,
'ano': materia.ano, 'ano': materia.ano,
'numero_protocolo': materia.numero_protocolo, 'numero_protocolo': materia.numero_protocolo,
@ -36,7 +40,10 @@ def serializar_proposicao(proposicao):
'id': proposicao.pk, 'id': proposicao.pk,
'ano': proposicao.ano, 'ano': proposicao.ano,
'numero_proposicao': proposicao.numero_proposicao, '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, 'autor': proposicao.autor_id,
'ementa': proposicao.descricao, 'ementa': proposicao.descricao,
'rascunho': proposicao.data_envio is None, 'rascunho': proposicao.data_envio is None,

4
sapl/integracao_hub/views.py

@ -180,7 +180,7 @@ class ProposicoesCadastradasPollView(PollView):
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_400_BAD_REQUEST)
itens = (Proposicao.objects itens = (Proposicao.objects
.filter(id__gt=id_gt, cancelado=False) .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)]) .order_by('id')[:self._limite(request)])
return self._resposta(itens, serializar_proposicao) return self._resposta(itens, serializar_proposicao)
@ -197,7 +197,7 @@ class PollPorDataView(PollView):
filtro = {'%s__gte' % self.campo_cursor: desde, 'cancelado': False} filtro = {'%s__gte' % self.campo_cursor: desde, 'cancelado': False}
itens = (Proposicao.objects itens = (Proposicao.objects
.filter(**filtro) .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)]) .order_by(self.campo_cursor, 'id')[:self._limite(request)])
return self._resposta(itens, serializar_proposicao) return self._resposta(itens, serializar_proposicao)

Loading…
Cancel
Save