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