| 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
 | 
|  
 | 
| 
 |