[Python-checkins] r71868 - in tracker/instances/python-dev: detectors/autonosy.py schema.py

martin.v.loewis python-checkins at python.org
Sat Apr 25 11:16:11 CEST 2009


Author: martin.v.loewis
Date: Sat Apr 25 11:16:11 2009
New Revision: 71868

Log:
Issue258: Auto add users as nosy based on components.


Added:
   tracker/instances/python-dev/detectors/autonosy.py   (contents, props changed)
Modified:
   tracker/instances/python-dev/schema.py

Added: tracker/instances/python-dev/detectors/autonosy.py
==============================================================================
--- (empty file)
+++ tracker/instances/python-dev/detectors/autonosy.py	Sat Apr 25 11:16:11 2009
@@ -0,0 +1,34 @@
+# Auditor to automatically add users as nosy to issues when
+# the component field gets set
+
+# Python 2.3 ... 2.6 compatibility:
+from roundup.anypy.sets_ import set
+
+def autonosy(db, cl, nodeid, newvalues):
+
+    if 'components' not in newvalues:
+        # Without components, nobody needs to be added as nosy
+        return
+    else:
+        components = newvalues['components']
+
+    nosy = set()
+    if 'nosy' in newvalues:
+        new_nosy = newvalues.get('nosy', [])
+        new_nosy = [value for value in new_nosy if db.hasnode('user', value)]
+        nosy |= set(new_nosy)
+    else:
+        old_nosy = db.issue.get(nodeid, 'nosy')
+        nosy |= set(old_nosy)
+
+    for component in components:
+        users = db.component.get(component, 'add_as_nosy')
+        nosy |= set(users)
+
+    newvalues['nosy'] = list(nosy)
+
+
+def init(db):
+    db.issue.audit('create', autonosy)
+    db.issue.audit('set', autonosy)
+

Modified: tracker/instances/python-dev/schema.py
==============================================================================
--- tracker/instances/python-dev/schema.py	(original)
+++ tracker/instances/python-dev/schema.py	Sat Apr 25 11:16:11 2009
@@ -21,7 +21,8 @@
                   name=String(),
                   description=String(),
                   order=Number(),
-                  assign_to=Link('user'))
+                  assign_to=Link('user'),
+                  add_as_nosy=Multilink('user'))
 component.setkey('name')
 
 # Version


More information about the Python-checkins mailing list