| 1 | from trac.db import Table, Column, Index, DatabaseManager |
|---|
| 2 | |
|---|
| 3 | |
|---|
| 4 | def do_upgrade(env, ver, db_backend, db): |
|---|
| 5 | """ |
|---|
| 6 | |
|---|
| 7 | """ |
|---|
| 8 | cursor = db.cursor() |
|---|
| 9 | |
|---|
| 10 | realm = 'peerreviewfile' |
|---|
| 11 | |
|---|
| 12 | cursor.execute("CREATE TEMPORARY TABLE peerreviewer_old AS SELECT * FROM peer_reviewer") |
|---|
| 13 | cursor.execute("DROP TABLE peer_reviewer") |
|---|
| 14 | |
|---|
| 15 | table_metadata = Table('peerreviewer', key=('reviewer_id', 'reviewer'))[ |
|---|
| 16 | Column('reviewer_id', auto_increment=True, type='int'), |
|---|
| 17 | Column('review_id', type='int'), |
|---|
| 18 | Column('reviewer'), |
|---|
| 19 | Column('status'), |
|---|
| 20 | Column('vote', type='int') |
|---|
| 21 | ] |
|---|
| 22 | |
|---|
| 23 | env.log.info("Updating table for class %s" % realm) |
|---|
| 24 | for stmt in db_backend.to_sql(table_metadata): |
|---|
| 25 | env.log.debug(stmt) |
|---|
| 26 | cursor.execute(stmt) |
|---|
| 27 | |
|---|
| 28 | cursor = db.cursor() |
|---|
| 29 | |
|---|
| 30 | cursor.execute("INSERT INTO peerreviewer (review_id,reviewer,status,vote) " |
|---|
| 31 | "SELECT review_id,reviewer,status,vote FROM peerreviewer_old") |
|---|
| 32 | cursor.execute("UPDATE peerreviewer SET status= 'new' WHERE status=0") |
|---|
| 33 | cursor.execute("DROP TABLE peerreviewer_old") |
|---|
| 34 | |
|---|
| 35 | # Add default workflow |
|---|
| 36 | |
|---|
| 37 | wf_data = [['reviewing', 'new -> in-review'], |
|---|
| 38 | ['reviewing.name', 'Start review'], |
|---|
| 39 | ['review_done', 'in-review -> reviewed'], |
|---|
| 40 | ['review_done.name', 'Mark review as done.'], |
|---|
| 41 | ['reopen', 'in-review, reviewed -> new'], |
|---|
| 42 | ['reopen.name', "Reset review state to 'new'"], |
|---|
| 43 | ] |
|---|
| 44 | wf_section = 'peerreviewer-resource_workflow' |
|---|
| 45 | |
|---|
| 46 | if wf_section not in env.config.sections(): |
|---|
| 47 | print "Adding default workflow for 'peerreviewer' to config." |
|---|
| 48 | for item in wf_data: |
|---|
| 49 | env.config.set(wf_section, item[0], item[1]) |
|---|
| 50 | env.config.save() |
|---|