Skip to content

Commit 3db8a0f

Browse files
author
Sasha Romijn
committed
Fix issue where queue might not advance correctly while managing
unassigned reviews, when some reviewers have a skip count. - Legacy-Id: 17060
1 parent b1eb264 commit 3db8a0f

2 files changed

Lines changed: 10 additions & 4 deletions

File tree

ietf/group/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1542,13 +1542,13 @@ def manage_review_requests(request, acronym, group_type=None, assignment_status=
15421542
# of the rotation queue are processed first so that the queue
15431543
# rotates before any more assignments are processed
15441544
reviewer_policy = get_reviewer_queue_policy(group)
1545-
head_of_rotation = reviewer_policy.default_reviewer_rotation_list()[0]
1545+
head_of_rotation = reviewer_policy.default_reviewer_rotation_list_without_skipped()[0]
15461546
while head_of_rotation in assignments_by_person:
15471547
for review_req in assignments_by_person[head_of_rotation]:
15481548
assign_review_request_to_reviewer(request, review_req, review_req.form.cleaned_data["reviewer"],review_req.form.cleaned_data["add_skip"])
15491549
reqs_to_assign.remove(review_req)
15501550
del assignments_by_person[head_of_rotation]
1551-
head_of_rotation = reviewer_policy.default_reviewer_rotation_list()[0]
1551+
head_of_rotation = reviewer_policy.default_reviewer_rotation_list_without_skipped()[0]
15521552

15531553
for review_req in reqs_to_assign:
15541554
assign_review_request_to_reviewer(request, review_req, review_req.form.cleaned_data["reviewer"],review_req.form.cleaned_data["add_skip"])

ietf/review/policies.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@ def return_reviewer_to_top_rotation(self, reviewer_person):
5757
and should retroactively not have been rotated over.
5858
"""
5959
raise NotImplementedError # pragma: no cover
60+
61+
def default_reviewer_rotation_list_without_skipped(self):
62+
"""
63+
Return a list of reviewers (Person objects) in the default reviewer rotation for a policy,
64+
while skipping those with a skip_next>0.
65+
"""
66+
return [r for r in self.default_reviewer_rotation_list() if not self._reviewer_settings_for(r).skip_next]
6067

6168
def update_policy_state_for_assignment(self, assignee_person, add_skip=False):
6269
"""
@@ -78,8 +85,7 @@ def reviewer_at_index(i):
7885
if not rotation_list:
7986
return
8087

81-
rotation_list_without_skip = [r for r in rotation_list if
82-
not self._reviewer_settings_for(r).skip_next]
88+
rotation_list_without_skip = self.default_reviewer_rotation_list_without_skipped()
8389
# In order means: assigned to the first person in the rotation list with skip_next=0
8490
# If the assignment is not in order, skip_next and NextReviewerInTeam are not modified.
8591
in_order_assignment = rotation_list_without_skip[0] == assignee_person

0 commit comments

Comments
 (0)