From 0058a3bdd41eb221c2ca8609c80424abe91a1774 Mon Sep 17 00:00:00 2001 From: littlewolf Date: Wed, 6 Nov 2019 23:13:57 +0300 Subject: [PATCH] Add skip_signal to utils --- apps/search_indexes/signals.py | 2 ++ apps/utils/signals.py | 12 ++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 apps/utils/signals.py diff --git a/apps/search_indexes/signals.py b/apps/search_indexes/signals.py index 3da50fb8..9284b20a 100644 --- a/apps/search_indexes/signals.py +++ b/apps/search_indexes/signals.py @@ -2,9 +2,11 @@ from django.db.models.signals import post_save from django.dispatch import receiver from django_elasticsearch_dsl.registries import registry +from utils.signals import skip_signal @receiver(post_save) +@skip_signal() def update_document(sender, **kwargs): from establishment.models import Establishment app_label = sender._meta.app_label diff --git a/apps/utils/signals.py b/apps/utils/signals.py new file mode 100644 index 00000000..e4ceba89 --- /dev/null +++ b/apps/utils/signals.py @@ -0,0 +1,12 @@ +from functools import wraps + + +def skip_signal(): + def _skip_signal(signal_func): + @wraps(signal_func) + def _decorator(sender, instance, **kwargs): + if hasattr(instance, 'skip_signal'): + return None + return signal_func(sender, instance=instance, **kwargs) + return _decorator + return _skip_signal