Browse Source

Adiciona filtros na API de órgãos atendidos

master 4.0.24
Sesóstris Vieira 7 days ago
parent
commit
3679a64858
  1. 25
      sigi/apps/casas/filters.py
  2. 35
      sigi/apps/casas/serializers.py
  3. 9
      sigi/apps/casas/views.py

25
sigi/apps/casas/filters.py

@ -1,5 +1,8 @@
from django_filters import CharFilter
from django_filters.rest_framework import FilterSet
from django.contrib import admin
from django.utils.translation import gettext as _
from sigi.apps.casas.models import Orgao
from sigi.apps.servidores.models import Servidor
from sigi.apps.convenios.models import Projeto
from sigi.apps.servicos.models import TipoServico, Servico
@ -56,3 +59,25 @@ class ServicoFilter(admin.SimpleListFilter):
)
return queryset.distinct("municipio__uf__nome", "nome")
class OrgaoAtendidoFilterset(FilterSet):
convenio_sigla = CharFilter(
field_name="convenio__projeto__sigla", lookup_expr="iexact"
)
evento_categoria_sigla = CharFilter(
field_name="evento__tipo_evento__categoria", lookup_expr="iexact"
)
servico_sigla = CharFilter(
field_name="servico__tipo_servico__sigla", lookup_expr="iexact"
)
tipo_sigla = CharFilter(field_name="tipo__sigla", lookup_expr="iexact")
class Meta:
model = Orgao
fields = [
"convenio_sigla",
"evento_categoria_sigla",
"servico_sigla",
"tipo_sigla",
]

35
sigi/apps/casas/serializers.py

@ -12,20 +12,18 @@ class AnexoConvenioSerializer(serializers.ModelSerializer):
class ConvenioSerializer(serializers.ModelSerializer):
projeto = serializers.SlugRelatedField(read_only=True, slug_field="nome")
sigla = serializers.ReadOnlyField(source="projeto.sigla")
projeto = serializers.ReadOnlyField(source="projeto.nome")
status = serializers.SerializerMethodField("get_status")
inicio_vigencia = serializers.SerializerMethodField("get_inicio_vigencia")
termino_vigencia = serializers.SerializerMethodField(
"get_termino_vigencia"
)
documento_gescon = serializers.SerializerMethodField(
"get_documento_gescon"
)
termino_vigencia = serializers.SerializerMethodField("get_termino_vigencia")
documento_gescon = serializers.SerializerMethodField("get_documento_gescon")
anexo_set = AnexoConvenioSerializer(many=True, read_only=True)
class Meta:
model = Convenio
fields = [
"sigla",
"projeto",
"num_convenio",
"status",
@ -49,25 +47,33 @@ class ConvenioSerializer(serializers.ModelSerializer):
class EventoSerializer(serializers.ModelSerializer):
categoria_sigla = serializers.SerializerMethodField("get_categoria_sigla")
categoria_nome = serializers.SerializerMethodField("get_categoria_nome")
class Meta:
model = Evento
fields = [
"nome",
"categoria_nome",
"categoria_sigla",
"data_inicio",
"data_termino",
"num_processo",
"total_participantes",
]
def get_categoria_sigla(self, obj):
return obj.tipo_evento.categoria
def get_categoria_nome(self, obj):
return obj.tipo_evento.get_categoria_display()
class ServicoSerializer(serializers.ModelSerializer):
tipo_servico = serializers.SlugRelatedField(
read_only=True, slug_field="nome"
)
sigla = serializers.ReadOnlyField(source="tipo_servico.sigla")
tipo_servico = serializers.ReadOnlyField(source="tipo_servico.nome")
url = serializers.SerializerMethodField("get_url")
data_verificacao = serializers.SerializerMethodField(
"get_data_verificacao"
)
data_verificacao = serializers.SerializerMethodField("get_data_verificacao")
resultado_verificacao = serializers.SerializerMethodField(
"get_resultado_verificacao"
)
@ -75,6 +81,7 @@ class ServicoSerializer(serializers.ModelSerializer):
class Meta:
model = Servico
fields = [
"sigla",
"tipo_servico",
"data_ativacao",
"url",
@ -102,6 +109,7 @@ class ServicoSerializer(serializers.ModelSerializer):
class OrgaoAtendidoSerializer(serializers.ModelSerializer):
tipo = serializers.StringRelatedField()
tipo_sigla = serializers.ReadOnlyField(source="tipo.sigla")
municipio = serializers.SlugRelatedField(read_only=True, slug_field="nome")
uf_nome = serializers.SerializerMethodField("get_uf_nome")
uf_sigla = serializers.SerializerMethodField("get_uf_sigla")
@ -116,6 +124,7 @@ class OrgaoAtendidoSerializer(serializers.ModelSerializer):
"nome",
"sigla",
"tipo",
"tipo_sigla",
"cnpj",
"logradouro",
"bairro",

9
sigi/apps/casas/views.py

@ -19,8 +19,10 @@ from django.views.generic import (
ListView,
UpdateView,
)
from django_filters.rest_framework import DjangoFilterBackend
from django_weasyprint.views import WeasyTemplateResponse
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
@ -389,9 +391,7 @@ class CnpjDuplicadoReport(
)
class CnpjErradoReport(
LoginRequiredMixin, UserPassesTestMixin, ReportListView
):
class CnpjErradoReport(LoginRequiredMixin, UserPassesTestMixin, ReportListView):
title = _("Órgãos com CNPJ digitado errado")
empty_message = _("Nenhum órgão com CNPJ digitado errado")
queryset = (
@ -650,7 +650,8 @@ class ApiOrgaoAtendidoList(generics.ListAPIView):
"""
serializer_class = OrgaoAtendidoSerializer
filter_backends = [filters.SearchFilter]
filter_backends = [filters.SearchFilter, DjangoFilterBackend]
filterset_class = OrgaoAtendidoFilterset
search_fields = ["search_text"]
def get_queryset(self):

Loading…
Cancel
Save