diff --git a/apps/search_indexes/views.py b/apps/search_indexes/views.py index 37ac5928..4d97a70e 100644 --- a/apps/search_indexes/views.py +++ b/apps/search_indexes/views.py @@ -4,7 +4,6 @@ from django_elasticsearch_dsl_drf import constants from django_elasticsearch_dsl_drf.filter_backends import ( FilteringFilterBackend, GeoSpatialFilteringFilterBackend, - FacetedSearchFilterBackend, ) from elasticsearch_dsl import TermsFacet from django_elasticsearch_dsl_drf.viewsets import BaseDocumentViewSet @@ -14,25 +13,7 @@ from search_indexes.documents.product import ProductDocument from utils.pagination import ESDocumentPagination -class FacetedResponseMixin: - def filter_queryset(self, queryset): - """ - Given a queryset, filter it with whichever filter backend is in use. - - You are unlikely to want to override this method, although you may need - to call it either from a list view, or from a custom `get_object` - method if you want to apply the configured filtering backend to the - default queryset. - """ - for backend in list(self.filter_backends): - bc = backend() - queryset = bc.filter_queryset(self.request, queryset, self) - if hasattr(bc, 'facets_computed'): - setattr(self, 'facets_computed', bc.facets_computed) - return queryset - - -class NewsDocumentViewSet(BaseDocumentViewSet, FacetedResponseMixin): +class NewsDocumentViewSet(BaseDocumentViewSet): """News document ViewSet.""" document = NewsDocument @@ -95,6 +76,14 @@ class NewsDocumentViewSet(BaseDocumentViewSet, FacetedResponseMixin): }, } + def filter_queryset(self, queryset): + for backend in list(self.filter_backends): + bc = backend() + queryset = bc.filter_queryset(self.request, queryset, self) + if hasattr(bc, 'facets_computed'): + setattr(self.paginator, 'facets_computed', bc.facets_computed) + return queryset + class MobileNewsDocumentViewSet(NewsDocumentViewSet): @@ -104,7 +93,7 @@ class MobileNewsDocumentViewSet(NewsDocumentViewSet): ] -class EstablishmentDocumentViewSet(BaseDocumentViewSet, FacetedResponseMixin): +class EstablishmentDocumentViewSet(BaseDocumentViewSet): """Establishment document ViewSet.""" document = EstablishmentDocument @@ -303,6 +292,14 @@ class EstablishmentDocumentViewSet(BaseDocumentViewSet, FacetedResponseMixin): } } + def filter_queryset(self, queryset): + for backend in list(self.filter_backends): + bc = backend() + queryset = bc.filter_queryset(self.request, queryset, self) + if hasattr(bc, 'facets_computed'): + setattr(self.paginator, 'facets_computed', bc.facets_computed) + return queryset + class MobileEstablishmentDocumentViewSet(EstablishmentDocumentViewSet): @@ -417,6 +414,14 @@ class ProductDocumentViewSet(BaseDocumentViewSet): }, } + def filter_queryset(self, queryset): + for backend in list(self.filter_backends): + bc = backend() + queryset = bc.filter_queryset(self.request, queryset, self) + if hasattr(bc, 'facets_computed'): + setattr(self.paginator, 'facets_computed', bc.facets_computed) + return queryset + class MobileProductDocumentViewSet(ProductDocumentViewSet):