diff options
author | James Laska <jlaska@redhat.com> | 2011-08-29 08:01:15 -0400 |
---|---|---|
committer | James Laska <jlaska@redhat.com> | 2011-08-29 08:01:15 -0400 |
commit | e140160c852616d118092c755dc6684bd0157c2d (patch) | |
tree | cff22eb330bceb935a3264828b79b31a5b0cdadb /update-blocker-wiki | |
parent | c6ec50ccdfbdb48adf68282463f673150283c560 (diff) | |
download | scripts-e140160c852616d118092c755dc6684bd0157c2d.tar.gz scripts-e140160c852616d118092c755dc6684bd0157c2d.tar.xz scripts-e140160c852616d118092c755dc6684bd0157c2d.zip |
Auto detect appropriate --blocker and --nth values
* Using {{FedoraVersionNumber|next}}, detect current in-development Fedora release
* Additional messaging when using --verbose
Diffstat (limited to 'update-blocker-wiki')
-rwxr-xr-x | update-blocker-wiki | 59 |
1 files changed, 39 insertions, 20 deletions
diff --git a/update-blocker-wiki b/update-blocker-wiki index 5bd5481..516c67d 100755 --- a/update-blocker-wiki +++ b/update-blocker-wiki @@ -45,6 +45,14 @@ def to_encoding(ustring): return ustring return u'' +# Helper method to flatten a list of lists +def join_lists(l): + ''' + Takes a list of lists, and joins them into a single list. For example: + [[1,2,3],[4],[5,6,7]] will become [1,2,3,4,5,6,7] + ''' + return [item for sublist in l for item in sublist] + # Display list of bugs, organized by components def wikilist_bugs(bugs_by_component, bugs_by_id): buf = '' @@ -96,10 +104,10 @@ def parse_args(): optgrp = optparse.OptionGroup(parser, "Required options") optgrp.add_option('-n', '--name', action='store', default=None, help='Wiki page name to save results') - optgrp.add_option('--blocker', action='store', default=None, - help='Blocker tracking bug number') - optgrp.add_option('--nth', action='store', default=None, - help='Nice-to-Have tracking bug number') + optgrp.add_option('--blocker', action='store', default='auto', + help='Blocker tracking bug number (default: %default)') + optgrp.add_option('--nth', action='store', default='auto', + help='Nice-to-Have tracking bug number (default: %default)') optgrp.add_option('-u', '--user', action='store', default=None, help='Mediawiki username') optgrp.add_option('-p', '--passwd', action='store', default=None, @@ -183,6 +191,25 @@ if __name__ == '__main__': opts = parse_args() + # Create mediawiki handle + if opts.verbose: print 'Connecting to mediawiki ...' + wiki = MediaWiki('https://fedoraproject.org/w/api.php', cookie_file=opts.cookiefile) + + # Get current Fedora version number + if opts.verbose: sys.stdout.write('Detecting upcoming Fedora release ... ') + q = dict(action='expandtemplates', + text='{{Template:FedoraVersionNumber|next}}',) + response = wiki.call(q) + release = response.get('expandtemplates',{}).get('*','') + if opts.verbose: print release + if release.isdigit(): + if opts.blocker == 'auto': + # FIXME - autodetect Alpha, Beta or Final ? + opts.blocker = 'F{release}Beta'.format(release=release) + if opts.nth == 'auto': + # FIXME - autodetect Alpha, Beta or Final ? + opts.nth = 'F{release}Beta-accepted'.format(release=release) + # Connect to bugzilla bz = bugzilla.RHBugzilla3(url='https://bugzilla.redhat.com/xmlrpc.cgi') @@ -196,40 +223,44 @@ if __name__ == '__main__': bugs_by_tracker = dict() # Get a list of accepted blocker bugs - if opts.verbose: print 'Querying accepted blocker bugs ...' + if opts.verbose: sys.stdout.write('Querying accepted blocker bugs ... ') q = {'bug_status': BUG_STATUS, 'value0-0-0': str(opts.blocker), 'type0-0-0': 'anywords', 'field0-0-0': 'blocked'} q.update(BLOCKER_ACCEPTED) bugs_by_tracker['accepted_blockers'] = flatten_bug_list(q) + if opts.verbose: print len(bugs_by_tracker['accepted_blockers']) # Get a list of proposed blocker bugs - if opts.verbose: print 'Querying proposed blocker bugs ...' + if opts.verbose: sys.stdout.write('Querying proposed blocker bugs ... ') q = {'bug_status': BUG_STATUS, 'value0-0-0': str(opts.blocker), 'type0-0-0': 'anywords', 'field0-0-0': 'blocked'} q.update(BLOCKER_PROPOSED) bugs_by_tracker['proposed_blockers'] = flatten_bug_list(q) + if opts.verbose: print len(bugs_by_tracker['proposed_blockers']) # Get a list of accepted NTH bugs - if opts.verbose: print 'Querying accepted nice-to-have bugs ...' + if opts.verbose: sys.stdout.write('Querying accepted nice-to-have bugs ... ') q = {'bug_status': BUG_STATUS, 'value0-0-0': str(opts.nth), 'type0-0-0': 'anywords', 'field0-0-0': 'blocked'} q.update(NTH_ACCEPTED) bugs_by_tracker['accepted_nths'] = flatten_bug_list(q) + if opts.verbose: print len(bugs_by_tracker['accepted_nths']) # Get a list of proposed NTH bugs - if opts.verbose: print 'Querying proposed nice-to-have bugs ...' + if opts.verbose: sys.stdout.write('Querying proposed nice-to-have bugs ... ') q = {'bug_status': BUG_STATUS, 'value0-0-0': str(opts.nth), 'type0-0-0': 'anywords', 'field0-0-0': 'blocked'} q.update(NTH_PROPOSED) bugs_by_tracker['proposed_nths'] = flatten_bug_list(q) + if opts.verbose: print len(bugs_by_tracker['proposed_nths']) # Organize bugs for later reference if opts.verbose: print 'Organizing bugs ...' @@ -270,15 +301,7 @@ if __name__ == '__main__': | [[File:FedoraLogo_infinity.svg|right|150px]] }} ''' - def join_lists(l): - ''' - Takes a list of lists, and joins them into a single list. For example: - [[1,2,3],[4],[5,6,7]] will become [1,2,3,4,5,6,7] - ''' - return [item for sublist in l for item in sublist] - # Display approved blockers - # FIXME - automatically display the hotdog if no approved + proposed blockers exist page_content += ''' == Approved Blockers == The following list of bugs are approved blockers that must be resolved. There @@ -332,10 +355,6 @@ guidance on reviewing the following bugs, refer to [[QA:SOP_nth_bug_process]]. # Add a category so this page isn't lost on the wiki page_content += '\n[[Category:QA]]' - # Create mediawiki handle - if opts.verbose: print 'Connecting to mediawiki ...' - wiki = MediaWiki('https://fedoraproject.org/w/api.php', cookie_file=opts.cookiefile) - # Login to the wiki if opts.user: if opts.verbose: print 'Logging into mediawiki ...' |