Index: commit_queue.py |
diff --git a/commit_queue.py b/commit_queue.py |
index ef33d0dcb994f169ddef8a300aa9bf3f93db5762..b7b0b1319edfb956244a8ee2205fdb816c3b6645 100644 |
--- a/commit_queue.py |
+++ b/commit_queue.py |
@@ -315,12 +315,24 @@ class CQBasePage(BasePage): |
class OwnerStats(object): |
"""CQ usage statistics for a single user.""" |
def __init__(self, now, owner, last_day, last_week, last_month, forever): |
+ # Since epoch in float. |
self.now = now |
+ # User instance. |
self.owner = owner |
+ assert all(isinstance(i, PendingCommit) for i in last_day) |
self.last_day = last_day |
+ assert all(isinstance(i, PendingCommit) for i in last_week) |
self.last_week = last_week |
+ assert isinstance(last_month, int) |
self.last_month = last_month |
+ assert isinstance(forever, int) |
self.forever = forever |
+ # Gamify ALL the things! |
+ self.points = ( |
+ len(self.last_day) * 10 + |
+ len(self.last_week) * 5 + |
+ self.last_month + 2 + |
+ self.forever) |
class OwnerQuery(object): |
@@ -402,6 +414,30 @@ class Summary(CQBasePage): |
self.DisplayTemplate('cq_owners.html', template_values, use_cache=True) |
+class TopScore(CQBasePage): |
+ def _get_as_html(self, _): |
+ owners = [ |
+ { |
+ 'name': stats.owner.email.split('@', 1)[0].upper(), |
+ 'points': stats.points, |
+ } |
+ for stats in monthly_top_contributors() |
+ ] |
+ owners.sort(key=lambda x: -x['points']) |
+ for i in xrange(len(owners)): |
+ if i == 0: |
+ owners[i]['rank'] = '1st' |
+ elif i == 1: |
+ owners[i]['rank'] = '2nd' |
+ elif i == 2: |
+ owners[i]['rank'] = '3rd' |
+ else: |
+ owners[i]['rank'] = '%dth' % (i + 1) |
+ template_values = self.InitializeTemplate(self.APP_NAME + ' Commit queue') |
+ template_values['data'] = owners |
+ self.DisplayTemplate('cq_top_score.html', template_values, use_cache=True) |
+ |
+ |
class User(CQBasePage): |
def _get_as_html(self, query): |
pending_commits_events = {} |