Mercurial > hg > savane-forge
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 |
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], |