Merge lp:~broder/ubuntu-archive-tools/backport-helper-requestor into lp:ubuntu-archive-tools

Proposed by Evan Broder
Status: Merged
Merged at revision: 191
Proposed branch: lp:~broder/ubuntu-archive-tools/backport-helper-requestor
Merge into: lp:ubuntu-archive-tools
Diff against target: 109 lines (+31/-10)
1 file modified
backport-helper.py (+31/-10)
To merge this branch: bzr merge lp:~broder/ubuntu-archive-tools/backport-helper-requestor
Reviewer Review Type Date Requested Status
Colin Watson Approve
Review via email: mp+43447@code.launchpad.net

Description of the change

Colin pointed out that the requestor for a backport should be the member of ubuntu-backporters that approved the backport, not the person who requested the backport initially. This updates backport-helper.py to try and extract that from the bug's history, with the ability for the user to override that detection.

To post a comment you must log in.
Revision history for this message
Colin Watson (cjwatson) wrote :

Seems to work well, thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'backport-helper.py'
2--- backport-helper.py 2010-12-06 18:00:40 +0000
3+++ backport-helper.py 2010-12-11 23:21:57 +0000
4@@ -13,6 +13,7 @@
5
6 valid_series = set()
7 backporters = set()
8+lp = None
9
10
11 def rmadison(distro, package):
12@@ -62,12 +63,20 @@
13 for m in reversed(bugtask.bug.messages):
14 self.content += '\n=============================================\n'
15 star = ''
16- if m.owner in backporters:
17+ if m.owner.name in backporters:
18 star = '(*)'
19 self.content += '%s%s said %s on %s:\n\n' % (m.owner.name, star,
20 m.subject, str(m.date_created))
21 self.content += m.content
22
23+ self.requestor = None
24+ for a in reversed(bugtask.bug.activity):
25+ if (a.whatchanged == '%s: status' % bugtask.bug_target_name and
26+ a.newvalue == 'In Progress' and
27+ a.person.name in backporters):
28+ self.requestor = a.person
29+ break
30+
31 # All setters return True if the input was valid
32 def setPackage(self, value):
33 self.package = value
34@@ -95,8 +104,15 @@
35 return True
36 return False
37
38+ def setRequestor(self, value):
39+ try:
40+ self.requestor = lp.people[value]
41+ return True
42+ except KeyError:
43+ return False
44+
45 def valid(self):
46- return self.package and self.source and self.dest
47+ return self.package and self.source and self.dest and self.requestor
48
49 def validSuite(self, suite):
50 return suite.split('-')[0] in valid_series
51@@ -106,15 +122,16 @@
52 'fromsuite': self.source,
53 'tosuite': self.dest,
54 'package': self.package,
55- 'requestor': self.reporter.name}
56+ 'requestor': self.requestor.name}
57 f.write('backport %(number)s -b %(requestor)s -S %(fromsuite)s -s %(tosuite)s %(package)s\n' % params)
58
59 def __str__(self):
60- return '#%d (%s: %s -> %s) %s' % (self.number,
61- self.package if self.package else 'unknown package',
62- self.source if self.source else 'unknown',
63- self.dest if self.dest else 'unknown',
64- self.title)
65+ return '#%d (%s: %s -> %s, from %s) %s' % (self.number,
66+ self.package if self.package else 'unknown package',
67+ self.source if self.source else 'unknown',
68+ self.dest if self.dest else 'unknown',
69+ self.requestor.name if self.requestor else 'unknown',
70+ self.title)
71
72 def length(collection):
73 # XXX: Workaround bug 274074. Thanks wgrant.
74@@ -135,7 +152,7 @@
75
76
77 def main(args=None):
78- global valid_series, backporters
79+ global valid_series, backporters, lp
80
81 options, args = parse_options(args[1:])
82
83@@ -153,6 +170,7 @@
84 bp_team = lp.people['ubuntu-backporters']
85 backporters = set(bp_team.getMembersByStatus(status='Approved')).union(
86 bp_team.getMembersByStatus(status='Administrator'))
87+ backporters = set(bp.name for bp in backporters)
88 pillar = lp.projects['ubp']
89 subscriber = lp.people['ubuntu-archive']
90
91@@ -189,7 +207,7 @@
92 msg = '[Show/sKip/'
93 if bug.valid():
94 msg += 'process Backport/'
95- msg += 'set Package/set sOurce series/set Dest series/opEn bug]: '
96+ msg += 'set Package/set sOurce series/set Dest series/set Requestor/opEn bug]: '
97 sys.stdout.write(msg)
98 sys.stdout.flush()
99 ret = sys.stdin.readline().rstrip().upper()
100@@ -213,6 +231,9 @@
101 elif ret == 'D':
102 if not bug.setDest(raw_input('New dest series? ')):
103 print 'Invalid series'
104+ elif ret == 'R':
105+ if not bug.setRequestor(raw_input('New requestor? ')):
106+ print 'Invalid requestor'
107 elif ret == 'E':
108 webbrowser.open('https://bugs.launchpad.net/bugs/%s' % bug.number)
109 else:

Subscribers

People subscribed via source and target branches