82 lines
3.0 KiB
Python
82 lines
3.0 KiB
Python
"""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 == 'main':
|
|
if model_name == 'metadata':
|
|
establishments = Establishment.objects.filter(tags__metadata=instance)
|
|
for establishment in establishments:
|
|
registry.update(establishment)
|
|
if model_name == 'metadatacontent':
|
|
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 == 'main':
|
|
if model_name == 'metadata':
|
|
qs = News.objects.filter(tags__metadata=instance)
|
|
for news in qs:
|
|
registry.update(news)
|
|
if model_name == 'metadatacontent':
|
|
qs = News.objects.filter(tags=instance)
|
|
for news in qs:
|
|
registry.update(news)
|