[patchew-devel] [PATCH 2/7] Add SetProperty event

Fam Zheng posted 7 patches 7 years, 9 months ago
[patchew-devel] [PATCH 2/7] Add SetProperty event
Posted by Fam Zheng 7 years, 9 months ago
It is emitted after new properties are saved on Project or Message
objects.

Signed-off-by: Fam Zheng <famz@redhat.com>
---
 api/models.py | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/api/models.py b/api/models.py
index 0c8688a..2055957 100644
--- a/api/models.py
+++ b/api/models.py
@@ -102,7 +102,7 @@ class Project(models.Model):
                 r[m.name] = json.loads(m.value)
         return r
 
-    def set_property(self, prop, value):
+    def _do_set_property(self, prop, value):
         if value == None:
             ProjectProperty.objects.filter(project=self, name=prop).delete()
             return
@@ -119,6 +119,12 @@ class Project(models.Model):
         pp.blob = blob
         pp.save()
 
+    def set_property(self, prop, value):
+        old_val = self.get_property(prop)
+        self._do_set_property(prop, value)
+        emit_event("SetProperty", obj=self, name=prop, value=value,
+                   old_value=old_val)
+
     def total_series_count(self):
         return Message.objects.series_heads(project=self.name).count()
 
@@ -176,6 +182,11 @@ declare_event("SeriesComplete", project="project object",
 
 declare_event("MessageAdded", message="message object that is added")
 
+declare_event("SetProperty", obj="object to set the property",
+              name="name of the property",
+              value="value of the property",
+              old_value="old value if any")
+
 class MessageManager(models.Manager):
 
     class DuplicateMessageError(Exception):
@@ -408,7 +419,7 @@ class Message(models.Model):
         self._properties = r
         return r
 
-    def set_property(self, prop, value):
+    def _do_set_property(self, prop, value):
         if value == None:
             MessageProperty.objects.filter(message=self, name=prop).delete()
             return
@@ -427,6 +438,12 @@ class Message(models.Model):
         if hasattr(self, '_properties'):
             del(self._properties)
 
+    def set_property(self, prop, value):
+        old_val = self.get_property(prop)
+        self._do_set_property(prop, value)
+        emit_event("SetProperty", obj=self, name=prop, value=value,
+                   old_value=old_val)
+
     def get_sender(self):
         return json.loads(self.sender)
 
-- 
2.14.3