post_save async

This commit is contained in:
Kuroshini 2020-01-22 20:54:52 +03:00
parent e94dd03875
commit bdf5c77f03

View File

@ -1,7 +1,6 @@
"""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)
@ -31,24 +30,26 @@ def update_document(sender, **kwargs):
@receiver(post_save)
def update_news(sender, **kwargs):
from news.models import News
from search_indexes.tasks import es_update
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',
('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)
for item in qs:
es_update(item)
@receiver(post_save)
def update_product(sender, **kwargs):
from product.models import Product
from search_indexes.tasks import es_update
app_label = sender._meta.app_label
model_name = sender._meta.model_name
instance = kwargs['instance']
@ -65,4 +66,4 @@ def update_product(sender, **kwargs):
if filter_name:
qs = Product.objects.filter(**{filter_name: instance})
for product in qs:
registry.update(product)
es_update(product)