From 7f26677c07386c57d031d65de6ba4294c1ecf6b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20Espino?= Date: Mon, 16 Feb 2015 14:49:59 +0100 Subject: [PATCH] Using transaction hooks to emit to taiga-events only after database commit --- taiga/events/signal_handlers.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/taiga/events/signal_handlers.py b/taiga/events/signal_handlers.py index 9c8c5921..eb0c0ce6 100644 --- a/taiga/events/signal_handlers.py +++ b/taiga/events/signal_handlers.py @@ -15,6 +15,8 @@ # along with this program. If not, see . from django.db.models import signals +from django.db import connection + from django.dispatch import receiver from taiga.base.utils.db import get_typename_for_model_instance @@ -33,10 +35,12 @@ def on_save_any_model(sender, instance, created, **kwargs): sesionid = mw.get_current_session_id() + type = "change" if created: - events.emit_event_for_model(instance, sessionid=sesionid, type="create") - else: - events.emit_event_for_model(instance, sessionid=sesionid, type="change") + type = "created" + + emit_event = lambda: events.emit_event_for_model(instance, sessionid=sesionid, type=type) + connection.on_commit(emit_event) def on_delete_any_model(sender, instance, **kwargs): @@ -48,4 +52,5 @@ def on_delete_any_model(sender, instance, **kwargs): return sesionid = mw.get_current_session_id() - events.emit_event_for_model(instance, sessionid=sesionid, type="delete") + emit_event = lambda: events.emit_event_for_model(instance, sessionid=sesionid, type="delete") + connection.on_commit(emit_event)