annotate detectors/creator_resolution.py @ 2193:b1a29edd6214

added another sample detector
author Richard Jones <richard@users.sourceforge.net>
date Wed, 07 Apr 2004 06:31:47 +0000
parents
children 43151ac10819
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2193
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
1 #$Id: creator_resolution.py,v 1.1 2004-04-07 06:31:47 richard Exp $
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
2
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
3 from roundup.exceptions import Reject
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
4
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
5 def creator_resolution(db, cl, nodeid, newvalues):
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
6 '''Catch attempts to set the status to "resolved" - if the assignedto
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
7 user isn't the creator, then set the status to "in-progress" (try
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
8 "confirm-done" first though, but "classic" Roundup doesn't have that
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
9 status)
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
10 '''
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
11 if not newvalues.has_key('status'):
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
12 return
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
13
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
14 # get the resolved state ID
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
15 resolved_id = db.status.lookup('resolved')
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
16
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
17 if newvalues['status'] != resolved_id:
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
18 return
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
19
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
20 # check the assignedto
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
21 assignedto = newvalues.get('assignedto', cl.get(nodeid, 'assignedto'))
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
22 creator = cl.get(nodeid, 'creator')
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
23 if assignedto == creator:
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
24 if db.getuid() != creator:
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
25 name = db.user.get(creator, 'username')
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
26 raise Reject, 'Only the creator (%s) may close this issue'%name
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
27 return
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
28
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
29 # set the assignedto and status
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
30 newvalues['assignedto'] = creator
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
31 try:
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
32 status = db.status.lookup('confirm-done')
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
33 except KeyError:
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
34 status = db.status.lookup('in-progress')
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
35 newvalues['status'] = status
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
36
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
37 def init(db):
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
38 db.issue.audit('set', creator_resolution)
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
39
b1a29edd6214 added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff changeset
40 # vim: set filetype=python ts=4 sw=4 et si

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