"""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