def test_permissions(self): contest = Contest.objects.get() tconf = TeamsConfig(contest=contest, modify_begin_date=datetime(2012, 1, 1, 8, tzinfo=utc), modify_end_date=datetime(2012, 1, 1, 12, tzinfo=utc), enabled=True) tconf.save() user = User.objects.get(username='******') factory = RequestFactory() request = factory.request() request.contest = contest request.user = user timestamp = datetime(2012, 1, 1, 10, tzinfo=utc) with fake_time(timestamp): request.timestamp = timestamp self.assertEqual(contest.controller.can_modify_team(request), True) self.assertEqual(can_join_team(request), True) self.assertEqual(can_quit_team(request), False) self.assertEqual(can_delete_team(request), False) self.assertEqual(can_create_team(request), True) team = create_team('test_team', 'Super Team!', contest) tm = TeamMembership(team=team, user=user) tm.save() self.assertEqual(can_join_team(request), False) self.assertEqual(can_quit_team(request), False) self.assertEqual(can_delete_team(request), True) self.assertEqual(can_create_team(request), False) user2 = User.objects.get(username='******') tm = TeamMembership(team=team, user=user2) tm.save() self.assertEqual(can_join_team(request), False) self.assertEqual(can_quit_team(request), True) self.assertEqual(can_delete_team(request), False) self.assertEqual(can_create_team(request), False) self.client.login(username='******') problem_instance = ProblemInstance.objects.get() self.submit_file(contest, problem_instance, user=team.user) self.assertEqual(can_quit_team(request), False)
def team_view(request): controller = request.contest.controller try: tm = TeamMembership.objects.get(user=request.user, team__contest=request.contest) members = team_members_names(request, tm.team) can_invite = (len(members) < controller.max_size_of_team()) and \ controller.can_modify_team(request) join_link = request.build_absolute_uri( reverse('join_team', kwargs={ 'contest_id': request.contest.id, 'join_key': tm.team.join_key })) return TemplateResponse( request, 'teams/team.html', { 'members': members, 'name': tm.team.name, 'join_link': join_link, 'show_delete': can_delete_team(request), 'show_quit': can_quit_team(request), 'show_invite': can_invite }) except TeamMembership.DoesNotExist: return HttpResponseRedirect( reverse('create_team', kwargs={'contest_id': request.contest.id}))