Mercurial > p > roundup > code
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)
