Skip to content

Commit ce812a3

Browse files
author
Sasha Romijn
committed
- Make skipping unavailable reviews the default, except for the
reviewer_overview page. - Make default_reviewer_rotation_list use a consistent return type - Legacy-Id: 16986
1 parent 48f72f2 commit ce812a3

4 files changed

Lines changed: 17 additions & 29 deletions

File tree

ietf/doc/tests_review.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -280,13 +280,6 @@ def test_assign_reviewer(self):
280280
another_reviewer = PersonFactory.create(name = "Extra TestReviewer") # needs to be lexically greater than the existing one
281281
another_reviewer.role_set.create(name_id='reviewer', email=another_reviewer.email(), group=review_req.team)
282282

283-
UnavailablePeriod.objects.create(
284-
team=review_req.team,
285-
person=reviewer_email.person,
286-
start_date=datetime.date.today() - datetime.timedelta(days=10),
287-
availability="unavailable",
288-
)
289-
290283
ReviewWish.objects.create(person=reviewer_email.person, team=review_req.team, doc=doc)
291284

292285
# pick a non-existing reviewer as next to see that we can
@@ -318,7 +311,6 @@ def test_assign_reviewer(self):
318311
self.assertIn("wishes to review", reviewer_label)
319312
self.assertIn("is author", reviewer_label)
320313
self.assertIn("regexp matches", reviewer_label)
321-
self.assertIn("unavailable indefinitely", reviewer_label)
322314
self.assertIn("skip next 1", reviewer_label)
323315
self.assertIn("#1", reviewer_label)
324316
self.assertIn("1 fully completed", reviewer_label)

ietf/group/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1391,7 +1391,7 @@ def reviewer_overview(request, acronym, group_type=None):
13911391

13921392
can_manage = can_manage_review_requests_for_team(request.user, group)
13931393

1394-
reviewers = get_reviewer_queue_policy(group).default_reviewer_rotation_list()
1394+
reviewers = get_reviewer_queue_policy(group).default_reviewer_rotation_list(include_unavailable=True)
13951395

13961396
reviewer_settings = { s.person_id: s for s in ReviewerSettings.objects.filter(team=group) }
13971397
unavailable_periods = defaultdict(list)

ietf/review/policies.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,9 @@ class AbstractReviewerQueuePolicy:
3232
def __init__(self, team):
3333
self.team = team
3434

35-
def default_reviewer_rotation_list(self, skip_unavailable=False, dont_skip=[]):
35+
def default_reviewer_rotation_list(self, dont_skip=[]):
3636
"""
3737
Return a list of reviewers in the default reviewer rotation for a policy.
38-
TODO: fix return types
3938
"""
4039
raise NotImplementedError
4140

@@ -283,8 +282,8 @@ class RotateWithSkipReviewerQueuePolicy(AbstractReviewerQueuePolicy):
283282
def update_policy_state_for_assignment(self, assignee_person_id, add_skip=False):
284283
assert assignee_person_id is not None
285284

286-
rotation_list = self.default_reviewer_rotation_list(skip_unavailable=True,
287-
dont_skip=[assignee_person_id])
285+
rotation_list = [p.id for p in self.default_reviewer_rotation_list(
286+
dont_skip=[assignee_person_id])]
288287

289288
def reviewer_at_index(i):
290289
if not rotation_list:
@@ -324,7 +323,7 @@ def reviewer_settings_for(person_id):
324323

325324
break
326325

327-
def default_reviewer_rotation_list(self, skip_unavailable=False, dont_skip=[]):
326+
def default_reviewer_rotation_list(self, include_unavailable=False, dont_skip=[]):
328327
reviewers = list(Person.objects.filter(role__name="reviewer", role__group=self.team))
329328
reviewers.sort(key=lambda p: p.last_name())
330329
next_reviewer_index = 0
@@ -347,10 +346,9 @@ def default_reviewer_rotation_list(self, skip_unavailable=False, dont_skip=[]):
347346

348347
rotation_list = reviewers[next_reviewer_index:] + reviewers[:next_reviewer_index]
349348

350-
reviewers_to_skip = []
351-
if skip_unavailable:
349+
if not include_unavailable:
352350
reviewers_to_skip = self._unavailable_reviewers(dont_skip)
353-
rotation_list = [p.pk for p in rotation_list if p.pk not in reviewers_to_skip]
354-
351+
rotation_list = [p for p in rotation_list if p.pk not in reviewers_to_skip]
352+
355353
return rotation_list
356354

ietf/review/test_policies.py

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,35 +22,33 @@ def test_default_reviewer_rotation_list(self):
2222
create_person(team, "reviewer", name="Test Reviewer{}".format(i), username="testreviewer{}".format(i))
2323
for i in range(5)
2424
]
25-
reviewers_pks = [r.pk for r in reviewers]
2625

2726
# This reviewer should never be included.
2827
unavailable_reviewer = create_person(team, "reviewer", name="unavailable reviewer", username="unavailablereviewer")
2928
UnavailablePeriod.objects.create(
3029
team=team,
3130
person=unavailable_reviewer,
3231
start_date='2000-01-01',
33-
end_date='3000-01-01',
3432
availability=UnavailablePeriod.AVAILABILITY_CHOICES[0],
3533
)
3634

3735
# Default policy without a NextReviewerInTeam
38-
rotation = policy.default_reviewer_rotation_list(skip_unavailable=True)
39-
self.assertNotIn(unavailable_reviewer.pk, rotation)
40-
self.assertEqual(rotation, reviewers_pks)
36+
rotation = policy.default_reviewer_rotation_list()
37+
self.assertNotIn(unavailable_reviewer, rotation)
38+
self.assertEqual(rotation, reviewers)
4139

4240
# Policy with a current NextReviewerInTeam
4341
NextReviewerInTeam.objects.create(team=team, next_reviewer=reviewers[3])
44-
rotation = policy.default_reviewer_rotation_list(skip_unavailable=True)
45-
self.assertNotIn(unavailable_reviewer.pk, rotation)
46-
self.assertEqual(rotation, reviewers_pks[3:] + reviewers_pks[:3])
42+
rotation = policy.default_reviewer_rotation_list()
43+
self.assertNotIn(unavailable_reviewer, rotation)
44+
self.assertEqual(rotation, reviewers[3:] + reviewers[:3])
4745

4846
# Policy with a NextReviewerInTeam that has left the team.
4947
Role.objects.get(person=reviewers[1]).delete()
5048
NextReviewerInTeam.objects.filter(team=team).update(next_reviewer=reviewers[1])
51-
rotation = policy.default_reviewer_rotation_list(skip_unavailable=True)
52-
self.assertNotIn(unavailable_reviewer.pk, rotation)
53-
self.assertEqual(rotation, reviewers_pks[2:] + reviewers_pks[:1])
49+
rotation = policy.default_reviewer_rotation_list()
50+
self.assertNotIn(unavailable_reviewer, rotation)
51+
self.assertEqual(rotation, reviewers[2:] + reviewers[:1])
5452

5553
def test_update_policy_state_for_assignment(self):
5654

0 commit comments

Comments
 (0)