def can_approve_application(team, user): return can_invite(team, user)
def can_invite_to_team(team, user): return can_invite(team, user)
def test_can_invite(self): team, user, outsider = self.team, self.user, self.outsider # If the policy is by-application, only admins+ can send invites. team.membership_policy = Team.APPLICATION team.save() for r in [ROLE_ADMIN, ROLE_OWNER]: with self.role(r): self.assertTrue(can_invite(team, user)) for r in [ROLE_ADMIN]: with self.role(r, self.test_project): self.assertFalse(can_invite(team, user)) for r in [ROLE_MANAGER, ROLE_CONTRIBUTOR]: with self.role(r): self.assertFalse(can_invite(team, user)) self.assertFalse(can_invite(team, outsider)) # Manager invites. team.membership_policy = Team.INVITATION_BY_MANAGER team.save() for r in [ROLE_MANAGER, ROLE_ADMIN, ROLE_OWNER]: with self.role(r): self.assertTrue(can_invite(team, user)) for r in [ROLE_MANAGER, ROLE_ADMIN]: with self.role(r, self.test_project): self.assertFalse(can_invite(team, user)) for r in [ROLE_CONTRIBUTOR]: with self.role(r): self.assertFalse(can_invite(team, user)) self.assertFalse(can_invite(team, outsider)) # Admin invites. team.membership_policy = Team.INVITATION_BY_ADMIN team.save() for r in [ROLE_ADMIN, ROLE_OWNER]: with self.role(r): self.assertTrue(can_invite(team, user)) for r in [ROLE_ADMIN]: with self.role(r, self.test_project): self.assertFalse(can_invite(team, user)) for r in [ROLE_MANAGER, ROLE_CONTRIBUTOR]: with self.role(r): self.assertFalse(can_invite(team, user)) self.assertFalse(can_invite(team, outsider)) # Open and All are the same for the purpose of sending invites. for policy in [Team.OPEN, Team.INVITATION_BY_ALL]: team.membership_policy = policy team.save() for r in [ROLE_CONTRIBUTOR, ROLE_MANAGER, ROLE_ADMIN, ROLE_OWNER]: with self.role(r): self.assertTrue(can_invite(team, user)) for r in [ROLE_MANAGER, ROLE_ADMIN]: with self.role(r, self.test_project): self.assertTrue(can_invite(team, user)) self.assertFalse(can_invite(team, outsider))