Terrrydactyl has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/129858

Change subject: [WIP] Add ability to global query a user's wikis
......................................................................

[WIP] Add ability to global query a user's wikis

Work in progress.

Change-Id: I57f9103eac662ca1a85627dacba829e780c795e5
---
M wikimetrics/controllers/forms/cohort_upload.py
M wikimetrics/templates/csv_upload.html
M wikimetrics/templates/forms/csv_upload.html
3 files changed, 70 insertions(+), 16 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/analytics/wikimetrics 
refs/changes/58/129858/1

diff --git a/wikimetrics/controllers/forms/cohort_upload.py 
b/wikimetrics/controllers/forms/cohort_upload.py
index bc0e471..5197f8c 100644
--- a/wikimetrics/controllers/forms/cohort_upload.py
+++ b/wikimetrics/controllers/forms/cohort_upload.py
@@ -1,7 +1,9 @@
 import csv
+import requests
 from wtforms import StringField, FileField, TextAreaField, RadioField
 from wtforms.validators import Required
 from wikimetrics.metrics.form_fields import RequiredIfNot
+
 
 from secure_form import WikimetricsSecureForm
 
@@ -19,6 +21,7 @@
         ('True', 'User Ids (Numbers found in the user_id column of the user 
table)'),
         ('False', 'User Names (Names found in the user_name column of the user 
table)')
     ])
+    global_cohort            = True
     
     @classmethod
     def from_request(cls, request):
@@ -39,6 +42,9 @@
         Returns
             nothing, but sets self.records to the parsed lines of the csv
         """
+
+        if self.global_cohort is False:
+            print "hiho"
 
         if self.csv.data:
             csv_file = normalize_newlines(self.csv.data.stream)
@@ -86,6 +92,28 @@
     return records
 
 
+def parse_global_records(unparsed):
+    records = []
+    for username in unparsed:
+        parameters = {
+            'action'    : 'query',
+            'format'    : 'json',
+            'meta'      : 'globaluserinfo',
+            'guiprop'   : 'groups|merged|unattached'
+        }
+        parameters['guiuser'] = username
+        r = requests.get('https://www.mediawiki.org/w/api.php', 
params=parameters)
+        if "missing" in r.json()['query']['globaluserinfo']:
+            pass
+        parsed_username = parse_username(username)
+        for accounts in r.json()['query']['globaluserinfo']['merged']:
+            records.append({
+                'username'  : parsed_username,
+                'project'   : accounts['wiki'],
+            })
+    return records
+
+
 def parse_username(username):
     """
     parses uncapitalized, whitespace-padded, and weird-charactered mediawiki
diff --git a/wikimetrics/templates/csv_upload.html 
b/wikimetrics/templates/csv_upload.html
index abcf7fb..bca6521 100644
--- a/wikimetrics/templates/csv_upload.html
+++ b/wikimetrics/templates/csv_upload.html
@@ -1,25 +1,53 @@
 {% extends "layout.html" %}
 {% block body %}
-{% include "forms/csv_upload.html" %}
-<div>
-    <h6>Format</h6>
-    <p>Wikimetrics expects either a file or pasted text in comma separated 
format, as shown below. Project is the langauge or project code in which that 
username or userid exists.  Project is optional and will default to the 
cohort's default project.
-    <pre>user_name,project</pre>
-    <pre>user_id,project</pre>
-    </p>
-    
-    <br/>
-    <h6>For Example</h6>
-    Specify EITHER user names:
+
+<div class="navbar-inner">
+    <h3>Create a Cohort</h3>
+</div>
+
+<br />
+<div class="tabbable"> <!-- Only required for left/right tabs -->
+    <ul class="nav nav-tabs">
+        <li class="active"><a href="#local" data-toggle="tab">Project 
Specific</a></li>
+        <li><a href="#global" data-toggle="tab">Global</a></li>
+    </ul>
+    <div class="tab-content">
+        <div class="tab-pane active" id="local">
+            {% include "forms/csv_upload.html" %}
+            <div>
+                <h6>Format</h6>
+                <p>Wikimetrics expects either a file or pasted text in comma 
separated format, as shown below. Project is the langauge or project code in 
which that username or userid exists.  Project is optional and will default to 
the cohort's default project. You can have different projects within one cohort.
+                <pre>user_name,project</pre>
+                <pre>user_id,project</pre>
+                </p>
+
+                <br/>
+                <h6>For Example</h6>
+                Specify EITHER user names:
     <pre>Evan (WMF),en
 Milimetric,en
 Without project is ok too
 User Names can even contain commas, but these need a project at the 
end,en</pre>
-    OR User Ids:
+                OR User Ids:
     <pre>123,en
 234,en
 456</pre>
+            </div>
+        </div>
+        <div class="tab-pane" id="global">
+            {% include "forms/global_upload.html" %}
+            <div>
+                <h6>Format</h6>
+                <p>Wikimetrics expects either a file or pasted text in comma 
separated format, as shown below. With the global option, wikimetrics will look 
for all known accounts tied to the given usernames and automatically add them 
to the cohort.
+                <pre>user_name</pre>
+                </p>
+            </div>
+        </div>
+    </div>
 </div>
+
+
+
 {% endblock %}
 
 {% block scripts %}
diff --git a/wikimetrics/templates/forms/csv_upload.html 
b/wikimetrics/templates/forms/csv_upload.html
index 9f0a469..8e3fa69 100644
--- a/wikimetrics/templates/forms/csv_upload.html
+++ b/wikimetrics/templates/forms/csv_upload.html
@@ -7,11 +7,9 @@
     class="upload-cohort form-horizontal">
     
     {{ form.csrf_token }}
-    
-    <div class="navbar-inner">
-        <h3>Create a Cohort</h3>
-    </div>
+
     <div class="control-group">
+        <input type="hidden" name="global_cohort" value="false">
         <label for="name" class="control-label">Name</label>
         <div class="controls">
             <input type="text" name="name" id="name"

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I57f9103eac662ca1a85627dacba829e780c795e5
Gerrit-PatchSet: 1
Gerrit-Project: analytics/wikimetrics
Gerrit-Branch: master
Gerrit-Owner: Terrrydactyl <tcho...@gmail.com>

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

Reply via email to