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.filter_backends import (
FilteringFilterBackend,
GeoSpatialFilteringFilterBackend,
GeoSpatialOrderingFilterBackend,
OrderingFilterBackend,
)
@ -13,9 +12,24 @@ from search_indexes import serializers, filters, utils
from search_indexes.documents import EstablishmentDocument, NewsDocument
from search_indexes.documents.product import ProductDocument
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."""
document = NewsDocument
@ -94,7 +108,7 @@ class MobileNewsDocumentViewSet(NewsDocumentViewSet):
]
class EstablishmentDocumentViewSet(BaseDocumentViewSet):
class EstablishmentDocumentViewSet(CustomBaseDocumentViewSet):
"""Establishment document ViewSet."""
document = EstablishmentDocument
@ -319,7 +333,7 @@ class MobileEstablishmentDocumentViewSet(EstablishmentDocumentViewSet):
]
class ProductDocumentViewSet(BaseDocumentViewSet):
class ProductDocumentViewSet(CustomBaseDocumentViewSet):
"""Product document ViewSet."""
document = ProductDocument

View File

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