mozreview: add diffstat information to the ReviewRequestSummaryResource (
Bug 1286017). r?glob
MozReview-Commit-ID: 6jQ6eK3mXNL
--- a/pylib/mozreview/mozreview/resources/review_request_summary.py
+++ b/pylib/mozreview/mozreview/resources/review_request_summary.py
@@ -8,16 +8,19 @@ from django.db.models import Q
from djblets.webapi.decorators import (webapi_response_errors,
webapi_request_fields)
from djblets.webapi.errors import (DOES_NOT_EXIST, INVALID_ATTRIBUTE,
NOT_LOGGED_IN, PERMISSION_DENIED)
from reviewboard.reviews.models import ReviewRequest
from reviewboard.webapi.encoder import status_to_string
from reviewboard.webapi.resources import WebAPIResource
+from mozreview.diffviewer import (
+ get_diffstats,
+)
from mozreview.extra_data import (
COMMITS_KEY,
COMMIT_ID_KEY,
MOZREVIEW_KEY,
fetch_commit_data,
gen_child_rrs,
get_parent_rr,
)
@@ -199,16 +202,20 @@ class ReviewRequestSummaryResource(WebAP
def _summarize_review_request(self, request, review_request, commit=None):
"""Returns a dict summarizing a ReviewRequest object.
Example return value for a child request (a parent looks the same but
without a 'commit' key):
{
'commit': 'ece2029d013af68f9f32aa0a6199fcb2201d5aae',
+ 'diff': {
+ 'insert': 15,
+ 'delete': 20
+ },
'has_draft': False,
'id': 3,
'issue_open_count': 0,
'last_updated': '2015-04-13T18:58:25Z',
'links': {
'self': {
'href': 'http://127.0.0.1:50936/api/extensions/mozreview.extension.MozReviewExtension/summary/3/',
'method': 'GET'
@@ -236,16 +243,17 @@ class ReviewRequestSummaryResource(WebAP
# TODO: 'submitter' and 'submitter_bmo_id' should be combined into one
# attribute, likewise with 'reviewers' and 'reviewers_bmo_ids'. See
# bug 1164756.
d['submitter'] = review_request.submitter.username
d['submitter_bmo_id'] = BugzillaUserMap.objects.get(
user_id=review_request.submitter.id).bugzilla_user_id
d['status'] = status_to_string(review_request.status)
d['reviewers'] = [reviewer.username for reviewer in reviewers]
+ d['diff'] = get_diffstats(review_request, request.user)
# If we have a commit (i.e. we are on a child) add reviewer_status.
if commit:
d['reviewers_status'] = get_reviewers_status(review_request,
reviewers)
d['reviewers_bmo_ids'] = [bzuser.bugzilla_user_id for bzuser in
BugzillaUserMap.objects.filter(user_id__in=[
reviewer.id for reviewer in reviewers])]