Another agg ES response strategy #2

This commit is contained in:
Kuroshini 2019-11-28 21:31:12 +03:00
parent 68626e9fd5
commit 9cf82f03fe

View File

@ -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):