Mercurial > p > roundup > code
annotate detectors/creator_resolution.py @ 2494:ea7fb2f416db
fixed RDBMS Class.find() to handle None value in multiple find...
...and a merge from maint-0-7
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Wed, 23 Jun 2004 23:19:07 +0000 |
| parents | 43151ac10819 |
| children |
| rev | line source |
|---|---|
|
2194
43151ac10819
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2193
diff
changeset
|
1 # This detector was written by richard@mechanicalcat.net and it's been |
|
43151ac10819
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2193
diff
changeset
|
2 # placed in the Public Domain. Copy and modify to your heart's content. |
|
43151ac10819
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2193
diff
changeset
|
3 |
|
43151ac10819
*** empty log message ***
Richard Jones <richard@users.sourceforge.net>
parents:
2193
diff
changeset
|
4 #$Id: creator_resolution.py,v 1.2 2004-04-07 06:32:54 richard Exp $ |
|
2193
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
5 |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
6 from roundup.exceptions import Reject |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
7 |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
8 def creator_resolution(db, cl, nodeid, newvalues): |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
9 '''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
|
10 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
|
11 "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
|
12 status) |
|
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 if not newvalues.has_key('status'): |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
15 return |
|
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 # get the resolved state ID |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
18 resolved_id = db.status.lookup('resolved') |
|
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 if newvalues['status'] != resolved_id: |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
21 return |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
22 |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
23 # check the assignedto |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
24 assignedto = newvalues.get('assignedto', cl.get(nodeid, 'assignedto')) |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
25 creator = cl.get(nodeid, 'creator') |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
26 if assignedto == creator: |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
27 if db.getuid() != creator: |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
28 name = db.user.get(creator, 'username') |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
29 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
|
30 return |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
31 |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
32 # set the assignedto and status |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
33 newvalues['assignedto'] = creator |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
34 try: |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
35 status = db.status.lookup('confirm-done') |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
36 except KeyError: |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
37 status = db.status.lookup('in-progress') |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
38 newvalues['status'] = status |
|
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 def init(db): |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
41 db.issue.audit('set', creator_resolution) |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
42 |
|
b1a29edd6214
added another sample detector
Richard Jones <richard@users.sourceforge.net>
parents:
diff
changeset
|
43 # vim: set filetype=python ts=4 sw=4 et si |
