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/", views.ApiOrgaoAtendidoList.as_view()),
path("orgaoatendido/<int:pk>/", views.ApiOrgaoAtendidoList.as_view()), path("orgaoatendido/<int:pk>/", views.ApiOrgaoAtendidoList.as_view()),
path("orgaoatendido/<slug:uf>/", 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): def get_uf_sigla(self, obj):
return obj.municipio.uf.sigla 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.filters import OrgaoAtendidoFilterset
from sigi.apps.casas.forms import FuncionarioForm, CnpjErradoForm from sigi.apps.casas.forms import FuncionarioForm, CnpjErradoForm
from sigi.apps.casas.models import Funcionario, Orgao, TipoOrgao 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.home.mixins import ContatoInterlegisViewMixin
from sigi.apps.servidores.models import Servidor from sigi.apps.servidores.models import Servidor
from sigi.apps.contatos.models import ( from sigi.apps.contatos.models import (
@ -693,3 +696,26 @@ class ApiOrgaoAtendidoList(generics.ListAPIView):
municipio__uf__sigla=self.kwargs["uf"].upper() municipio__uf__sigla=self.kwargs["uf"].upper()
) )
return queryset 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