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 e38fa028..3da50fb8 100644 --- a/apps/search_indexes/signals.py +++ b/apps/search_indexes/signals.py @@ -4,74 +4,74 @@ 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) -# -# if app_label == 'establishment': -# # todo: remove after migration -# from establishment import models as establishment_models -# if model_name == 'establishmenttype': -# if isinstance(instance, establishment_models.EstablishmentType): -# establishments = Establishment.objects.filter( -# establishment_type=instance) -# for establishment in establishments: -# registry.update(establishment) -# if model_name == 'establishmentsubtype': -# if isinstance(instance, establishment_models.EstablishmentSubType): -# establishments = Establishment.objects.filter( -# establishment_subtypes=instance) -# for establishment in establishments: -# registry.update(establishment) -# -# if app_label == 'tag': -# if model_name == 'tag': -# establishments = Establishment.objects.filter(tags=instance) -# for establishment in establishments: -# registry.update(establishment) -# -# -# @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'] -# -# if app_label == 'location': -# if model_name == 'country': -# qs = News.objects.filter(country=instance) -# for news in qs: -# registry.update(news) -# -# if app_label == 'news': -# if model_name == 'newstype': -# qs = News.objects.filter(news_type=instance) -# for news in qs: -# registry.update(news) -# -# if app_label == 'tag': -# if model_name == 'tag': -# qs = News.objects.filter(tags=instance) -# for news in qs: -# registry.update(news) +@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) + + if app_label == 'establishment': + # todo: remove after migration + from establishment import models as establishment_models + if model_name == 'establishmenttype': + if isinstance(instance, establishment_models.EstablishmentType): + establishments = Establishment.objects.filter( + establishment_type=instance) + for establishment in establishments: + registry.update(establishment) + if model_name == 'establishmentsubtype': + if isinstance(instance, establishment_models.EstablishmentSubType): + establishments = Establishment.objects.filter( + establishment_subtypes=instance) + for establishment in establishments: + registry.update(establishment) + + if app_label == 'tag': + if model_name == 'tag': + establishments = Establishment.objects.filter(tags=instance) + for establishment in establishments: + registry.update(establishment) + + +@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'] + + if app_label == 'location': + if model_name == 'country': + qs = News.objects.filter(country=instance) + for news in qs: + registry.update(news) + + if app_label == 'news': + if model_name == 'newstype': + qs = News.objects.filter(news_type=instance) + for news in qs: + registry.update(news) + + if app_label == 'tag': + if model_name == 'tag': + qs = News.objects.filter(tags=instance) + for news in qs: + registry.update(news) diff --git a/project/settings/development.py b/project/settings/development.py index 6c643301..a9cfe5be 100644 --- a/project/settings/development.py +++ b/project/settings/development.py @@ -26,8 +26,8 @@ ELASTICSEARCH_DSL = { ELASTICSEARCH_INDEX_NAMES = { - # 'search_indexes.documents.news': 'development_news', # temporarily disabled - # 'search_indexes.documents.establishment': 'development_establishment', + 'search_indexes.documents.news': 'development_news', # temporarily disabled + 'search_indexes.documents.establishment': 'development_establishment', }