Ejemplo n.º 1
0
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+')
Ejemplo n.º 2
0
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
Ejemplo n.º 4
0
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]
Ejemplo n.º 5
0
def reviewers_status(review_request):
    return get_reviewers_status(review_request).items()
Ejemplo n.º 6
0
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]
Ejemplo n.º 7
0
def reviewers_status(review_request):
    return get_reviewers_status(review_request).items()
Ejemplo n.º 8
0
    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