42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
|
# use launchpadlib to change bugs that have a "Fix Committed" status to "Fix Released".
|
||
|
# authorize as "Change non-private data" when Launchpad asks for it.
|
||
|
|
||
|
from optparse import OptionParser
|
||
|
|
||
|
parser = OptionParser(usage = '%prog version [bugs_to_exclude]')
|
||
|
options, args = parser.parse_args()
|
||
|
if len(args) < 1:
|
||
|
parser.error('No version defined')
|
||
|
message = 'Fixed in ADCH++ ' + args[0] + '.'
|
||
|
exclude = list()
|
||
|
if len(args) > 1:
|
||
|
exclude = [int(str) for str in args[1:]]
|
||
|
|
||
|
from launchpadlib.launchpad import Launchpad
|
||
|
from launchpadlib.errors import HTTPError
|
||
|
|
||
|
launchpad = Launchpad.login_with('ADCH++ release script', 'production')
|
||
|
project = launchpad.projects['adchpp']
|
||
|
|
||
|
bug_tasks = project.searchTasks(status = 'Fix Committed')
|
||
|
|
||
|
changed = 0
|
||
|
unchanged = list()
|
||
|
total = 0
|
||
|
|
||
|
for bug_task in bug_tasks:
|
||
|
if bug_task.bug.id in exclude:
|
||
|
continue
|
||
|
total = total + 1
|
||
|
try:
|
||
|
bug_task.status = 'Fix Released'
|
||
|
bug_task.bug.newMessage(content = message)
|
||
|
bug_task.lp_save()
|
||
|
changed = changed + 1
|
||
|
except HTTPError:
|
||
|
unchanged.append(bug_task.bug.id)
|
||
|
|
||
|
print '%d/%d bugs have been changed.' % (changed, total)
|
||
|
for id in unchanged:
|
||
|
print 'Bug #%d could not be changed.' % id
|