annotate examples/trac/scripts/tracdb2env @ 39:93b4dcbafd7b trunk

Copy Trac to main branch.
author cmlenz
date Mon, 03 Jul 2006 18:53:27 +0000
parents
children
rev   line source
39
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
1 #!/usr/bin/env python
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
2 import os
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
3 import sys
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
4 import sqlite
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
5 import ConfigParser
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
6 from trac.env import Environment
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
7
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
8 additional_config = \
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
9 (('notification', 'smtp_enabled', 'false'),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
10 ('notification', 'smtp_server', 'localhost'),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
11 ('notification', 'smtp_replyto', 'trac@localhost'),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
12 ('logging', 'log_type', 'none'),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
13 ('logging', 'log_file', 'trac.log'),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
14 ('logging', 'log_level', 'DEBUG'),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
15 ('attachment', 'max_size', '262144'),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
16 ('trac', 'default_charset', 'iso-8859-15'),
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
17 ('trac', 'database', 'sqlite:db/trac.db'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
18
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
19 def db2env(db_path, env_path):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
20 env = Environment(env_path, create=1)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
21 # Open the databases
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
22 old_cnx = sqlite.connect(db_path)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
23 new_cnx = env.get_db_cnx()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
24 old_cursor = old_cnx.cursor()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
25 new_cursor = new_cnx.cursor()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
26 convert_config(env, old_cursor)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
27 convert_db(old_cursor, new_cursor)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
28 new_cursor.execute("INSERT INTO system VALUES('database_version', '7')")
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
29 new_cnx.commit()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
30
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
31 def convert_config(env, old_cursor):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
32 old_cursor.execute('SELECT section, name, value FROM config')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
33 while 1:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
34 row = old_cursor.fetchone()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
35 if not row:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
36 break
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
37 row = [row[0], row[1], row[2]]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
38 if row[0] == 'general':
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
39 row[0] = 'trac'
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
40 if row[1] == 'database_version':
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
41 continue
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
42 env.set_config(row[0], row[1], row[2])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
43 for v in additional_config:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
44 env.set_config(*v)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
45 env.save_config()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
46
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
47 def to_utf8(row):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
48 x = []
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
49 for v in row:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
50 if type(v) == type(''):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
51 try:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
52 u = unicode(v, 'utf-8')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
53 x.append(v)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
54 except UnicodeError:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
55 u = unicode(v, 'iso-8859-15')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
56 x.append(u.encode('utf-8'))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
57 else:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
58 x.append(v)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
59 return x
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
60
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
61 def copy_tuples(table, from_cursor, to_cursor, fields='*'):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
62 from_cursor.execute('SELECT %s FROM %s' % (fields, table))
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
63 while 1:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
64 row = from_cursor.fetchone()
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
65 if not row:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
66 break
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
67 row = to_utf8(row)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
68 if fields == '*':
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
69 to_cursor.execute('INSERT INTO %s VALUES(%s)' \
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
70 % (table, ', '.join(['%s'] * len(row))), *row)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
71 else:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
72 to_cursor.execute('INSERT INTO %s (%s) VALUES(%s)' \
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
73 % (table, fields,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
74 ', '.join(['%s'] * len(row))), *row)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
75
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
76 def convert_db(old_cursor, new_cursor):
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
77 copy_tuples('revision', old_cursor, new_cursor)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
78 copy_tuples('node_change', old_cursor, new_cursor)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
79 copy_tuples('auth_cookie', old_cursor, new_cursor)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
80 copy_tuples('enum', old_cursor, new_cursor)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
81 copy_tuples('ticket_change', old_cursor, new_cursor)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
82 copy_tuples('permission', old_cursor, new_cursor)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
83 copy_tuples('component', old_cursor, new_cursor)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
84 copy_tuples('milestone', old_cursor, new_cursor, "name, time")
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
85 new_cursor.execute("UPDATE milestone SET descr=''")
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
86 copy_tuples('version', old_cursor, new_cursor)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
87 copy_tuples('report', old_cursor, new_cursor,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
88 'id,author,title,sql')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
89 copy_tuples('ticket', old_cursor, new_cursor,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
90 'id,time,changetime,component,severity,priority,'
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
91 'owner,reporter,cc,url,version,milestone,status,'
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
92 'resolution,summary,description')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
93 copy_tuples('wiki', old_cursor, new_cursor,
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
94 'name,version,time,author,ipnr,text')
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
95
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
96 if __name__ == '__main__':
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
97 if len(sys.argv) != 3:
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
98 print >> sys.stderr, 'Usage: %s <db-file> <env-dir>\n' % sys.argv[0]
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
99 print >> sys.stderr, \
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
100 'Creates a new Trac environment and initializes it with ' \
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
101 'information\nfrom an existing pre 0.7 trac database.'
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
102 print >> sys.stderr
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
103 sys.exit(1)
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
104 db2env(sys.argv[1], sys.argv[2])
93b4dcbafd7b Copy Trac to main branch.
cmlenz
parents:
diff changeset
105 print >> sys.stderr, 'Environment successfully created.'
Copyright (C) 2012-2017 Edgewall Software