diff --git a/apps/search_indexes/__init__.py b/apps/search_indexes/__init__.py index c45cbc38..6c812219 100644 --- a/apps/search_indexes/__init__.py +++ b/apps/search_indexes/__init__.py @@ -1 +1 @@ -# from search_indexes.signals import update_document +from search_indexes.signals import update_document diff --git a/apps/search_indexes/signals.py b/apps/search_indexes/signals.py index 1c7dbfe0..5bee4e17 100644 --- a/apps/search_indexes/signals.py +++ b/apps/search_indexes/signals.py @@ -1,67 +1,67 @@ -# """Search indexes app signals.""" -# from django.db.models.signals import post_save -# 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'] -# -# app_label_model_name_to_filter = { -# ('location','country'): 'address__city__country', -# ('location','city'): 'address__city', -# ('location', 'address'): 'address', -# # todo: remove after migration -# ('establishment', 'establishmenttype'): 'establishment_type', -# ('establishment', 'establishmentsubtype'): 'establishment_subtypes', -# ('tag', 'tag'): 'tags', -# } -# filter_name = app_label_model_name_to_filter.get((app_label, model_name)) -# if filter_name: -# qs = Establishment.objects.filter(**{filter_name: instance}) -# for product in qs: -# registry.update(product) -# -# -# @receiver(post_save) -# def update_news(sender, **kwargs): -# from news.models import News -# app_label = sender._meta.app_label -# model_name = sender._meta.model_name -# instance = kwargs['instance'] -# app_label_model_name_to_filter = { -# ('location','country'): 'country', -# ('news','newstype'): 'news_type', -# ('tag', 'tag'): 'tags', -# } -# filter_name = app_label_model_name_to_filter.get((app_label, model_name)) -# if filter_name: -# qs = News.objects.filter(**{filter_name: instance}) -# for product in qs: -# registry.update(product) -# -# -# @receiver(post_save) -# def update_product(sender, **kwargs): -# from product.models import Product -# app_label = sender._meta.app_label -# model_name = sender._meta.model_name -# instance = kwargs['instance'] -# app_label_model_name_to_filter = { -# ('product','productstandard'): 'standards', -# ('product', 'producttype'): 'product_type', -# ('tag','tag'): 'tags', -# ('location', 'wineregion'): 'wine_region', -# ('location', 'winesubregion'): 'wine_sub_region', -# ('location', 'winevillage'): 'wine_village', -# ('establishment', 'establishment'): 'establishment', -# } -# filter_name = app_label_model_name_to_filter.get((app_label, model_name)) -# if filter_name: -# qs = Product.objects.filter(**{filter_name: instance}) -# for product in qs: -# registry.update(product) +"""Search indexes app signals.""" +from django.db.models.signals import post_save +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'] + + app_label_model_name_to_filter = { + ('location','country'): 'address__city__country', + ('location','city'): 'address__city', + ('location', 'address'): 'address', + # todo: remove after migration + ('establishment', 'establishmenttype'): 'establishment_type', + ('establishment', 'establishmentsubtype'): 'establishment_subtypes', + ('tag', 'tag'): 'tags', + } + filter_name = app_label_model_name_to_filter.get((app_label, model_name)) + if filter_name: + qs = Establishment.objects.filter(**{filter_name: instance}) + for product in qs: + registry.update(product) + + +@receiver(post_save) +def update_news(sender, **kwargs): + from news.models import News + app_label = sender._meta.app_label + model_name = sender._meta.model_name + instance = kwargs['instance'] + app_label_model_name_to_filter = { + ('location','country'): 'country', + ('news','newstype'): 'news_type', + ('tag', 'tag'): 'tags', + } + filter_name = app_label_model_name_to_filter.get((app_label, model_name)) + if filter_name: + qs = News.objects.filter(**{filter_name: instance}) + for product in qs: + registry.update(product) + + +@receiver(post_save) +def update_product(sender, **kwargs): + from product.models import Product + app_label = sender._meta.app_label + model_name = sender._meta.model_name + instance = kwargs['instance'] + app_label_model_name_to_filter = { + ('product','productstandard'): 'standards', + ('product', 'producttype'): 'product_type', + ('tag','tag'): 'tags', + ('location', 'wineregion'): 'wine_region', + ('location', 'winesubregion'): 'wine_sub_region', + ('location', 'winevillage'): 'wine_village', + ('establishment', 'establishment'): 'establishment', + } + filter_name = app_label_model_name_to_filter.get((app_label, model_name)) + if filter_name: + qs = Product.objects.filter(**{filter_name: instance}) + for product in qs: + registry.update(product) diff --git a/project/settings/base.py b/project/settings/base.py index 4a2d0584..70427ef3 100644 --- a/project/settings/base.py +++ b/project/settings/base.py @@ -66,7 +66,7 @@ PROJECT_APPS = [ 'partner.apps.PartnerConfig', 'product.apps.ProductConfig', 'recipe.apps.RecipeConfig', - # 'search_indexes.apps.SearchIndexesConfig', + 'search_indexes.apps.SearchIndexesConfig', 'translation.apps.TranslationConfig', 'configuration.apps.ConfigurationConfig', 'timetable.apps.TimetableConfig', @@ -79,8 +79,8 @@ PROJECT_APPS = [ EXTERNAL_APPS = [ 'corsheaders', - # 'django_elasticsearch_dsl', - # 'django_elasticsearch_dsl_drf', + 'django_elasticsearch_dsl', + 'django_elasticsearch_dsl_drf', 'django_filters', 'drf_yasg', 'fcm_django',