diff options
author | rsiddharth <s@ricketyspace.net> | 2017-01-06 03:30:03 +0000 |
---|---|---|
committer | rsiddharth <s@ricketyspace.net> | 2017-01-06 03:30:03 +0000 |
commit | d35105f158819f0f731a4efc7e138905ef8e627d (patch) | |
tree | 43f5d6cf8cd851dd5c8657eda7c3e8b56517fb8a /gd_diff.py | |
parent | e46931f435cf00f1d70a6a6ccb755b92b7eff441 (diff) |
Add `push_wiki_page` function.
* gd_diff.py (get_wiki_mc, push_wiki_page): New functions.
* tests/test_gd_diff.py (TestGdDiff.test_push_wiki_page): New method;
test for `push_wiki_page` function.
Diffstat (limited to 'gd_diff.py')
-rw-r--r-- | gd_diff.py | 49 |
1 files changed, 49 insertions, 0 deletions
@@ -12,11 +12,14 @@ import os import re import shlex import sys +import xmlrpc.client import requests from os import path from subprocess import run, PIPE +from urllib.parse import urljoin +from xmlrpc.client import ServerProxy, MultiCall, Fault from bs4 import BeautifulSoup from pkg_resources import resource_string @@ -410,6 +413,52 @@ def write_wiki_page(release, content): write_file(wp_file, content) +def get_wiki_mc(url, user, passwd): # pragma: no cover + """Return instance of `xmlprc.client.MultiCall` object. + + """ + url = urljoin(url, '?action=xmlrpc2') + conn = ServerProxy(url, allow_none=True) + + try: + token = conn.getAuthToken(user, passwd) + except Fault as f: + print(f.faultString) + exit(1) + + mc = MultiCall(conn) + mc.applyAuthToken(token) + + return mc + + +def push_wiki_page(url, user, passwd, version, content): + """Push `release`' wiki page to wiki at `uri`. + + """ + def process_result(r, f=None): + if(r == 'SUCCESS'): + print('auth success.') + elif(r == True): + print('wiki page updated.') + elif(f and f.faultCode == 'INVALID'): + print('auth failure') + elif(f and f.faultCode == 1): + print('wiki page not updated.') + + + page = '/'.join(['Documentation', version, 'DifferencesWithDebian']) + mc = get_wiki_mc(url, user, passwd) + mc.putPage(page, content) + + results = mc() + try: + for r in results: + process_result(r) + except Fault as f: + result_process(None, f) + + def get_args(): parser = argparse.ArgumentParser() parser.add_argument('--version', action='version', version=__version__) |