annotate doc/scripts/tracker_defsgen.py @ 326:f34eba406e57

More model refinement + update migration script
author Sylvain Beucler <beuc@beuc.net>
date Sat, 21 Aug 2010 15:32:09 +0200
parents c193bb0a8819
children cdce64340e6c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
322
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
1 # Output a Python dict with tracker fields definition, using a Savane3
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
2 # initialized database as source
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
3
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
4 import MySQLdb
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
5 #import MySQLdb.cursors
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
6
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
7 db = MySQLdb.connect(unix_socket='/tmp/savane-mini/mysql/sock',
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
8 user='root',db='savane')
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
9 c=db.cursor()
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
10
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
11 tfields = ['bug_field_id','field_name','display_type','display_size',
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
12 'label','description','scope','required','empty_ok','keep_history',
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
13 'special','custom']
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
14
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
15 defs = {}
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
16 field_names = []
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
17 c.execute("""SELECT * FROM bugs_field""")
325
c193bb0a8819 Trackers: even more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 324
diff changeset
18 def process_field_row(row):
322
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
19 name = row[1]
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
20 field_names.append(name)
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
21 defs[name] = ''
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
22 defs[name] += " '"+name+"' : {\n"
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
23 for i,val in enumerate(row):
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
24 if i <= 0:
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
25 continue
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
26 else:
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
27 defs[name] += " " \
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
28 + "'"+tfields[i]+"'" \
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
29 + ": "
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
30 if tfields[i] == 'label' or tfields[i] == 'description':
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
31 defs[name] += '_("' + val + '"),'
324
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
32 elif (name=='priority' or name=='resolution_id' or name=='planned_starting_date' or name=='planned_close_date') \
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
33 and tfields[i] == 'required':
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
34 # override priority.required so we have a common
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
35 # definition for all trackers
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
36 defs[name] += str(0)+","
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
37 elif (name=='priority' or name=='resolution_id') \
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
38 and tfields[i] == 'empty_ok':
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
39 # override priority.empty_ok so we have a common
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
40 # definition for all trackers
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
41 defs[name] += str(1)+","
322
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
42 elif type(val) == long:
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
43 defs[name] += str(val)+","
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
44 else:
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
45 defs[name] += "'"+val+"',"
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
46 defs[name] += "\n"
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
47
324
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
48 for row in c.fetchall():
325
c193bb0a8819 Trackers: even more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 324
diff changeset
49 process_field_row(row)
324
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
50
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
51 c.execute("""SELECT * FROM task_field WHERE field_name IN ('planned_starting_date', 'planned_close_date')""")
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
52 for row in c.fetchall():
325
c193bb0a8819 Trackers: even more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 324
diff changeset
53 process_field_row(row)
324
9275694cda61 Trackers: more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 322
diff changeset
54
326
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
55
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
56 # Doc:
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
57 #SHOW_ON_ADD_CHOICES = (('0', _('no')),
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
58 # ('1', _('show to logged in users')),
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
59 # ('2', _('show to anonymous users')),
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
60 # ('3', _('show to both logged in and anonymous users')),)
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
61
322
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
62 tfields = ['name','bug_field_id','group_id','use_it','show_on_add',
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
63 'show_on_add_members','place','custom_label',
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
64 'custom_description','custom_display_size',
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
65 'custom_empty_ok','custom_keep_history',
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
66 'transition_default_auth']
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
67 c.execute("""SELECT bugs_field.field_name,bugs_field_usage.*
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
68 FROM bugs_field_usage JOIN bugs_field USING (bug_field_id) WHERE group_id=100""")
325
c193bb0a8819 Trackers: even more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 324
diff changeset
69 def process_field_usage_row(row):
322
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
70 name = row[0]
326
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
71 if name == 'place':
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
72 name = 'rank'
322
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
73 for i,val in enumerate(row):
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
74 if i <= 2:
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
75 continue
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
76 elif tfields[i] == 'custom_label' \
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
77 or tfields[i] == 'custom_description' \
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
78 or tfields[i] == 'custom_display_size' \
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
79 or tfields[i] == 'custom_empty_ok' \
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
80 or tfields[i] == 'custom_keep_history' \
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
81 :
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
82 # overlays, duplicates of bugs_field in this context
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
83 continue
326
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
84 elif tfields[i] == 'show_on_add':
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
85 if val == 0:
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
86 defs[name] += " 'show_on_add_anonymous': 0,\n"
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
87 defs[name] += " 'show_on_add_connected': 0,\n"
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
88 elif val == 1:
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
89 defs[name] += " 'show_on_add_anonymous': 0,\n"
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
90 defs[name] += " 'show_on_add_connected': 1,\n"
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
91 elif val == 2:
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
92 defs[name] += " 'show_on_add_anonymous': 1,\n"
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
93 defs[name] += " 'show_on_add_connected': 0,\n"
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
94 elif val == 3:
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
95 defs[name] += " 'show_on_add_anonymous': 1,\n"
f34eba406e57 More model refinement + update migration script
Sylvain Beucler <beuc@beuc.net>
parents: 325
diff changeset
96 defs[name] += " 'show_on_add_connected': 1,\n"
322
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
97 else:
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
98 defs[name] += " " \
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
99 + "'"+tfields[i]+"'" \
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
100 + ": "
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
101 if type(val) == long:
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
102 defs[name] += str(val)+","
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
103 elif val is None:
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
104 defs[name] += "None,"
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
105 else:
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
106 defs[name] += "'"+val+"',"
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
107 defs[name] += "\n"
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
108 defs[name] += " },\n"
325
c193bb0a8819 Trackers: even more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 324
diff changeset
109 for row in c.fetchall():
c193bb0a8819 Trackers: even more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 324
diff changeset
110 process_field_usage_row(row)
c193bb0a8819 Trackers: even more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 324
diff changeset
111 c.execute("""SELECT task_field.field_name,task_field_usage.*
c193bb0a8819 Trackers: even more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 324
diff changeset
112 FROM task_field_usage JOIN task_field USING (bug_field_id) WHERE group_id=100
c193bb0a8819 Trackers: even more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 324
diff changeset
113 AND field_name IN ('planned_starting_date', 'planned_close_date')""")
c193bb0a8819 Trackers: even more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 324
diff changeset
114 for row in c.fetchall():
c193bb0a8819 Trackers: even more static fields definition
Sylvain Beucler <beuc@beuc.net>
parents: 324
diff changeset
115 process_field_usage_row(row)
322
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
116
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
117 for name in field_names:
3f005a413dfc Trackers: prepare static fields definition
Sylvain Beucler <beuc@beuc.net>
parents:
diff changeset
118 print defs[name],