From 6ff552640e26ab609428197a4dbdcba32aefb65d Mon Sep 17 00:00:00 2001 From: Russ Housley Date: Sat, 3 Nov 2018 04:24:32 +0000 Subject: [PATCH 1/2] Do not show reasons for review team member unavailability outside the team. Fixes #2614. Commit ready for merge. - Legacy-Id: 15683 --- ietf/group/tests_review.py | 22 +++++++++++++++++++++- ietf/group/views.py | 11 ++++++----- 2 files changed, 27 insertions(+), 6 deletions(-) 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 From 895aa0cfbe1656de6f5bc630b21576785d6c8932 Mon Sep 17 00:00:00 2001 From: Russ Housley Date: Sat, 3 Nov 2018 08:41:23 +0000 Subject: [PATCH 2/2] Commit ready for merge. - Legacy-Id: 15699 --- ietf/group/tests_review.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/ietf/group/tests_review.py b/ietf/group/tests_review.py index 4ef5581a6..c9870ccf0 100644 --- a/ietf/group/tests_review.py +++ b/ietf/group/tests_review.py @@ -113,7 +113,6 @@ class ReviewTests(TestCase): reviewer = RoleFactory(name_id='reviewer',group=team,person__user__username='reviewer').person 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( @@ -144,31 +143,29 @@ class ReviewTests(TestCase): urlreverse(ietf.group.views.reviewer_overview, kwargs={ 'acronym': group.acronym, 'group_type': group.type_id })]: r = self.client.get(url) self.assertEqual(r.status_code, 200) - 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.assertIn(unicode(reviewer), unicontent(r)) + self.assertIn(review_req1.doc.name, unicontent(r)) + # without a login, reason for being unavailable should not be seen + self.assertNotIn("Availability", unicontent(r)) + url = urlreverse(ietf.group.views.reviewer_overview, kwargs={ 'acronym': group.acronym }) 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.assertNotIn("Availability", unicontent(r)) - self.client.login(username="chair", password="chair+password") + self.client.login(username="reviewer", password="reviewer+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.assertIn("Availability", 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)) + self.assertIn("Availability", unicontent(r)) def test_manage_review_requests(self): group = ReviewTeamFactory()