hgbook

annotate web/hgbook/reviewers.py @ 596:4d26453ef459

Fix reviewers script.
author Bryan O'Sullivan <bos@serpentine.com>
date Thu Mar 26 23:01:51 2009 -0700 (2009-03-26)
parents ad304b606163
children
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])