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.contrib import admin
from django.utils.translation import gettext as _ from django.utils.translation import gettext as _
from sigi.apps.casas.models import Orgao
from sigi.apps.servidores.models import Servidor from sigi.apps.servidores.models import Servidor
from sigi.apps.convenios.models import Projeto from sigi.apps.convenios.models import Projeto
from sigi.apps.servicos.models import TipoServico, Servico from sigi.apps.servicos.models import TipoServico, Servico
@ -56,3 +59,25 @@ class ServicoFilter(admin.SimpleListFilter):
) )
return queryset.distinct("municipio__uf__nome", "nome") 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): 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") status = serializers.SerializerMethodField("get_status")
inicio_vigencia = serializers.SerializerMethodField("get_inicio_vigencia") inicio_vigencia = serializers.SerializerMethodField("get_inicio_vigencia")
termino_vigencia = serializers.SerializerMethodField( termino_vigencia = serializers.SerializerMethodField("get_termino_vigencia")
"get_termino_vigencia" documento_gescon = serializers.SerializerMethodField("get_documento_gescon")
)
documento_gescon = serializers.SerializerMethodField(
"get_documento_gescon"
)
anexo_set = AnexoConvenioSerializer(many=True, read_only=True) anexo_set = AnexoConvenioSerializer(many=True, read_only=True)
class Meta: class Meta:
model = Convenio model = Convenio
fields = [ fields = [
"sigla",
"projeto", "projeto",
"num_convenio", "num_convenio",
"status", "status",
@ -49,25 +47,33 @@ class ConvenioSerializer(serializers.ModelSerializer):
class EventoSerializer(serializers.ModelSerializer): class EventoSerializer(serializers.ModelSerializer):
categoria_sigla = serializers.SerializerMethodField("get_categoria_sigla")
categoria_nome = serializers.SerializerMethodField("get_categoria_nome")
class Meta: class Meta:
model = Evento model = Evento
fields = [ fields = [
"nome", "nome",
"categoria_nome",
"categoria_sigla",
"data_inicio", "data_inicio",
"data_termino", "data_termino",
"num_processo", "num_processo",
"total_participantes", "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): class ServicoSerializer(serializers.ModelSerializer):
tipo_servico = serializers.SlugRelatedField( sigla = serializers.ReadOnlyField(source="tipo_servico.sigla")
read_only=True, slug_field="nome" tipo_servico = serializers.ReadOnlyField(source="tipo_servico.nome")
)
url = serializers.SerializerMethodField("get_url") url = serializers.SerializerMethodField("get_url")
data_verificacao = serializers.SerializerMethodField( data_verificacao = serializers.SerializerMethodField("get_data_verificacao")
"get_data_verificacao"
)
resultado_verificacao = serializers.SerializerMethodField( resultado_verificacao = serializers.SerializerMethodField(
"get_resultado_verificacao" "get_resultado_verificacao"
) )
@ -75,6 +81,7 @@ class ServicoSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Servico model = Servico
fields = [ fields = [
"sigla",
"tipo_servico", "tipo_servico",
"data_ativacao", "data_ativacao",
"url", "url",
@ -102,6 +109,7 @@ class ServicoSerializer(serializers.ModelSerializer):
class OrgaoAtendidoSerializer(serializers.ModelSerializer): class OrgaoAtendidoSerializer(serializers.ModelSerializer):
tipo = serializers.StringRelatedField() tipo = serializers.StringRelatedField()
tipo_sigla = serializers.ReadOnlyField(source="tipo.sigla")
municipio = serializers.SlugRelatedField(read_only=True, slug_field="nome") municipio = serializers.SlugRelatedField(read_only=True, slug_field="nome")
uf_nome = serializers.SerializerMethodField("get_uf_nome") uf_nome = serializers.SerializerMethodField("get_uf_nome")
uf_sigla = serializers.SerializerMethodField("get_uf_sigla") uf_sigla = serializers.SerializerMethodField("get_uf_sigla")
@ -116,6 +124,7 @@ class OrgaoAtendidoSerializer(serializers.ModelSerializer):
"nome", "nome",
"sigla", "sigla",
"tipo", "tipo",
"tipo_sigla",
"cnpj", "cnpj",
"logradouro", "logradouro",
"bairro", "bairro",

9
sigi/apps/casas/views.py

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

Loading…
Cancel
Save