diff website/issues/detectors/statusauditor.py @ 6424:13e8f188f8dd

Add pending -> open auditor; fix meta tag description Open a pending ticket if message is added by anybody except the assignedto person. meta name=descripton was missing /> and was using magic quotes.
author John Rouillard <rouilj@ieee.org>
date Thu, 27 May 2021 15:06:28 -0400
parents 0942fe89e82e
children
line wrap: on
line diff
--- a/website/issues/detectors/statusauditor.py	Thu May 27 14:16:16 2021 -0400
+++ b/website/issues/detectors/statusauditor.py	Thu May 27 15:06:28 2021 -0400
@@ -7,7 +7,52 @@
     new = db.status.lookup('new')
     newvalues['status'] = new
 
+def update_pending(db, cl, nodeid, newvalues):
+    ''' If the issue is currently 'pending' and person other than assigned
+        updates it, then set it to 'open'.
+    '''
+    # don't fire if there's no new message (ie. update)
+    if 'messages' not in newvalues:
+        return
+    if newvalues['messages'] == cl.get(nodeid, 'messages'):
+        return
+
+    # get the open state ID
+    try:
+        open_id = db.status.lookup('open')
+    except KeyError:
+        # no open state, ignore all this stuff
+        return
+
+    # get the current value
+    current_status = cl.get(nodeid, 'status')
+
+    # see if there's an explicit change in this transaction
+    if 'status' in newvalues:
+        # yep, skip
+        return
+
+    assignee = cl.get(nodeid, 'assignee')
+    if assignee == db.getuid():
+        # this change is brought to you by the assignee and number 4
+        # so don't change status.
+        return
+
+    # determine the id of 'pending'
+    fromstates = []
+    for state in 'pending'.split():
+        try:
+            fromstates.append(db.status.lookup(state))
+        except KeyError:
+            pass
+
+    # ok, there's no explicit change, so check if we are in a state that
+    # should be changed
+    if current_status in fromstates + [None]:
+        # yep, we're now open
+        newvalues['status'] = open_id
 
 def init(db):
     # fire before changes are made
     db.issue.audit('create', preset_new)
+    db.issue.audit('set', update_pending)

Roundup Issue Tracker: http://roundup-tracker.org/