From 2908286e6c6cd31be4e4bc94f76b7cf9baed6ce8 Mon Sep 17 00:00:00 2001 From: evgeniy-st Date: Wed, 18 Sep 2019 10:50:00 +0300 Subject: [PATCH] price_level & toque_number settings --- apps/search_indexes/__init__.py | 1 + .../search_indexes/documents/establishment.py | 7 ++-- apps/search_indexes/signals.py | 33 +++++++++++++++++++ apps/search_indexes/views.py | 2 ++ 4 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 apps/search_indexes/signals.py diff --git a/apps/search_indexes/__init__.py b/apps/search_indexes/__init__.py index e69de29b..f610ac3f 100644 --- a/apps/search_indexes/__init__.py +++ b/apps/search_indexes/__init__.py @@ -0,0 +1 @@ +from search_indexes.signals import update_document \ No newline at end of file diff --git a/apps/search_indexes/documents/establishment.py b/apps/search_indexes/documents/establishment.py index a260c7f5..b82bc579 100644 --- a/apps/search_indexes/documents/establishment.py +++ b/apps/search_indexes/documents/establishment.py @@ -14,7 +14,8 @@ EstablishmentIndex.settings(number_of_shards=1, number_of_replicas=1) class EstablishmentDocument(Document): """Establishment document.""" - description = fields.ObjectField(properties=OBJECT_FIELD_PROPERTIES) + description = fields.ObjectField(attr='description_indexing', + properties=OBJECT_FIELD_PROPERTIES) tags = fields.ObjectField( properties={ 'id': fields.IntegerField(attr='id'), @@ -56,13 +57,9 @@ class EstablishmentDocument(Document): fields = ( 'id', 'name', - 'public_mark', 'toque_number', 'price_level', ) - def prepare_description(self, instance): - return instance.description - def prepare_tags(self, instance): return instance.tags_indexing diff --git a/apps/search_indexes/signals.py b/apps/search_indexes/signals.py new file mode 100644 index 00000000..21618155 --- /dev/null +++ b/apps/search_indexes/signals.py @@ -0,0 +1,33 @@ +"""Search indexes app signals.""" +from django.db.models.signals import post_save, post_delete +from django.dispatch import receiver +from django_elasticsearch_dsl.registries import registry + + +@receiver(post_save) +def update_document(sender, **kwargs): + from establishment.models import Establishment + app_label = sender._meta.app_label + model_name = sender._meta.model_name + instance = kwargs['instance'] + + if app_label == 'location': + if model_name == 'country': + establishments = Establishment.objects.filter( + address__city__country=instance) + for establishment in establishments: + registry.update(establishment) + + if model_name == 'city': + establishments = Establishment.objects.filter( + address__city=instance) + for establishment in establishments: + registry.update(establishment) + + if model_name == 'Address': + establishments = Establishment.objects.filter( + address=instance) + for establishment in establishments: + registry.update(establishment) + +# todo: delete document diff --git a/apps/search_indexes/views.py b/apps/search_indexes/views.py index 9f7164d0..31d982a4 100644 --- a/apps/search_indexes/views.py +++ b/apps/search_indexes/views.py @@ -66,6 +66,7 @@ class EstablishmentDocumentViewSet(BaseDocumentViewSet): constants.LOOKUP_QUERY_GTE, constants.LOOKUP_QUERY_LT, constants.LOOKUP_QUERY_LTE, + constants.LOOKUP_QUERY_IN, ] }, 'price_level': { @@ -76,6 +77,7 @@ class EstablishmentDocumentViewSet(BaseDocumentViewSet): constants.LOOKUP_QUERY_GTE, constants.LOOKUP_QUERY_LT, constants.LOOKUP_QUERY_LTE, + constants.LOOKUP_QUERY_IN, ] }, 'country_id': {