From a39e2698d46f8ceab78401b6f3cef3cf4ef64bec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeandroJata=C3=AD?= Date: Mon, 30 Jun 2025 11:53:55 -0300 Subject: [PATCH] feat: #3769 (#3770) --- sapl/api/views_comissoes.py | 17 ++++++++++++ .../0087_update_viewdb_materiaemtramitacao.py | 26 +++++++++++++++++++ sapl/materia/models.py | 12 ++++++++- 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 sapl/materia/migrations/0087_update_viewdb_materiaemtramitacao.py diff --git a/sapl/api/views_comissoes.py b/sapl/api/views_comissoes.py index 2126e93e9..a1722be3b 100644 --- a/sapl/api/views_comissoes.py +++ b/sapl/api/views_comissoes.py @@ -3,6 +3,10 @@ from django.apps.registry import apps from drfautoapi.drfautoapi import ApiViewSetConstrutor, \ customize, wrapper_queryset_response_for_drf_action +from sapl.comissoes.models import Comissao +from rest_framework.decorators import action + +from sapl.materia.models import MateriaEmTramitacao ApiViewSetConstrutor.build_class( @@ -10,3 +14,16 @@ ApiViewSetConstrutor.build_class( apps.get_app_config('comissoes') ] ) + +@customize(Comissao) +class _ComissaoViewSet: + + @action(detail=True) + def materiaemtramitacao(self, request, *args, **kwargs): + return self.get_materiaemtramitacao(**kwargs) + + @wrapper_queryset_response_for_drf_action(model=MateriaEmTramitacao) + def get_materiaemtramitacao(self, **kwargs): + return self.get_queryset().filter( + unidade_tramitacao_atual__comissao=kwargs['pk'], + ) \ No newline at end of file diff --git a/sapl/materia/migrations/0087_update_viewdb_materiaemtramitacao.py b/sapl/materia/migrations/0087_update_viewdb_materiaemtramitacao.py new file mode 100644 index 000000000..cfacc3aed --- /dev/null +++ b/sapl/materia/migrations/0087_update_viewdb_materiaemtramitacao.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.20 on 2019-08-27 20:13 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('materia', '0086_auto_20240711_1400'), + ] + + operations = [ + migrations.RunSQL(""" + create or replace view materia_materiaemtramitacao as + select m.id as id, + m.id as materia_id, + t.id as tramitacao_id, + t.unidade_tramitacao_destino_id as unidade_tramitacao_atual_id + from materia_materialegislativa m + inner join materia_tramitacao t on (m.id = t.materia_id) + where t.id = (select max(id) from materia_tramitacao where materia_id = m.id) + order by m.id DESC + """), + ] \ No newline at end of file diff --git a/sapl/materia/models.py b/sapl/materia/models.py index 4628695ee..56c56d645 100644 --- a/sapl/materia/models.py +++ b/sapl/materia/models.py @@ -934,7 +934,7 @@ class Proposicao(models.Model): """ Ao ser recebida, irá gerar uma nova matéria ou um documento acessorio de uma já existente - + materia_gerada = models.ForeignKey( MateriaLegislativa, blank=True, @@ -1263,6 +1263,16 @@ class MateriaEmTramitacao(models.Model): MateriaLegislativa, on_delete=models.DO_NOTHING) tramitacao = models.ForeignKey(Tramitacao, on_delete=models.DO_NOTHING) + unidade_tramitacao_atual = models.ForeignKey( + UnidadeTramitacao, + related_name='materiaemtramitacao_set', + on_delete=models.DO_NOTHING, + verbose_name=_('Unidade de Tramitação Atual'), + db_column='unidade_tramitacao_atual_id', + null=True, + blank=True + ) + class Meta: managed = False db_table = "materia_materiaemtramitacao"