39
|
1 #!/usr/bin/env python
|
|
2 #
|
|
3 # This script completely migrates a <= 0.8.x Trac environment to use the new
|
|
4 # default ticket model introduced in Trac 0.9.
|
|
5 #
|
|
6 # In particular, this means that the severity field is removed (or rather
|
|
7 # disabled by removing all possible values), and the priority values are
|
|
8 # changed to the more meaningful new defaults.
|
|
9 #
|
|
10 # Make sure to make a backup of the Trac environment before running this!
|
|
11
|
|
12 import os
|
|
13 import sys
|
|
14
|
|
15 from trac.env import open_environment
|
|
16 from trac.ticket.model import Priority, Severity
|
|
17
|
|
18 priority_mapping = {
|
|
19 'highest': 'blocker',
|
|
20 'high': 'critical',
|
|
21 'normal': 'major',
|
|
22 'low': 'minor',
|
|
23 'lowest': 'trivial'
|
|
24 }
|
|
25
|
|
26 def main():
|
|
27 if len(sys.argv) < 2:
|
|
28 print >> sys.stderr, 'usage: %s /path/to/projenv' \
|
|
29 % os.path.basename(sys.argv[0])
|
|
30 sys.exit(2)
|
|
31
|
|
32 env = open_environment(sys.argv[1])
|
|
33 db = env.get_db_cnx()
|
|
34
|
|
35 for oldprio, newprio in priority_mapping.items():
|
|
36 priority = Priority(env, oldprio, db)
|
|
37 priority.name = newprio
|
|
38 priority.update(db)
|
|
39
|
|
40 for severity in list(Severity.select(env, db)):
|
|
41 severity.delete(db)
|
|
42
|
|
43 db.commit()
|
|
44
|
|
45 if __name__ == '__main__':
|
|
46 main()
|