From c8ae1f61c98f41211314507c24ea1538c8d6b121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ses=C3=B3stris=20Vieira?= Date: Wed, 24 Jun 2026 12:55:08 -0300 Subject: [PATCH] Adiciona entrypoint no webservice solicitado no gertik 254790 --- sigi/apps/casas/api_urls.py | 1 + sigi/apps/casas/serializers.py | 6 ++++++ sigi/apps/casas/views.py | 28 +++++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/sigi/apps/casas/api_urls.py b/sigi/apps/casas/api_urls.py index 5387716..3f63cc0 100644 --- a/sigi/apps/casas/api_urls.py +++ b/sigi/apps/casas/api_urls.py @@ -5,4 +5,5 @@ urlpatterns = [ path("orgaoatendido/", views.ApiOrgaoAtendidoList.as_view()), path("orgaoatendido//", views.ApiOrgaoAtendidoList.as_view()), path("orgaoatendido//", views.ApiOrgaoAtendidoList.as_view()), + path("resumouf/", views.ApiOrgaoAtendidoUfTotal.as_view()), ] diff --git a/sigi/apps/casas/serializers.py b/sigi/apps/casas/serializers.py index 5e71cd2..74285d1 100644 --- a/sigi/apps/casas/serializers.py +++ b/sigi/apps/casas/serializers.py @@ -145,3 +145,9 @@ class OrgaoAtendidoSerializer(serializers.ModelSerializer): def get_uf_sigla(self, obj): return obj.municipio.uf.sigla + + +class OrgaoAtendidoUfTotalSerializer(serializers.Serializer): + uf_sigla = serializers.CharField() + uf_nome = serializers.CharField() + total = serializers.IntegerField() diff --git a/sigi/apps/casas/views.py b/sigi/apps/casas/views.py index 0b94df0..1cfd051 100644 --- a/sigi/apps/casas/views.py +++ b/sigi/apps/casas/views.py @@ -25,7 +25,10 @@ from rest_framework import generics, filters from sigi.apps.casas.filters import OrgaoAtendidoFilterset from sigi.apps.casas.forms import FuncionarioForm, CnpjErradoForm from sigi.apps.casas.models import Funcionario, Orgao, TipoOrgao -from sigi.apps.casas.serializers import OrgaoAtendidoSerializer +from sigi.apps.casas.serializers import ( + OrgaoAtendidoSerializer, + OrgaoAtendidoUfTotalSerializer, +) from sigi.apps.home.mixins import ContatoInterlegisViewMixin from sigi.apps.servidores.models import Servidor from sigi.apps.contatos.models import ( @@ -693,3 +696,26 @@ class ApiOrgaoAtendidoList(generics.ListAPIView): municipio__uf__sigla=self.kwargs["uf"].upper() ) return queryset + + +class ApiOrgaoAtendidoUfTotal(ApiOrgaoAtendidoList): + """ + Total dos órgãos legislativos atendidos pelo Interlegis em cada UF. + """ + + serializer_class = OrgaoAtendidoUfTotalSerializer + filter_backends = [] + filterset_class = None + search_fields = [] + + def get_queryset(self): + queryset = super().get_queryset() + return ( + queryset.prefetch_related(None) + .order_by("municipio__uf__sigla") + .values( + uf_sigla=F("municipio__uf__sigla"), + uf_nome=F("municipio__uf__nome"), + ) + .annotate(total=Count("id")) + )