Adamw has uploaded a new change for review.

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


Change subject: WIP (FR #1113) checks for translation existence
......................................................................

WIP (FR #1113) checks for translation existence

Change-Id: I57636c560b02c835a7e2b4a0896267341383749c
---
A language_audit/check_pages
A language_audit/config.yaml.example
M mediawiki/api.py
A mediawiki/i18n.py
A mediawiki/page.py
5 files changed, 70 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikimedia/fundraising/tools 
refs/changes/38/91338/1

diff --git a/language_audit/check_pages b/language_audit/check_pages
new file mode 100755
index 0000000..5ac86a5
--- /dev/null
+++ b/language_audit/check_pages
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+
+import os
+import os.path
+import re
+import sys
+
+from process.globals import load_config
+load_config("language_audit")
+
+from process.globals import config
+from process.lock import begin, end
+
+from mediawiki.i18n import get_languages
+from mediawiki.page import get_content
+
+def check_pages():
+    for check_spec in config.check_page_languages:
+        api_url = check_spec['api']
+        languages = sorted([ l['code'] for l in get_languages(api=api_url) ])
+        for lang in languages:
+            title = check_spec['page'].format(language=lang)
+            content = get_content(title, api=api_url)
+            description = re.sub(r'^https?://([^/]+)/.*$', r'\1', api_url) + 
": " + title
+            if not content:
+                print "MISSING: " + description
+            else:
+                print "found: " + description
+
+if __name__ == "__main__":
+    try:
+        begin()
+
+        check_pages()
+    finally:
+        end()
diff --git a/language_audit/config.yaml.example 
b/language_audit/config.yaml.example
new file mode 100644
index 0000000..67b12b5
--- /dev/null
+++ b/language_audit/config.yaml.example
@@ -0,0 +1,8 @@
+centralnotice_mw_api:
+    "http://meta.wikimedia.org/w/api.php";
+check_page_languages:
+    -
+        api: "https://wikimediafoundation.org/w/api.php";
+        page: "Thank_You/{language}"
+debug:
+    1
diff --git a/mediawiki/api.py b/mediawiki/api.py
index 8c6bd87..49ea188 100644
--- a/mediawiki/api.py
+++ b/mediawiki/api.py
@@ -6,11 +6,11 @@
 
 import json
 
-def mw_call( args ):
+def mw_call(args, api=config.centralnotice_mw_api):
     import simplemediawiki
 
     wiki = simplemediawiki.MediaWiki(
-        config.centralnotice_mw_api,
+        api,
         user_agent='bot: fr-anal'
     )
     result = wiki.call( args )
diff --git a/mediawiki/i18n.py b/mediawiki/i18n.py
new file mode 100644
index 0000000..0a32e9f
--- /dev/null
+++ b/mediawiki/i18n.py
@@ -0,0 +1,9 @@
+from mediawiki.api import mw_call
+
+def get_languages(**kw):
+    result = mw_call({
+        'action': 'query',
+        'meta': 'siteinfo',
+        'siprop': 'languages',
+    }, **kw)
+    return result['languages']
diff --git a/mediawiki/page.py b/mediawiki/page.py
new file mode 100644
index 0000000..3bb9384
--- /dev/null
+++ b/mediawiki/page.py
@@ -0,0 +1,15 @@
+from mediawiki.api import mw_call
+
+def get_content(title, **kw):
+    result = mw_call({
+        'action': 'query',
+        'prop': 'revisions',
+        'titles': title,
+        'rvprop': 'content',
+    }, **kw)
+    page = result['pages'].values().pop()
+    if 'revisions' in page:
+        revision = page['revisions'].pop()
+        return revision['*']
+    else:
+        return None

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I57636c560b02c835a7e2b4a0896267341383749c
Gerrit-PatchSet: 1
Gerrit-Project: wikimedia/fundraising/tools
Gerrit-Branch: master
Gerrit-Owner: Adamw <[email protected]>

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

Reply via email to