Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: my_reviews.py

Issue 7989013: Actually, it's filtering by reviews that is useful, clean up the code accordingly (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: rebase against head Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: my_reviews.py
diff --git a/my_reviews.py b/my_reviews.py
index 4509a489734fcef7a8d39e9e61cdeaa41986669e..28f82e27c841324bbea6b1d4fe6eeb28648e6f41 100755
--- a/my_reviews.py
+++ b/my_reviews.py
@@ -3,7 +3,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
-"""Get rietveld stats.
+"""Get rietveld stats about the review you done, or forgot to do.
Example:
- my_reviews.py -o me@chromium.org -Q for stats for last quarter.
@@ -16,43 +16,58 @@ import sys
import rietveld
-def print_reviews(owner, reviewer, created_after, created_before, instance_url):
- """Prints issues with the filter.
+def username(email):
+ return email.split('@', 1)[0]
- Set with_messages=True to search() call bellow if you want each message too.
- If you only want issue numbers, use keys_only=True in the search() call.
- You can then use remote.get_issue_properties(issue, True) to get the data per
- issue.
- """
+
+def print_reviews(reviewer, created_after, created_before, instance_url):
+ """Prints issues the dude reviewed."""
remote = rietveld.Rietveld(instance_url, None, None)
+ total = 0
+ actually_reviewed = 0
# See def search() in rietveld.py to see all the filters you can use.
for issue in remote.search(
- owner=owner,
reviewer=reviewer,
created_after=created_after,
created_before=created_before,
- keys_only=False,
- with_messages=False,
+ with_messages=True,
):
+ total += 1
# By default, hide commit-bot and the domain.
- reviewers = set(r.split('@', 1)[0] for r in issue['reviewers'])
- reviewers -= set(('commit-bot',))
+ reviewers = set(username(r) for r in issue['reviewers'])
+ reviewers -= set(['commit-bot'])
# Strip time.
timestamp = issue['created'][:10]
+ if any(
+ username(msg['sender']) == username(reviewer)
+ for msg in issue['messages']):
+ reviewed = ' x '
+ actually_reviewed += 1
+ else:
+ reviewed = ' '
# More information is available, print issue.keys() to see them.
- print '%d: %s %s' % (issue['issue'], timestamp, ', '.join(reviewers))
-
-
-def print_count(owner, reviewer, created_after, created_before, instance_url):
+ print '%7d %s %s O:%-15s R:%s' % (
+ issue['issue'],
+ timestamp,
+ reviewed,
+ username(issue['owner_email']),
+ ', '.join(reviewers))
+ percent = 0.
+ if total:
+ percent = (actually_reviewed * 100. / total)
+ print 'You actually reviewed %d issues out of %d (%1.1f%%)' % (
+ actually_reviewed, total, percent)
+
+
+def print_count(reviewer, created_after, created_before, instance_url):
remote = rietveld.Rietveld(instance_url, None, None)
print len(list(remote.search(
- owner=owner,
reviewer=reviewer,
created_after=created_after,
created_before=created_before,
- keys_only=False)))
+ keys_only=True)))
def get_previous_quarter(today):
@@ -89,9 +104,9 @@ def main():
'--count', action='store_true',
help='Just count instead of printing individual issues')
parser.add_option(
- '-o', '--owner', metavar='<email>', help='Filter on issue owner')
- parser.add_option(
- '-r', '--reviewer', metavar='<email>', help='Filter on issue reviewer')
+ '-r', '--reviewer', metavar='<email>',
+ default=os.environ.get('EMAIL_ADDRESS'),
+ help='Filter on issue reviewer, default=%default')
parser.add_option(
'-c', '--created_after', metavar='<date>',
help='Filter issues created after the date')
@@ -111,11 +126,8 @@ def main():
options, args = parser.parse_args()
if args:
parser.error('Args unsupported')
- if not options.owner and not options.reviewer:
- options.owner = os.environ['EMAIL_ADDRESS']
- if '@' not in options.owner:
- parser.error('Please specify at least -o or -r')
- print >> sys.stderr, 'Defaulting to owner=%s' % options.owner
+
+ print >> sys.stderr, 'Searching for reviews by %s' % options.reviewer
if options.last_quarter:
options.created_after = created_after
options.created_before = created_before
@@ -123,13 +135,15 @@ def main():
options.created_after, options.created_before)
if options.count:
print_count(
- options.owner, options.reviewer,
- options.created_after, options.created_before,
+ options.reviewer,
+ options.created_after,
+ options.created_before,
options.instance_url)
else:
print_reviews(
- options.owner, options.reviewer,
- options.created_after, options.created_before,
+ options.reviewer,
+ options.created_after,
+ options.created_before,
options.instance_url)
return 0
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698