2
# Copyright 2009 Canonical Ltd. All rights reserved.
3
"""Mark fix committed bugs as released for the users."""
7
from optparse import OptionParser
9
from lpapi import lp_factory
12
FIX_COMMITTED = u'Fix Committed'
15
def get_option_parser():
16
"""Return the option parser for this program."""
17
example = "eg. %prog 2.2.5 sinzui salgado bac"
18
usage = "usage: %%prog [options] release launchpad-ids\n%s" % example
19
parser = OptionParser(usage=usage)
21
"-e", "--environment", dest="env",
22
help="The environment to use")
24
"-p", "--project", dest="release_project",
25
help="The project that is being released")
28
release_project='launchpad-project')
33
"""Mark fix committed bugs as released for the users."""
36
parser = get_option_parser()
37
(options, args_) = parser.parse_args(args=argv[1:])
39
# There is not a release and at least one launchpad user.
45
user_names = args_[1:]
46
launchpad = lp_factory(options.env, 'close_developer_bugs')
47
project = launchpad.project_groups[options.release_project]
48
milestone = project.getMilestone(name=release)
50
for user_name in user_names:
51
user = launchpad.people[user_name]
52
fixed_bug_tasks = project.searchTasks(
53
assignee=user, status=FIX_COMMITTED, milestone=milestone)
54
for bug_task in fixed_bug_tasks:
55
print 'Updating %s bug %s [%s]' % (
56
user_name, bug_task.bug.id, bug_task.bug.title)
57
bug_task.transitionToStatus(status=u'Fix Released')
58
bug_task.bug.newMessage(
59
subject=u'Bug %s Fix released' % bug_task.bug.id,
60
content=u'Fixed released in %s %s.' % (
61
options.release_project, release))
65
if __name__ == '__main__':