From 16def7df5d40ea315e663735ec06ac16748d931c Mon Sep 17 00:00:00 2001 From: Kuroshini Date: Thu, 12 Dec 2019 18:20:57 +0300 Subject: [PATCH] search crunches for mobiles --- apps/search_indexes/views.py | 22 ++++++++++++++++++---- apps/tag/serializers.py | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/apps/search_indexes/views.py b/apps/search_indexes/views.py index 387a6eae..e567f212 100644 --- a/apps/search_indexes/views.py +++ b/apps/search_indexes/views.py @@ -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 diff --git a/apps/tag/serializers.py b/apps/tag/serializers.py index f6266060..c842774b 100644 --- a/apps/tag/serializers.py +++ b/apps/tag/serializers.py @@ -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()