[Patchew-devel] [PATCH v2 09/12] maintainer: Add MessageQueued and MessageDropping events

Fam Zheng fam at euphon.net
Wed Nov 28 14:35:02 UTC 2018


From: Fam Zheng <famz at redhat.com>

These events are not used internally but is an interesting point where
users can receive notifications when the watched queue is updated.

Signed-off-by: Fam Zheng <famz at redhat.com>
---
 mods/maintainer.py | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/mods/maintainer.py b/mods/maintainer.py
index d342748..6b09057 100644
--- a/mods/maintainer.py
+++ b/mods/maintainer.py
@@ -16,7 +16,7 @@ from mod import PatchewModule
 from api.models import Message, Queue, WatchedQuery
 from django.shortcuts import render
 from api.search import SearchEngine
-from event import register_handler
+from event import declare_event, register_handler, emit_event
 
 class MaintainerModule(PatchewModule):
     """ Project maintainer related tasks """
@@ -25,14 +25,24 @@ class MaintainerModule(PatchewModule):
 
     def __init__(self):
         register_handler("ResultUpdate", self.on_result_update)
+        declare_event("MessageQueued",
+                      message="Message added",
+                      queue="The updated queue")
+        declare_event("MessageDropping",
+                      message="Message to be dropped",
+                      queue="Message is about to be dropping from a queue")
 
     def _add_to_queue(self, user, m, queue):
         for x in [m] + list(m.get_patches()):
-            Queue.objects.get_or_create(user=user, message=x, name=queue)
+            q, created = Queue.objects.get_or_create(user=user, message=x, name=queue)
+            if created:
+                emit_event("MessageQueued", message=x, queue=q)
 
     def _drop_from_queue(self, user, m, queue):
         query = Queue.objects.filter(user=user, message__in=m.get_patches() + [m],
                                      name=queue)
+        for q in query:
+            emit_event("MessageDropping", message=q.message, queue=q)
         q.delete()
 
     def _update_watch_queue(self, series):
-- 
2.17.2





More information about the Patchew-devel mailing list