From 40fd9738b416e98ffeadb0f7e3ecbf7b911e6234 Mon Sep 17 00:00:00 2001 From: James Laska Date: Wed, 6 Apr 2011 12:20:17 -0400 Subject: Make use of a cookiefile to avoid entering username and password every time --- update-blocker-wiki | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/update-blocker-wiki b/update-blocker-wiki index 43b8a46..c2a263d 100755 --- a/update-blocker-wiki +++ b/update-blocker-wiki @@ -33,6 +33,8 @@ NTH_ACCEPTED = {'status_whiteboard': 'AcceptedNTH', NTH_PROPOSED = {'status_whiteboard': 'AcceptedNTH RejectedNTH', 'status_whiteboard_type': 'nowords'} +COOKIE_FILE = os.path.join(os.environ.get('HOME','/tmp'), '.fedora_cookiefile') + # UTF8 helper - "borrored" from python-bugzilla def to_encoding(ustring): if isinstance(ustring, basestring): @@ -61,6 +63,8 @@ def parse_args(): help='Enable verbosity') parser.add_option('--hotdog', action='store_true', default=False, help='Enable hot dog (default: %default)') + parser.add_option('--cookiefile', action='store', default=COOKIE_FILE, + help='Cookiejar path to store wiki login cookies (default: %default)') optgrp = optparse.OptionGroup(parser, "Required options") optgrp.add_option('-n', '--name', action='store', default=None, @@ -69,7 +73,7 @@ def parse_args(): help='Blocker tracking bug number') optgrp.add_option('--nth', action='store', default=None, help='Nice-to-Have tracking bug number') - optgrp.add_option('-u', '--user', action='store', default=os.getlogin(), + optgrp.add_option('-u', '--user', action='store', default=None, help='Mediawiki username') optgrp.add_option('-p', '--passwd', action='store', default=None, help='Mediawiki password') @@ -84,13 +88,15 @@ def parse_args(): if ispass: value = getpass(prompt) else: - value = raw_input(promt) + value = raw_input(prompt) if value is None: parser.error('Must provide a valid %s' % label) return value - opts.user = sanitize_input(parser, opts.user, "username") - opts.passwd = sanitize_input(parser, opts.passwd, "password", ispass=True) + if not os.path.exists(opts.cookiefile): + opts.user = sanitize_input(parser, opts.user, "username") + opts.passwd = sanitize_input(parser, opts.passwd, "password", ispass=True) + opts.blocker = sanitize_input(parser, opts.blocker, "Blocker bug number") opts.nth = sanitize_input(parser, opts.nth, "Nice-to-have bug number") opts.name = sanitize_input(parser, opts.name, "Wiki page name") @@ -238,12 +244,16 @@ bugs, refer to [[QA:SOP_nth_bug_process]]. # Create mediawiki handle if opts.verbose: print 'Connecting to mediawiki ...' - wiki = MediaWiki('https://fedoraproject.org/w/api.php') + wiki = MediaWiki('https://fedoraproject.org/w/api.php', cookie_file=opts.cookiefile) # Login to the wiki - if not wiki.login(opts.user, opts.passwd): - print "Error: invalid mediawiki username or password" - sys.exit(1) + if opts.cookiefile is None: + if opts.verbose: print 'Logging into mediawiki ...' + if not wiki.login(opts.user, opts.passwd): + print "Error: invalid mediawiki username or password" + sys.exit(1) + else: + if opts.verbose: print 'Using cookies in %s for authentication' % opts.cookiefile # Get an edit token q = dict(action='query', @@ -275,5 +285,6 @@ bugs, refer to [[QA:SOP_nth_bug_process]]. if response.get('result','').lower() == 'failure': print "Failed to update '%s'\n%s" % (q.get('title'), response) sys.exit(1) + print "Updated https://fedoraproject.org/wiki/%s" % q.get('title') sys.exit(0) -- cgit