Browse Source

Adiciona entrypoint no webservice solicitado no gertik 254790

master 4.0.25
Sesóstris Vieira 3 days ago
parent
commit
c8ae1f61c9
  1. 1
      sigi/apps/casas/api_urls.py
  2. 6
      sigi/apps/casas/serializers.py
  3. 28
      sigi/apps/casas/views.py

1
sigi/apps/casas/api_urls.py

@ -5,4 +5,5 @@ urlpatterns = [
path("orgaoatendido/", views.ApiOrgaoAtendidoList.as_view()),
path("orgaoatendido/<int:pk>/", views.ApiOrgaoAtendidoList.as_view()),
path("orgaoatendido/<slug:uf>/", views.ApiOrgaoAtendidoList.as_view()),
path("resumouf/", views.ApiOrgaoAtendidoUfTotal.as_view()),
]

6
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()

28
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"))
)

Loading…
Cancel
Save