source: peerreviewplugin/tags/0.12/3.1/codereview/upgrades/db_peerreviewer_3.py

Last change on this file was 15325, checked in by Cinc-th, 8 years ago
  • Config settings for peerreview workflow were written during upgrade of peerreviewer data and vice versa.
  • Introduced state in-review for reviews
File size: 1.8 KB
Line 
1from trac.db import Table, Column, Index, DatabaseManager
2
3
4def 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()
Note: See TracBrowser for help on using the repository browser.