Fix issue where queue might not advance correctly while managing
unassigned reviews, when some reviewers have a skip count. - Legacy-Id: 17060
This commit is contained in:
parent
b1eb2643f0
commit
3db8a0f39d
|
@ -1542,13 +1542,13 @@ def manage_review_requests(request, acronym, group_type=None, assignment_status=
|
|||
# of the rotation queue are processed first so that the queue
|
||||
# rotates before any more assignments are processed
|
||||
reviewer_policy = get_reviewer_queue_policy(group)
|
||||
head_of_rotation = reviewer_policy.default_reviewer_rotation_list()[0]
|
||||
head_of_rotation = reviewer_policy.default_reviewer_rotation_list_without_skipped()[0]
|
||||
while head_of_rotation in assignments_by_person:
|
||||
for review_req in assignments_by_person[head_of_rotation]:
|
||||
assign_review_request_to_reviewer(request, review_req, review_req.form.cleaned_data["reviewer"],review_req.form.cleaned_data["add_skip"])
|
||||
reqs_to_assign.remove(review_req)
|
||||
del assignments_by_person[head_of_rotation]
|
||||
head_of_rotation = reviewer_policy.default_reviewer_rotation_list()[0]
|
||||
head_of_rotation = reviewer_policy.default_reviewer_rotation_list_without_skipped()[0]
|
||||
|
||||
for review_req in reqs_to_assign:
|
||||
assign_review_request_to_reviewer(request, review_req, review_req.form.cleaned_data["reviewer"],review_req.form.cleaned_data["add_skip"])
|
||||
|
|
|
@ -57,6 +57,13 @@ class AbstractReviewerQueuePolicy:
|
|||
and should retroactively not have been rotated over.
|
||||
"""
|
||||
raise NotImplementedError # pragma: no cover
|
||||
|
||||
def default_reviewer_rotation_list_without_skipped(self):
|
||||
"""
|
||||
Return a list of reviewers (Person objects) in the default reviewer rotation for a policy,
|
||||
while skipping those with a skip_next>0.
|
||||
"""
|
||||
return [r for r in self.default_reviewer_rotation_list() if not self._reviewer_settings_for(r).skip_next]
|
||||
|
||||
def update_policy_state_for_assignment(self, assignee_person, add_skip=False):
|
||||
"""
|
||||
|
@ -78,8 +85,7 @@ class AbstractReviewerQueuePolicy:
|
|||
if not rotation_list:
|
||||
return
|
||||
|
||||
rotation_list_without_skip = [r for r in rotation_list if
|
||||
not self._reviewer_settings_for(r).skip_next]
|
||||
rotation_list_without_skip = self.default_reviewer_rotation_list_without_skipped()
|
||||
# In order means: assigned to the first person in the rotation list with skip_next=0
|
||||
# If the assignment is not in order, skip_next and NextReviewerInTeam are not modified.
|
||||
in_order_assignment = rotation_list_without_skip[0] == assignee_person
|
||||
|
|
Loading…
Reference in a new issue