diff --git a/ietf/meeting/helpers.py b/ietf/meeting/helpers.py index c26a2c024..6f956220f 100644 --- a/ietf/meeting/helpers.py +++ b/ietf/meeting/helpers.py @@ -326,8 +326,9 @@ def can_approve_interim_request(meeting, user): if not session: return False group = session.group - if group.type.slug == 'wg' and group.parent.role_set.filter(name='ad', person=person): - return True + if group.type.slug == 'wg': + if group.parent.role_set.filter(name='ad', person=person) or group.role_set.filter(name='ad', person=person): + return True if group.type.slug == 'rg' and group.parent.role_set.filter(name='chair', person=person): return True return False diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index f8fef1673..a56c088e3 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -1747,9 +1747,12 @@ class InterimTests(TestCase): # related AD user = User.objects.get(username='ad') self.assertTrue(can_approve_interim_request(meeting=meeting,user=user)) - # other AD + # AD from other area user = User.objects.get(username='ops-ad') self.assertFalse(can_approve_interim_request(meeting=meeting,user=user)) + # AD from other area assigned as the WG AD anyhow (cross-area AD) + user = RoleFactory(name_id='ad',group=group).person.user + self.assertTrue(can_approve_interim_request(meeting=meeting,user=user)) # WG Chair user = User.objects.get(username='marschairman') self.assertFalse(can_approve_interim_request(meeting=meeting,user=user))