~abentley/lp-dev-utils/ab-logging

« back to all changes in this revision

Viewing changes to close_developer_bugs.py

  • Committer: Curtis Hovey
  • Date: 2010-01-02 19:32:28 UTC
  • Revision ID: sinzui.is@verizon.net-20100102193228-nuv8l3h0ruwtnug2
Save point for review scripts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python2.5
 
2
# Copyright 2009 Canonical Ltd.  All rights reserved.
 
3
"""Mark fix committed bugs as released for the users."""
 
4
 
 
5
import sys
 
6
 
 
7
from optparse import OptionParser
 
8
 
 
9
from lpapi import lp_factory
 
10
 
 
11
 
 
12
FIX_COMMITTED = u'Fix Committed'
 
13
 
 
14
 
 
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)
 
20
    parser.add_option(
 
21
        "-e", "--environment", dest="env",
 
22
        help="The environment to use")
 
23
    parser.add_option(
 
24
        "-p", "--project", dest="release_project",
 
25
        help="The project that is being released")
 
26
    parser.set_defaults(
 
27
        env='edge',
 
28
        release_project='launchpad-project')
 
29
    return parser
 
30
 
 
31
 
 
32
def main(argv=None):
 
33
    """Mark fix committed bugs as released for the users."""
 
34
    if argv is None:
 
35
        argv = sys.argv
 
36
    parser = get_option_parser()
 
37
    (options, args_) = parser.parse_args(args=argv[1:])
 
38
    if len(args_) < 2:
 
39
        # There is not a release and at least one launchpad user.
 
40
        print parser.usage
 
41
        sys.exit(1)
 
42
 
 
43
 
 
44
    release = args_[0]
 
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)
 
49
 
 
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))
 
62
    return 0
 
63
 
 
64
 
 
65
if __name__ == '__main__':
 
66
    sys.exit(main())