Paginator custom facets code optimization
This commit is contained in:
parent
c769049160
commit
1a57d0edd8
|
|
@ -23,6 +23,7 @@ class CustomFacetedSearchFilterBackend(FacetedSearchFilterBackend):
|
|||
return cur_facet['facet']._params['field'] != next(iter(x._params))
|
||||
return myfilter
|
||||
__facets = self.construct_facets(request, view)
|
||||
setattr(view.paginator, 'facets_computed', {})
|
||||
for __field, __facet in iteritems(__facets):
|
||||
agg = __facet['facet'].get_aggregation()
|
||||
agg_filter = Q('match_all')
|
||||
|
|
@ -50,7 +51,7 @@ class CustomFacetedSearchFilterBackend(FacetedSearchFilterBackend):
|
|||
'filter',
|
||||
filter=agg_filter
|
||||
).bucket(__field, agg)
|
||||
self.facets_computed.update({facet_name: qs.execute().aggregations[facet_name]})
|
||||
view.paginator.facets_computed.update({facet_name: qs.execute().aggregations[facet_name]})
|
||||
return queryset
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ from django_elasticsearch_dsl_drf import constants
|
|||
from django_elasticsearch_dsl_drf.filter_backends import (
|
||||
FilteringFilterBackend,
|
||||
GeoSpatialFilteringFilterBackend,
|
||||
GeoSpatialOrderingFilterBackend,
|
||||
)
|
||||
from elasticsearch_dsl import TermsFacet
|
||||
from django_elasticsearch_dsl_drf.viewsets import BaseDocumentViewSet
|
||||
|
|
@ -26,6 +27,7 @@ class NewsDocumentViewSet(BaseDocumentViewSet):
|
|||
filters.CustomSearchFilterBackend,
|
||||
FilteringFilterBackend,
|
||||
filters.CustomFacetedSearchFilterBackend,
|
||||
GeoSpatialOrderingFilterBackend,
|
||||
]
|
||||
|
||||
faceted_search_fields = {
|
||||
|
|
@ -76,14 +78,6 @@ class NewsDocumentViewSet(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 MobileNewsDocumentViewSet(NewsDocumentViewSet):
|
||||
|
||||
|
|
@ -111,6 +105,7 @@ class EstablishmentDocumentViewSet(BaseDocumentViewSet):
|
|||
filters.CustomSearchFilterBackend,
|
||||
GeoSpatialFilteringFilterBackend,
|
||||
filters.CustomFacetedSearchFilterBackend,
|
||||
GeoSpatialOrderingFilterBackend,
|
||||
]
|
||||
|
||||
faceted_search_fields = {
|
||||
|
|
@ -292,14 +287,6 @@ class EstablishmentDocumentViewSet(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 MobileEstablishmentDocumentViewSet(EstablishmentDocumentViewSet):
|
||||
|
||||
|
|
@ -322,6 +309,7 @@ class ProductDocumentViewSet(BaseDocumentViewSet):
|
|||
FilteringFilterBackend,
|
||||
filters.CustomSearchFilterBackend,
|
||||
filters.CustomFacetedSearchFilterBackend,
|
||||
GeoSpatialOrderingFilterBackend,
|
||||
]
|
||||
|
||||
search_fields = {
|
||||
|
|
@ -414,14 +402,6 @@ 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):
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user