def pre_save_review(sender, *args, **kwargs): """Handle pre_save for a Review. This is needed to give a default value to the REVIEW_FLAG_KEY extra_data key. It tries to retrieve the last known review status, falling back to r? if no status is found. """ review = kwargs["instance"] if review.pk: # The review create endpoint calls save twice: the first time it # gets or creates the review and the second time it updates the # object retrieved/created. This condition let us execute the code # below only once. if not is_parent(review.review_request): if REVIEW_FLAG_KEY not in review.extra_data: # TODO: we should use a different query than going through # all the reviews, which is what get_reviewers_status does. reviewers_status = get_reviewers_status( review.review_request, reviewers=[review.user]) user = review.user.username flag = reviewers_status.get(user, {}).get('review_flag', ' ') review.extra_data[REVIEW_FLAG_KEY] = flag review.ship_it = (review.extra_data[REVIEW_FLAG_KEY] == 'r+')
def pre_save_review(sender, *args, **kwargs): """Handle pre_save for a Review. This is needed to give a default value to the REVIEW_FLAG_KEY extra_data key. It tries to retrieve the last known review status, falling back to r? if no status is found. """ review = kwargs["instance"] if review.pk: # The review create endpoint calls save twice: the first time it # gets or creates the review and the second time it updates the # object retrieved/created. This condition let us execute the code # below only once. if not is_parent(review.review_request): if REVIEW_FLAG_KEY not in review.extra_data: # TODO: we should use a different query than going through # all the reviews, which is what get_reviewers_status does. reviewers_status = get_reviewers_status(review.review_request, reviewers=[review.user]) user = review.user.username flag = reviewers_status.get(user, {}).get('review_flag', ' ') review.extra_data[REVIEW_FLAG_KEY] = flag review.ship_it = (review.extra_data[REVIEW_FLAG_KEY] == 'r+')
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', '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' } }, 'reviewers': [ 'jrandom' ], 'reviewers_status': { 'jrandom': { 'ship_it': True } }, 'status': 'pending', 'submitter': 'mcote', 'summary': 'Bug 1 - Update README.md.' } """ reviewers = list(review_request.target_people.all()) d = {} for field in ('id', 'summary', 'last_updated', 'issue_open_count'): d[field] = getattr(review_request, field) # 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] # 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])] d['links'] = self.get_links(obj=review_request, request=request) if commit: d['commit'] = commit return d
def reviewer_status_with_drive_by(review_request, reviewer): reviewer_status = get_reviewers_status(review_request, reviewers=[reviewer], include_drive_by=True) return reviewer_status[reviewer.username]
def reviewers_status(review_request): return get_reviewers_status(review_request).items()
def reviewer_status_with_drive_by(review_request, reviewer): reviewer_status = get_reviewers_status(review_request, reviewers=[reviewer], include_drive_by=True) return reviewer_status[reviewer.username]
def reviewers_status(review_request): return get_reviewers_status(review_request).items()
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' } }, 'reviewers': [ 'jrandom' ], 'reviewers_status': { 'jrandom': { 'ship_it': True } }, 'status': 'pending', 'submitter': 'mcote', 'summary': 'Bug 1 - Update README.md.' } """ reviewers = list(review_request.target_people.all()) d = {} for field in ('id', 'summary', 'last_updated', 'issue_open_count'): d[field] = getattr(review_request, field) # 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])] d['links'] = self.get_links(obj=review_request, request=request) if commit: d['commit'] = commit d['has_draft'] = review_request.get_draft() is not None return d