search crunches for mobiles

This commit is contained in:
Kuroshini 2019-12-12 18:20:57 +03:00
parent e2ec179f69
commit 16def7df5d
2 changed files with 19 additions and 5 deletions

View File

@ -3,7 +3,6 @@ from rest_framework import permissions
from django_elasticsearch_dsl_drf import constants from django_elasticsearch_dsl_drf import constants
from django_elasticsearch_dsl_drf.filter_backends import ( from django_elasticsearch_dsl_drf.filter_backends import (
FilteringFilterBackend, FilteringFilterBackend,
GeoSpatialFilteringFilterBackend,
GeoSpatialOrderingFilterBackend, GeoSpatialOrderingFilterBackend,
OrderingFilterBackend, OrderingFilterBackend,
) )
@ -13,9 +12,24 @@ from search_indexes import serializers, filters, utils
from search_indexes.documents import EstablishmentDocument, NewsDocument from search_indexes.documents import EstablishmentDocument, NewsDocument
from search_indexes.documents.product import ProductDocument from search_indexes.documents.product import ProductDocument
from utils.pagination import ESDocumentPagination from utils.pagination import ESDocumentPagination
from tag.models import TagCategory
class NewsDocumentViewSet(BaseDocumentViewSet): class CustomBaseDocumentViewSet(BaseDocumentViewSet):
def __init__(self, *args, **kwargs):
if self.filter_fields:
for name in TagCategory.objects.all().values('index_name'):
self.filter_fields.update({
f'{name["index_name"]}_id': {
'field': 'tags.id',
'lookups': [constants.LOOKUP_QUERY_IN]
}
})
super().__init__(*args, **kwargs)
class NewsDocumentViewSet(CustomBaseDocumentViewSet):
"""News document ViewSet.""" """News document ViewSet."""
document = NewsDocument document = NewsDocument
@ -94,7 +108,7 @@ class MobileNewsDocumentViewSet(NewsDocumentViewSet):
] ]
class EstablishmentDocumentViewSet(BaseDocumentViewSet): class EstablishmentDocumentViewSet(CustomBaseDocumentViewSet):
"""Establishment document ViewSet.""" """Establishment document ViewSet."""
document = EstablishmentDocument document = EstablishmentDocument
@ -319,7 +333,7 @@ class MobileEstablishmentDocumentViewSet(EstablishmentDocumentViewSet):
] ]
class ProductDocumentViewSet(BaseDocumentViewSet): class ProductDocumentViewSet(CustomBaseDocumentViewSet):
"""Product document ViewSet.""" """Product document ViewSet."""
document = ProductDocument document = ProductDocument

View File

@ -123,7 +123,7 @@ class FiltersTagCategoryBaseSerializer(serializers.ModelSerializer):
return obj in ['open_now', ] return obj in ['open_now', ]
def get_param_name(self, obj): def get_param_name(self, obj):
return 'tags_id__in' return f'{obj.index_name}_id__in'
def get_fields(self, *args, **kwargs): def get_fields(self, *args, **kwargs):
fields = super(FiltersTagCategoryBaseSerializer, self).get_fields() fields = super(FiltersTagCategoryBaseSerializer, self).get_fields()