|
|
@ -10,7 +10,7 @@ from rest_framework.permissions import (IsAuthenticated, |
|
|
|
AllowAny) |
|
|
|
from rest_framework.viewsets import GenericViewSet, ModelViewSet |
|
|
|
|
|
|
|
from sapl.api.forms import AutorChoiceFilterSet |
|
|
|
from sapl.api.forms import AutorChoiceFilterSet, AutorSearchForFieldFilterSet |
|
|
|
from sapl.api.serializers import (AutorChoiceSerializer, AutorSerializer, |
|
|
|
ChoiceSerializer, |
|
|
|
MateriaLegislativaSerializer, |
|
|
@ -79,7 +79,57 @@ class AutorListView(ListAPIView): |
|
|
|
o django-filter é desativado e a busca é feita |
|
|
|
no model do ContentType associado ao tipo. |
|
|
|
|
|
|
|
Outros campos |
|
|
|
- q_0 / q_1 - q_0 faz o código ignorar "q"... |
|
|
|
|
|
|
|
q_0 -> campos lookup a serem filtrados em qualquer Model |
|
|
|
que implemente SaplGenericRelation |
|
|
|
q_1 -> o valor que será pesquisado no lookup de q_0 |
|
|
|
|
|
|
|
q_0 e q_1 podem ser separados por ","... isso dará a |
|
|
|
possibilidade de filtrar mais de um campo. |
|
|
|
|
|
|
|
|
|
|
|
http://localhost:8000 |
|
|
|
/api/autor?tr=1&q_0=parlamentar_set__ativo&q_1=False |
|
|
|
/api/autor?tr=1&q_0=parlamentar_set__ativo&q_1=True |
|
|
|
/api/autor?tr=3&q_0=parlamentar_set__ativo&q_1=False |
|
|
|
/api/autor?tr=3&q_0=parlamentar_set__ativo&q_1=True |
|
|
|
|
|
|
|
http://localhost:8000 |
|
|
|
/api/autor?tr=1 |
|
|
|
&q_0=parlamentar_set__nome_completo__icontains, |
|
|
|
parlamentar_set__ativo |
|
|
|
&q_1=Carvalho,False |
|
|
|
/api/autor?tr=1 |
|
|
|
&q_0=parlamentar_set__nome_completo__icontains, |
|
|
|
parlamentar_set__ativo |
|
|
|
&q_1=Carvalho,True |
|
|
|
/api/autor?tr=3 |
|
|
|
&q_0=parlamentar_set__nome_completo__icontains, |
|
|
|
parlamentar_set__ativo |
|
|
|
&q_1=Carvalho,False |
|
|
|
/api/autor?tr=3 |
|
|
|
&q_0=parlamentar_set__nome_completo__icontains, |
|
|
|
parlamentar_set__ativo |
|
|
|
&q_1=Carvalho,True |
|
|
|
|
|
|
|
|
|
|
|
não importa o campo que vc passe de qualquer dos Models |
|
|
|
ligados... é possível ver que models são esses, |
|
|
|
na ocasião do commit deste texto, executando: |
|
|
|
In [6]: from sapl.utils import models_with_gr_for_model |
|
|
|
|
|
|
|
In [7]: models_with_gr_for_model(Autor) |
|
|
|
Out[7]: |
|
|
|
[sapl.parlamentares.models.Parlamentar, |
|
|
|
sapl.parlamentares.models.Frente, |
|
|
|
sapl.comissoes.models.Comissao, |
|
|
|
sapl.materia.models.Orgao, |
|
|
|
sapl.sessao.models.Bancada, |
|
|
|
sapl.sessao.models.Bloco] |
|
|
|
|
|
|
|
qualquer atributo destes models podem ser passados |
|
|
|
para busca |
|
|
|
""" |
|
|
|
|
|
|
|
TR_AUTOR_CHOICE_SERIALIZER = 1 |
|
|
@ -125,6 +175,9 @@ class AutorListView(ListAPIView): |
|
|
|
self.serializer_class = AutorSerializer |
|
|
|
self.permission_classes = (IsAuthenticated,) |
|
|
|
|
|
|
|
if self.filter_class and 'q_0' in request.GET: |
|
|
|
self.filter_class = AutorSearchForFieldFilterSet |
|
|
|
|
|
|
|
return ListAPIView.get(self, request, *args, **kwargs) |
|
|
|
|
|
|
|
def get_queryset(self): |
|
|
@ -207,6 +260,7 @@ class MateriaLegislativaViewSet(ListModelMixin, |
|
|
|
filter_backends = (DjangoFilterBackend,) |
|
|
|
filter_fields = ('numero', 'ano', 'tipo', ) |
|
|
|
|
|
|
|
|
|
|
|
class SessaoPlenariaViewSet(ListModelMixin, |
|
|
|
RetrieveModelMixin, |
|
|
|
GenericViewSet): |
|
|
|