http://www.mediawiki.org/wiki/Special:Code/MediaWiki/95117

Revision: 95117
Author:   giovanni
Date:     2011-08-21 04:03:12 +0000 (Sun, 21 Aug 2011)
Log Message:
-----------
topcontributors.py now looksup name of top contributors with -u/--user-names

Modified Paths:
--------------
    trunk/tools/wsor/contribution_inequality/topcontributors.py

Modified: trunk/tools/wsor/contribution_inequality/topcontributors.py
===================================================================
--- trunk/tools/wsor/contribution_inequality/topcontributors.py 2011-08-20 
22:20:20 UTC (rev 95116)
+++ trunk/tools/wsor/contribution_inequality/topcontributors.py 2011-08-21 
04:03:12 UTC (rev 95117)
@@ -9,6 +9,7 @@
 import sys
 import csv
 
+from oursql import connect
 from itertools import groupby
 from contextlib import closing
 from argparse import ArgumentParser, FileType
@@ -24,15 +25,22 @@
 parser.add_argument('output_file', metavar='output_file', type=FileType('w'))
 parser.add_argument('-t', '--top', dest='maxlen', type=int, default=100,
         help='Top users to list. default: %(default)d', metavar='NUM')
+parser.add_argument('-u', '--user-names', action='store_true', help='query DB'
+        ' for contributor\'s name')
 
 colors = 'bgrcmykw'
 styles = ['-', '--', '-.', ':']
 markers = 'ov^<>1234'
+query = 'select user_name from user where user_id = ?'
 
 if __name__ == '__main__':
 
     ns = parser.parse_args() 
     databyns = {}
+
+    if ns.user_names:
+        conn = connect(read_default_file=os.path.expanduser("~/.my.cnf"))
+        names_cache = {}
     
     with closing(open(ns.data_path)) as f:
         reader = csv.DictReader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
@@ -40,6 +48,20 @@
         for key, subiter in groupby(reader, groupfunc):
             # smart way to keep only the tail
             users = deque((row['user_id'] for row in subiter ), 
maxlen=ns.maxlen)
+
+            if ns.user_names:
+                user_names = []
+                for uid in users:
+                    try:
+                        user_name = names_cache[uid]
+                    except KeyError:
+                        cu = conn.cursor()
+                        cu.execute(query, (uid,))
+                        user_name, = cu.fetchone()
+                        names_cache[uid] = user_name
+                    user_names.append(user_name)
+                users = map(lambda k : '"%s"' % k, user_names)
+
             print >> ns.output_file, '\t'.join(key + tuple(users))
             ns.output_file.flush()
             


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to