Milimetric has submitted this change and it was merged.

Change subject: Added user_name information for CSV output
......................................................................


Added user_name information for CSV output

Changed the CSV output on simple CSV and timeseries CSV to display the
user_name in addition to the user_id.

Created new function get_username_via_id(user_id) to map the user_name from the
id given.

Change-Id: I839eb8cf9dc7f31e84782bd66ad882e96d54b6f7
---
M tests/test_controllers/test_reports.py
M wikimetrics/controllers/reports.py
2 files changed, 28 insertions(+), 12 deletions(-)

Approvals:
  Milimetric: Verified; Looks good to me, approved



diff --git a/tests/test_controllers/test_reports.py 
b/tests/test_controllers/test_reports.py
index c0904d4..5c729ed 100644
--- a/tests/test_controllers/test_reports.py
+++ b/tests/test_controllers/test_reports.py
@@ -199,7 +199,7 @@
         
         # Check the csv result
         response = self.app.get('/reports/result/{0}.csv'.format(result_key))
-        assert_true(response.data.find('Average,2.0') >= 0)
+        assert_true(response.data.find('Average,,2.0') >= 0)
 
         # Testing to see if the parameters are also in the CSV
         # (related to Mingle 1089)
@@ -245,8 +245,7 @@
         
         # Check the csv result
         response = self.app.get('/reports/result/{0}.csv'.format(result_key))
-        print(response.data)
-        assert_true(response.data.find('Sum,8.0') >= 0)
+        assert_true(response.data.find('Sum,,8.0') >= 0)
     
     def test_report_result_std_dev_only_csv(self):
         # Make the request
@@ -324,18 +323,20 @@
         # Check the csv result
         response = self.app.get('/reports/result/{0}.csv'.format(result_key))
         assert_true(response.data.find(
-            'user_id,submetric,'
+            'user_id,user_name,submetric,'
             '2013-01-01 00:00:00,2013-02-01 00:00:00,'
             '2013-03-01 00:00:00,2013-04-01 00:00:00'
         ) >= 0)
         assert_true(response.data.find(
-            '{0},edits,1,2,1,0'.format(self.editors[0].user_id)
+            '{0},{1},edits,1,2,1,0'.format(
+                self.editors[0].user_id, self.editors[0].user_name)
         ) >= 0)
         assert_true(response.data.find(
-            '{0},edits,1,2,1,0'.format(self.editors[1].user_id)
+            '{0},{1},edits,1,2,1,0'.format(
+                self.editors[1].user_id, self.editors[1].user_name)
         ) >= 0)
         assert_true(response.data.find(
-            'Average,edits,0.5000,1.0000,0.5000,0.0000'
+            'Average,,edits,0.5000,1.0000,0.5000,0.0000'
         ) >= 0)
 
         # Testing to see if the parameters are also in the CSV
diff --git a/wikimetrics/controllers/reports.py 
b/wikimetrics/controllers/reports.py
index 4f47c17..18f579c 100644
--- a/wikimetrics/controllers/reports.py
+++ b/wikimetrics/controllers/reports.py
@@ -6,7 +6,7 @@
 from flask.ext.login import current_user
 
 from wikimetrics.configurables import app, db
-from wikimetrics.models import Report, RunReport, PersistentReport
+from wikimetrics.models import Report, RunReport, PersistentReport, WikiUser
 from wikimetrics.metrics import TimeseriesChoices
 from wikimetrics.models.report_nodes import Aggregation
 from wikimetrics.utils import (
@@ -126,6 +126,19 @@
         return json_response(status=celery_task.status)
 
 
+def get_username_via_id(user_id):
+    """
+    Parameters
+        user_id : id to match for user_name
+    """
+    db_session = db.get_session()
+    ret = db_session.query(WikiUser.mediawiki_userid, 
WikiUser.mediawiki_username)\
+        .filter(WikiUser.mediawiki_userid.in_([user_id]))\
+        .all()
+    db_session.close()
+    return ret[0][1]
+
+
 def get_timeseries_csv(task_result, pj, parameters):
     """
     Parameters
@@ -150,9 +163,9 @@
             columns = task_result[Aggregation.STD].values()[0].keys()
         
         # if task_result is not empty find header in first row
-        fieldnames = ['user_id', 'submetric'] + sorted(columns)
+        fieldnames = ['user_id', 'user_name', 'submetric'] + sorted(columns)
     else:
-        fieldnames = ['user_id', 'submetric']
+        fieldnames = ['user_id', 'user_name', 'submetric']
     writer = DictWriter(csv_io, fieldnames)
     
     # collect rows to output in CSV
@@ -165,6 +178,7 @@
             for subrow in row.keys():
                 task_row = row[subrow].copy()
                 task_row['user_id'] = user_id
+                task_row['user_name'] = get_username_via_id(user_id)
                 task_row['submetric'] = subrow
                 task_rows.append(task_row)
     
@@ -234,9 +248,9 @@
             columns = task_result[Aggregation.STD].keys()
         
         # if task_result is not empty find header in first row
-        fieldnames = ['user_id'] + columns
+        fieldnames = ['user_id', 'user_name'] + columns
     else:
-        fieldnames = ['user_id']
+        fieldnames = ['user_id', 'user_name']
     writer = DictWriter(csv_io, fieldnames)
     
     # collect rows to output in CSV
@@ -248,6 +262,7 @@
         for user_id, row in task_result[Aggregation.IND][0].iteritems():
             task_row = row.copy()
             task_row['user_id'] = user_id
+            task_row['user_name'] = get_username_via_id(user_id)
             task_rows.append(task_row)
     
     # Aggregate Results

-- 
To view, visit https://gerrit.wikimedia.org/r/104731
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I839eb8cf9dc7f31e84782bd66ad882e96d54b6f7
Gerrit-PatchSet: 4
Gerrit-Project: analytics/wikimetrics
Gerrit-Branch: master
Gerrit-Owner: Terrrydactyl <tcho...@gmail.com>
Gerrit-Reviewer: Milimetric <dandree...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to