"""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'] 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': if model_name == 'establishmenttype': establishments = Establishment.objects.filter( establishment_type=instance) for establishment in establishments: registry.update(establishment) if model_name == '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)