Пример #1
0
    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)
Пример #2
0
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}))
Пример #3
0
    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)