| 1 | from trac.db import Table, Column |
|---|
| 2 | |
|---|
| 3 | def do_upgrade(env, ver, db_backend, db): |
|---|
| 4 | """ |
|---|
| 5 | |
|---|
| 6 | """ |
|---|
| 7 | cursor = db.cursor() |
|---|
| 8 | |
|---|
| 9 | realm = 'peerreview' |
|---|
| 10 | |
|---|
| 11 | status_update = [["new", "Open for review"], |
|---|
| 12 | ["reviewed", "Reviewed"], |
|---|
| 13 | ["closed", "Closed"], |
|---|
| 14 | ["forinclusion", "Ready for inclusion"]] |
|---|
| 15 | |
|---|
| 16 | for status in status_update: |
|---|
| 17 | cursor.execute("UPDATE peer_review SET status=%s WHERE status=%s", status) |
|---|
| 18 | |
|---|
| 19 | cursor.execute("CREATE TEMPORARY TABLE peerreview_old AS SELECT * FROM peer_review") |
|---|
| 20 | cursor.execute("DROP TABLE peer_review") |
|---|
| 21 | |
|---|
| 22 | table_metadata = Table('peerreview', key='review_id')[ |
|---|
| 23 | Column('review_id', auto_increment=True, type='int'), |
|---|
| 24 | Column('owner'), |
|---|
| 25 | Column('status'), |
|---|
| 26 | Column('created', type='int'), |
|---|
| 27 | Column('name'), |
|---|
| 28 | Column('notes'), |
|---|
| 29 | Column('parent_id', type='int'), |
|---|
| 30 | Column('project'), |
|---|
| 31 | Column('keywords') |
|---|
| 32 | ] |
|---|
| 33 | |
|---|
| 34 | env.log.info("Updating table for class %s" % realm) |
|---|
| 35 | for stmt in db_backend.to_sql(table_metadata): |
|---|
| 36 | env.log.debug(stmt) |
|---|
| 37 | cursor.execute(stmt) |
|---|
| 38 | |
|---|
| 39 | cursor = db.cursor() |
|---|
| 40 | |
|---|
| 41 | cursor.execute("INSERT INTO peerreview (review_id,owner,status,created,name,notes,parent_id,keywords) " |
|---|
| 42 | "SELECT review_id,owner,status,created,name,notes,parent_id,keywords FROM peerreview_old") |
|---|
| 43 | |
|---|
| 44 | cursor.execute("DROP TABLE peerreview_old") |
|---|
| 45 | |
|---|
| 46 | # Add default workflow |
|---|
| 47 | |
|---|
| 48 | wf_data = [['approve', 'reviewed -> approved'], |
|---|
| 49 | ['approve.name', 'Approve the review'], |
|---|
| 50 | ['close', 'new, reviewed, in-review -> closed'], |
|---|
| 51 | ['close.name', 'Close review'], |
|---|
| 52 | ['disapprove', 'reviewed -> disapproved'], |
|---|
| 53 | ['disapprove.name', 'Deny this review'], |
|---|
| 54 | ['reopen', 'closed, reviewed, approved, disapproved -> new'], |
|---|
| 55 | ['reopen.permissions', 'CODE_REVIEW_MGR'], |
|---|
| 56 | ['review-done', 'in-review -> reviewed'], |
|---|
| 57 | ['review-done.name', 'Mark as reviewed'], |
|---|
| 58 | ['reviewing', 'new -> in-review'], |
|---|
| 59 | ['reviewing.default', '5'], |
|---|
| 60 | ['reviewing.name', 'Start review'], |
|---|
| 61 | ['change_owner','* -> *'], |
|---|
| 62 | ['change_owner.name','Change Owner to'], |
|---|
| 63 | ['change_owner.operations','set_review_owner'], |
|---|
| 64 | ['change_owner.permissions','CODE_REVIEW_MGR'], |
|---|
| 65 | ['change_owner.default','-1'], |
|---|
| 66 | ] |
|---|
| 67 | wf_section = 'peerreview-resource_workflow' |
|---|
| 68 | |
|---|
| 69 | if wf_section not in env.config.sections(): |
|---|
| 70 | print "Adding default workflow for 'peerreview' to config." |
|---|
| 71 | for item in wf_data: |
|---|
| 72 | env.config.set(wf_section, item[0], item[1]) |
|---|
| 73 | env.config.save() |
|---|