Merge lp:~negronjl/charm-tools/review-queue-charmers-group-juju-docs into lp:~charmers/charm-tools/trunk

Proposed by Juan L. Negron on 2012-05-22
Status: Merged
Approved by: Clint Byrum on 2012-05-22
Approved revision: 140
Merge reported by: Juan L. Negron
Merged at revision: not available
Proposed branch: lp:~negronjl/charm-tools/review-queue-charmers-group-juju-docs
Merge into: lp:~charmers/charm-tools/trunk
Diff against target: 128 lines (+60/-47)
1 file modified
scripts/review-queue (+60/-47)
To merge this branch: bzr merge lp:~negronjl/charm-tools/review-queue-charmers-group-juju-docs
Reviewer Review Type Date Requested Status
Jorge Castro 2012-05-22 Pending
Review via email: mp+106861@code.launchpad.net
To post a comment you must log in.
140. By Juan L. Negron on 2012-05-22

Added use of itertools ... thx hazmat

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'scripts/review-queue'
2--- scripts/review-queue 2012-05-21 03:46:53 +0000
3+++ scripts/review-queue 2012-05-22 17:54:18 +0000
4@@ -3,10 +3,11 @@
5 from launchpadlib.launchpad import Launchpad
6 from operator import itemgetter
7 import datetime
8+import itertools
9
10 def calculate_age(from_date = None):
11- if not from_date:
12- return None
13+ if not from_date:
14+ return None
15
16
17 def format_as_table(data,
18@@ -71,53 +72,65 @@
19
20
21 def charm_review_queue():
22- print "Connecting to launchpad..."
23- lp = Launchpad.login_anonymously('charm-tools', 'production', version='devel', launchpadlib_dir='~/.cache/launchpadlib')
24- charm = lp.distributions['charms']
25- print "Querying launchpad for bugs ..."
26- bugs = charm.searchTasks(tags=['new-formula', 'new-charm'], tags_combinator="Any", status=['New', 'Confirmed', 'Triaged', 'In Progress', 'Fix Committed'])
27- charmers = lp.people['charmers']
28- print "Querying launchpad for proposals ..."
29- proposals = charmers.getRequestedReviews(status="Needs review")
30- queue = list()
31- max_summary_length = 50
32- for bug in bugs.entries:
33- entry_summary = bug['title'].split('"')[1].strip()
34- entry_age = datetime.datetime.utcnow() - datetime.datetime.strptime(bug['date_created'].split('+')[0], "%Y-%m-%dT%H:%M:%S.%f")
35- entry = {
36- 'date_created' : bug['date_created'].split("T")[0],
37- 'age' : str(entry_age).split('.')[0],
38- 'summary' : (entry_summary[:max_summary_length] + '...') if len(entry_summary) > max_summary_length else entry_summary,
39- 'item' : bug['web_link'],
40- 'status' : bug['status'],
41- }
42- queue.append(entry)
43- for proposal in proposals.entries:
44- proposal_summary = proposal['description']
45- proposal_age = datetime.datetime.utcnow() - datetime.datetime.strptime(proposal['date_created'].split('+')[0], "%Y-%m-%dT%H:%M:%S.%f")
46- if proposal_summary is None:
47- proposal_summary = "Proposal"
48- entry = {
49- 'date_created' : proposal['date_created'].split("T")[0],
50- 'age' : str(proposal_age).split('.')[0],
51- 'summary' : (proposal_summary[:max_summary_length] + '...') if len(proposal_summary) > max_summary_length else proposal_summary,
52- 'item' : proposal['web_link'],
53- 'status' : proposal['queue_status'],
54- }
55- queue.append(entry)
56- return(sorted(queue, key=lambda k: k['date_created']))
57+ print "Connecting to launchpad..."
58+ lp = Launchpad.login_anonymously('charm-tools', 'production', version='devel', launchpadlib_dir='~/.cache/launchpadlib')
59+ charm = lp.distributions['charms']
60+ charmers = lp.people['charmers']
61+ charm_contributors = lp.people['charm-contributors']
62+
63+ print "Querying launchpad for bugs ..."
64+ bugs = charm.searchTasks(tags=['new-formula', 'new-charm'], tags_combinator="Any", status=['New', 'Confirmed', 'Triaged', 'In Progress', 'Fix Committed'])
65+ charmers_bugs = charmers.searchTasks(status=['New', 'Confirmed', 'Triaged', 'In Progress', 'Fix Committed'])
66+
67+ print "Querying launchpad for proposals ..."
68+ proposals = charmers.getRequestedReviews(status="Needs review")
69+ charm_contributors_proposals = charm_contributors.getRequestedReviews(status="Needs review")
70+
71+ print "Building review_queue ..."
72+ queue = list()
73+ max_summary_length = 50
74+
75+ # Bugs in charms distribution and charmers group
76+ for bug in itertools.chain( bugs.entries, charmers_bugs.entries ):
77+ entry_summary = bug['title'].split('"')[1].strip()
78+ entry_age = datetime.datetime.utcnow() - datetime.datetime.strptime(bug['date_created'].split('+')[0], "%Y-%m-%dT%H:%M:%S.%f")
79+ entry = {
80+ 'date_created' : bug['date_created'].split("T")[0],
81+ 'age' : str(entry_age).split('.')[0],
82+ 'summary' : (entry_summary[:max_summary_length] + '...') if len(entry_summary) > max_summary_length else entry_summary,
83+ 'item' : bug['web_link'],
84+ 'status' : bug['status'],
85+ }
86+ queue.append(entry)
87+
88+ # Merge proposals in charmers group
89+ for proposal in itertools.chain(proposals.entries, charm_contributors_proposals.entries):
90+ proposal_summary = proposal['description']
91+ proposal_age = datetime.datetime.utcnow() - datetime.datetime.strptime(proposal['date_created'].split('+')[0], "%Y-%m-%dT%H:%M:%S.%f")
92+ if proposal_summary is None:
93+ proposal_summary = "Proposal"
94+ entry = {
95+ 'date_created' : proposal['date_created'].split("T")[0],
96+ 'age' : str(proposal_age).split('.')[0],
97+ 'summary' : (proposal_summary[:max_summary_length] + '...') if len(proposal_summary) > max_summary_length else proposal_summary,
98+ 'item' : proposal['web_link'],
99+ 'status' : proposal['queue_status'],
100+ }
101+ queue.append(entry)
102+
103+ return(sorted(queue, key=lambda k: k['date_created']))
104
105 def main():
106- review_queue = charm_review_queue()
107- keys = ['date_created', 'age', 'summary', 'item', 'status' ]
108- headers = ['Date Created', 'Age', 'Summary', 'Item', 'Status']
109- if type(review_queue) == type([]) and len(review_queue) > 0:
110- print format_as_table(review_queue,
111- keys,
112- header = headers,
113- sort_by_key = 'date_created',
114- sort_order_reverse = False)
115+ review_queue = charm_review_queue()
116+ keys = ['date_created', 'age', 'summary', 'item', 'status' ]
117+ headers = ['Date Created', 'Age', 'Summary', 'Item', 'Status']
118+ if type(review_queue) == type([]) and len(review_queue) > 0:
119+ print format_as_table(review_queue,
120+ keys,
121+ header = headers,
122+ sort_by_key = 'date_created',
123+ sort_order_reverse = False)
124
125
126 if __name__ == "__main__":
127- main()
128+ main()

Subscribers

People subscribed via source and target branches