Mercurial > p > roundup > code
diff detectors/creator_resolution.py @ 4627:6b32e9dac625
Restore sample detectors removed by 07c5d833dcb2 (issue2550574)
| author | Thomas Arendsen Hein <thomas@intevation.de> |
|---|---|
| date | Wed, 16 May 2012 11:17:03 +0200 |
| parents | |
| children | b3f46759b4d1 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/detectors/creator_resolution.py Wed May 16 11:17:03 2012 +0200 @@ -0,0 +1,43 @@ +# This detector was written by richard@mechanicalcat.net and it's been +# placed in the Public Domain. Copy and modify to your heart's content. + +#$Id: creator_resolution.py,v 1.2 2004-04-07 06:32:54 richard Exp $ + +from roundup.exceptions import Reject + +def creator_resolution(db, cl, nodeid, newvalues): + '''Catch attempts to set the status to "resolved" - if the assignedto + user isn't the creator, then set the status to "in-progress" (try + "confirm-done" first though, but "classic" Roundup doesn't have that + status) + ''' + if not newvalues.has_key('status'): + return + + # get the resolved state ID + resolved_id = db.status.lookup('resolved') + + if newvalues['status'] != resolved_id: + return + + # check the assignedto + assignedto = newvalues.get('assignedto', cl.get(nodeid, 'assignedto')) + creator = cl.get(nodeid, 'creator') + if assignedto == creator: + if db.getuid() != creator: + name = db.user.get(creator, 'username') + raise Reject, 'Only the creator (%s) may close this issue'%name + return + + # set the assignedto and status + newvalues['assignedto'] = creator + try: + status = db.status.lookup('confirm-done') + except KeyError: + status = db.status.lookup('in-progress') + newvalues['status'] = status + +def init(db): + db.issue.audit('set', creator_resolution) + +# vim: set filetype=python ts=4 sw=4 et si
