diff --git a/ietf/group/tests_review.py b/ietf/group/tests_review.py index a3fab457c..4ef5581a6 100644 --- a/ietf/group/tests_review.py +++ b/ietf/group/tests_review.py @@ -114,6 +114,7 @@ class ReviewTests(TestCase): ReviewerSettingsFactory(person=reviewer,team=team) review_req1 = ReviewRequestFactory(state_id='completed',team=team,reviewer=reviewer.email()) RoleFactory(name_id='chair',person=reviewer,group=review_req1.doc.group) + PersonFactory(user__username='plain') ReviewRequest.objects.create( doc=review_req1.doc, @@ -146,10 +147,29 @@ class ReviewTests(TestCase): self.assertTrue(unicode(reviewer) in unicontent(r)) self.assertTrue(review_req1.doc.name in unicontent(r)) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + # without a login, reason for being unavailable should not be seen + self.assertFalse("Availability" in unicontent(r)) + + self.client.login(username="plain", password="plain+password") + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + # not on review team, should not see reason for being unavailable + self.assertFalse("Availability" in unicontent(r)) + + self.client.login(username="chair", password="chair+password") + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + # review team members can see reason for being unavailable + self.assertTrue("Availability" in unicontent(r)) + self.client.login(username="secretary", password="secretary+password") r = self.client.get(url) self.assertEqual(r.status_code, 200) - + # secretariat can see reason for being unavailable + self.assertTrue("Availability" in unicontent(r)) + def test_manage_review_requests(self): group = ReviewTeamFactory() reviewer = RoleFactory(name_id='reviewer',group=group,person__user__username='reviewer').person diff --git a/ietf/group/views.py b/ietf/group/views.py index 082b0e0a2..134ada2fc 100644 --- a/ietf/group/views.py +++ b/ietf/group/views.py @@ -1376,11 +1376,12 @@ def reviewer_overview(request, acronym, group_type=None): if group_type: kwargs["group_type"] = group_type person.settings_url = urlreverse("ietf.group.views.change_reviewer_settings", kwargs=kwargs) - person.unavailable_periods = unavailable_periods.get(person.pk, []) - person.completely_unavailable = any(p.availability == "unavailable" - and (p.start_date is None or p.start_date <= today) and (p.end_date is None or today <= p.end_date) - for p in person.unavailable_periods) - person.busy = person.id in days_needed + if can_access_review_stats_for_team(request.user, group): + person.unavailable_periods = unavailable_periods.get(person.pk, []) + person.completely_unavailable = any(p.availability == "unavailable" + and (p.start_date is None or p.start_date <= today) and (p.end_date is None or today <= p.end_date) + for p in person.unavailable_periods) + person.busy = person.id in days_needed MAX_CLOSED_REQS = 10