summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Laska <jlaska@redhat.com>2011-04-06 12:20:17 -0400
committerJames Laska <jlaska@redhat.com>2011-04-06 12:20:17 -0400
commit40fd9738b416e98ffeadb0f7e3ecbf7b911e6234 (patch)
treedbc1ab076d74a76104e215fa342977b4ce7d3a7e
parent739f795b85fb9d1b61f394059ad393af7fccfb1b (diff)
downloadscripts-40fd9738b416e98ffeadb0f7e3ecbf7b911e6234.tar.gz
scripts-40fd9738b416e98ffeadb0f7e3ecbf7b911e6234.tar.xz
scripts-40fd9738b416e98ffeadb0f7e3ecbf7b911e6234.zip
Make use of a cookiefile to avoid entering username and password every time
-rwxr-xr-xupdate-blocker-wiki27
1 files 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)