Browse Source

Desmembra buscas de /api/autor em views específicas

pull/1356/head
LeandroRoberto 8 years ago
parent
commit
ecd48d55ca
  1. 1
      sapl/api/forms.py
  2. 8
      sapl/api/urls.py
  3. 47
      sapl/api/views.py
  4. 5
      sapl/templates/base/autor_form.html

1
sapl/api/forms.py

@ -51,7 +51,6 @@ class SaplGenericRelationSearchFilterSet(FilterSet):
if q: if q:
queryset = queryset.filter(q).order_by(*order_by) queryset = queryset.filter(q).order_by(*order_by)
print(queryset.query)
return queryset return queryset

8
sapl/api/urls.py

@ -3,7 +3,8 @@ from django.conf.urls import include, url
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from sapl.api.views import (AutorListView, MateriaLegislativaViewSet, from sapl.api.views import (AutorListView, MateriaLegislativaViewSet,
ModelChoiceView, SessaoPlenariaViewSet) ModelChoiceView, SessaoPlenariaViewSet,
AutoresPossiveisListView, AutoresProvaveisListView)
from .apps import AppConfig from .apps import AppConfig
@ -17,6 +18,11 @@ urlpatterns_router = router.urls
urlpatterns_api = [ urlpatterns_api = [
url(r'^autores-provaveis',
AutoresProvaveisListView.as_view(), name='autores_provaveis_list'),
url(r'^autores-possiveis',
AutoresPossiveisListView.as_view(), name='autores_possiveis_list'),
url(r'^autor', AutorListView.as_view(), name='autor_list'), url(r'^autor', AutorListView.as_view(), name='autor_list'),
url(r'^model/(?P<content_type>\d+)/(?P<pk>\d*)$', url(r'^model/(?P<content_type>\d+)/(?P<pk>\d*)$',

47
sapl/api/views.py

@ -57,14 +57,6 @@ class AutorListView(ListAPIView):
de Autores feita pelo django-filter de Autores feita pelo django-filter
-> processo usado nas pesquisas, o mais usado. -> processo usado nas pesquisas, o mais usado.
= 2 -> para (value, text) usados geralmente
em combobox, radiobox, checkbox, etc com pesquisa básica
de Autores mas feito para Possíveis Autores armazenados
segundo o ContentType associado ao Tipo de Autor via
relacionamento genérico.
Busca feita sem django-filter processada no get_queryset
-> processo no cadastro de autores para seleção e busca
dos possíveis autores
= 3 -> Devolve instancias da classe Autor filtradas pelo = 3 -> Devolve instancias da classe Autor filtradas pelo
django-filter django-filter
@ -132,10 +124,8 @@ class AutorListView(ListAPIView):
""" """
TR_AUTOR_CHOICE_SERIALIZER = 1 TR_AUTOR_CHOICE_SERIALIZER = 1
TR_CHOICE_SERIALIZER = 2
TR_AUTOR_SERIALIZER = 3 TR_AUTOR_SERIALIZER = 3
# FIXME aplicar permissão correta de usuário
permission_classes = (IsAuthenticatedOrReadOnly,) permission_classes = (IsAuthenticatedOrReadOnly,)
queryset = Autor.objects.all() queryset = Autor.objects.all()
model = Autor model = Autor
@ -152,7 +142,6 @@ class AutorListView(ListAPIView):
assert tr in ( assert tr in (
AutorListView.TR_AUTOR_CHOICE_SERIALIZER, AutorListView.TR_AUTOR_CHOICE_SERIALIZER,
AutorListView.TR_CHOICE_SERIALIZER,
AutorListView.TR_AUTOR_SERIALIZER), sapl_logger.info( AutorListView.TR_AUTOR_SERIALIZER), sapl_logger.info(
_("Tipo do Resultado a ser fornecido não existe!")) _("Tipo do Resultado a ser fornecido não existe!"))
except: except:
@ -161,16 +150,7 @@ class AutorListView(ListAPIView):
return tr return tr
def get(self, request, *args, **kwargs): def get(self, request, *args, **kwargs):
""" if self.tr == AutorListView.TR_AUTOR_SERIALIZER:
desativa o django-filter se a busca for por possiveis autores
parametro tr = TR_CHOICE_SERIALIZER
"""
if self.tr == AutorListView.TR_CHOICE_SERIALIZER:
self.filter_class = None
self.filter_backends = []
self.serializer_class = ChoiceSerializer
elif self.tr == AutorListView.TR_AUTOR_SERIALIZER:
self.serializer_class = AutorSerializer self.serializer_class = AutorSerializer
self.permission_classes = (IsAuthenticated,) self.permission_classes = (IsAuthenticated,)
@ -179,12 +159,20 @@ class AutorListView(ListAPIView):
return ListAPIView.get(self, request, *args, **kwargs) return ListAPIView.get(self, request, *args, **kwargs)
class AutoresProvaveisListView(ListAPIView):
permission_classes = (IsAuthenticatedOrReadOnly,)
queryset = Autor.objects.all()
model = Autor
filter_class = None
filter_backends = []
serializer_class = ChoiceSerializer
def get_queryset(self): def get_queryset(self):
queryset = ListAPIView.get_queryset(self) queryset = ListAPIView.get_queryset(self)
if self.filter_backends:
return queryset
params = {'content_type__isnull': False} params = {'content_type__isnull': False}
tipo = '' tipo = ''
@ -252,6 +240,17 @@ class AutorListView(ListAPIView):
return r return r
class AutoresPossiveisListView(ListAPIView):
permission_classes = (IsAuthenticatedOrReadOnly,)
queryset = Autor.objects.all()
model = Autor
filter_class = AutorChoiceFilterSet
filter_backends = (DjangoFilterBackend, )
serializer_class = ChoiceSerializer
class MateriaLegislativaViewSet(ListModelMixin, class MateriaLegislativaViewSet(ListModelMixin,
RetrieveModelMixin, RetrieveModelMixin,
GenericViewSet): GenericViewSet):

5
sapl/templates/base/autor_form.html

@ -28,12 +28,11 @@ $(document).ready(function(){
var update_search = function(pk, atualizar=true) { var update_search = function(pk, atualizar=true) {
var q = $('#id_q').val(); var q = $('#id_q').val();
var url = '{% url 'sapl.api:autor_list'%}' var url = '{% url 'sapl.api:autores_provaveis_list'%}'
var formData = { var formData = {
'q' : q, 'q' : q,
'tipo' : pk, 'tipo' : pk
'tr' : '2' // tipo_resultado = 2 - api fornecerá possíveis Autores
} }
$.get(url, formData).done(function(data) { $.get(url, formData).done(function(data) {
active('pesquisa'); active('pesquisa');

Loading…
Cancel
Save