diff --git a/sapl/api/core/__init__.py b/sapl/api/core/__init__.py index 78b2c2f22..b574af767 100644 --- a/sapl/api/core/__init__.py +++ b/sapl/api/core/__init__.py @@ -25,6 +25,9 @@ from sapl.api.permissions import SaplModelPermissions from sapl.api.serializers import ChoiceSerializer, ParlamentarSerializer, \ ParlamentarEditSerializer, ParlamentarResumeSerializer +# ATENÇÃO: MUDANÇAS NO CORE DEVEM SER REALIZADAS COM +# EXTREMA CAUTELA + class BusinessRulesNotImplementedMixin: @@ -65,7 +68,7 @@ class SaplApiViewSetConstrutor(): # Carrega todas as classes de sapl.api.forms que possuam # "FilterSet" como Sufixo. - from sapl.api import forms + from sapl.api.core import forms filters_classes = inspect.getmembers(forms) filters_classes = {i[0]: i[1] for i in filter( lambda x: x[0].endswith('FilterSet'), diff --git a/sapl/api/core/filters.py b/sapl/api/core/filters.py index 59cf860a1..8ece06240 100644 --- a/sapl/api/core/filters.py +++ b/sapl/api/core/filters.py @@ -9,6 +9,9 @@ from django_filters.filterset import FilterSet from django_filters.utils import resolve_field, get_all_model_fields import django_filters +# ATENÇÃO: MUDANÇAS NO CORE DEVEM SER REALIZADAS COM +# EXTREMA CAUTELA E CONSCIENTE DOS IMPACTOS NA API + class SaplFilterSetMixin(FilterSet): diff --git a/sapl/api/core/forms.py b/sapl/api/core/forms.py new file mode 100644 index 000000000..ea61026c7 --- /dev/null +++ b/sapl/api/core/forms.py @@ -0,0 +1,25 @@ + +from sapl.api.core.filters import SaplFilterSetMixin +from sapl.sessao.models import SessaoPlenaria + +# ATENÇÃO: MUDANÇAS NO CORE DEVEM SER REALIZADAS COM +# EXTREMA CAUTELA E CONSCIENTE DOS IMPACTOS NA API + +# FILTER SET dentro do core devem ser criados se o intuíto é um filter-set +# para o list da api. +# filter_set para actions, devem ser criados fora do core. + +# A CLASSE SessaoPlenariaFilterSet não é necessária +# o construtor da api construiría uma igual +# mas está aqui para demonstrar que caso queira customizar um filter_set +# que a api consiga recuperá-lo, para os endpoints básicos +# deve seguir os critérios de nomenclatura e herança + +# class [Model]FilterSet(SaplFilterSetMixin): +# class Meta(SaplFilterSetMixin.Meta): + + +class SessaoPlenariaFilterSet(SaplFilterSetMixin): + + class Meta(SaplFilterSetMixin.Meta): + model = SessaoPlenaria diff --git a/sapl/api/forms.py b/sapl/api/forms.py index be2034bc6..e69de29bb 100644 --- a/sapl/api/forms.py +++ b/sapl/api/forms.py @@ -1,18 +0,0 @@ - -from sapl.api.core.filters import SaplFilterSetMixin -from sapl.sessao.models import SessaoPlenaria - -# esta classe não é necessária -# a api construiría uma igual -# mas está demonstrar que caso queira customizar um filter_set -# que a api consiga recuperá-lo, para os endpoints básicos -# deve seguir os critérios de nomenclatura e herança - -# class [Model]FilterSet(SaplFilterSetMixin): -# class Meta(SaplFilterSetMixin.Meta): - - -class SessaoPlenariaFilterSet(SaplFilterSetMixin): - - class Meta(SaplFilterSetMixin.Meta): - model = SessaoPlenaria diff --git a/sapl/api/serializers.py b/sapl/api/serializers.py index fe3133055..f6bcad004 100644 --- a/sapl/api/serializers.py +++ b/sapl/api/serializers.py @@ -11,38 +11,6 @@ from sapl.base.models import Autor, CasaLegislativa from sapl.parlamentares.models import Parlamentar, Mandato, Legislatura -class IntRelatedField(StringRelatedField): - - def to_representation(self, value): - return int(value) - - -class ChoiceSerializer(serializers.Serializer): - value = serializers.SerializerMethodField() - text = serializers.SerializerMethodField() - - def get_text(self, obj): - return obj[1] - - def get_value(self, obj): - return obj[0] - - -class ModelChoiceSerializer(ChoiceSerializer): - - def get_text(self, obj): - return str(obj) - - def get_value(self, obj): - return obj.id - - -class ModelChoiceObjectRelatedField(serializers.RelatedField): - - def to_representation(self, value): - return ModelChoiceSerializer(value).data - - class AutorSerializer(serializers.ModelSerializer): # AutorSerializer sendo utilizado pelo gerador automático da api devidos aos # critérios anotados em views.py