rev |
line source |
bos@574
|
1 #!/usr/bin/env python
|
bos@574
|
2 # -*- coding: utf-8 -*-
|
bos@574
|
3
|
bos@574
|
4 import os, sys
|
bos@574
|
5 sys.path.append(os.path.dirname(__file__))
|
bos@574
|
6 import dbutil
|
bos@574
|
7
|
bos@574
|
8 conn = dbutil.connect()
|
bos@574
|
9 c = conn.cursor()
|
bos@574
|
10
|
bos@574
|
11 c.execute('''select submitter_name from comments_comment''')
|
bos@574
|
12
|
bos@574
|
13 reviewers = {}
|
bos@574
|
14
|
bos@574
|
15 mappings = {
|
bos@574
|
16 u'alejandro "tab-lover" dubrovsky': u'Alejandro Dubrovsky',
|
bos@574
|
17 u'alex hirzel <ahirzel@mtu.edu>': u'Alex Hirzel',
|
bos@574
|
18 u'anonymous coward': u'Anonymous',
|
bos@574
|
19 u'arthur van leeuwen': u'Arthur van Leeuwen',
|
bos@574
|
20 u'augustss': u'Lennart Augustsson',
|
bos@574
|
21 u'ed t': u'Anonymous',
|
bos@574
|
22 u'geogre moschovitis': u'George Moschovitis',
|
bos@574
|
23 u'george m': u'George Moschovitis',
|
bos@574
|
24 u'haskell newb': u'Anonymous',
|
bos@574
|
25 u'j. pablo fernandez': u'J. Pablo Fernández',
|
bos@574
|
26 u'kamal al-marhoobi': u'Kamal Al-Marhubi',
|
bos@574
|
27 u'kevin w.': u'Kevin Watters',
|
bos@574
|
28 u'max cantor (#haskell - mxc)': u'Max Cantor',
|
bos@574
|
29 u'michael campbell': u'Michael Campbell',
|
bos@574
|
30 u'mike btauwerman': u'Mike Brauwerman',
|
bos@574
|
31 u'no credit necessary': u'Anonymous',
|
bos@574
|
32 u'nykänen, matti': u'Matti Nykänen',
|
bos@574
|
33 u'omar antolin camarena': u'Omar Antolín Camarena',
|
bos@574
|
34 u'ryan t mulligan': u'Ryan T. Mulligan',
|
bos@574
|
35 u'sengan baring-gould': u'Sengan Baring-Gould',
|
bos@574
|
36 u'some guy': u'Anonymous',
|
bos@574
|
37 u'tomas janousek': u'Tomáš Janoušek',
|
bos@574
|
38 u'william halchin': u'William N. Halchin',
|
bos@574
|
39 }
|
bos@574
|
40
|
bos@574
|
41 def fixup(s):
|
bos@574
|
42 try:
|
bos@574
|
43 return s.encode('ascii')
|
bos@574
|
44 except UnicodeEncodeError:
|
bos@574
|
45 def f(c):
|
bos@574
|
46 o = ord(c)
|
bos@574
|
47 if o < 128:
|
bos@574
|
48 return c
|
bos@574
|
49 return '&#%d;' % o
|
bos@574
|
50 return ''.join(map(f, s))
|
bos@574
|
51
|
bos@574
|
52 total = 0
|
bos@574
|
53 for r in c.fetchall():
|
bos@574
|
54 r = r[0].decode('utf-8')
|
bos@596
|
55 if r in ("Bryan O'Sullivan",):
|
bos@574
|
56 continue
|
bos@574
|
57 total += 1
|
bos@574
|
58 m = mappings.get(r.lower())
|
bos@574
|
59 if m:
|
bos@574
|
60 r = m
|
bos@574
|
61 elif len(r) < 2 or ' ' not in r:
|
bos@574
|
62 r = 'Anonymous'
|
bos@574
|
63 reviewers.setdefault(r, 0)
|
bos@574
|
64 reviewers[r] += 1
|
bos@574
|
65
|
bos@574
|
66 reviewers = sorted(reviewers.iteritems(), key=lambda x: x[0])
|
bos@574
|
67
|
bos@574
|
68 cohorts = [(.01,1),(.002,.01)]
|
bos@574
|
69
|
bos@574
|
70 for (lo,hi) in cohorts:
|
bos@574
|
71 lo = total * lo
|
bos@574
|
72 hi = total * hi
|
bos@574
|
73 for r in [n for n in reviewers if lo <= n[1] < hi]:
|
bos@574
|
74 if r[1] > 3:
|
bos@574
|
75 print '%s,' % fixup(r[0])
|
bos@574
|
76 print
|
bos@574
|
77
|
bos@574
|
78 lo = total * .002
|
bos@574
|
79 for n in reviewers:
|
bos@574
|
80 if n[1] < lo:
|
bos@574
|
81 print '%s,' % fixup(n[0])
|