from django.core.files.base import ContentFile
from django.db.models import Q
from django.urls import reverse
from oioioi.base.utils.query_helpers import Q_always_false
from oioioi.contests.controllers import (
ContestController,
PastRoundsHiddenContestControllerMixin,
RegistrationController,
)
[docs]class PrivateRegistrationController(RegistrationController):
@classmethod
[docs] def anonymous_can_enter_contest(cls):
return False
[docs] def user_contests_query(self, request):
return Q_always_false()
[docs] def filter_participants(self, queryset):
return queryset.none()
[docs]class PrivateContestController(ContestController):
[docs] def registration_controller(self):
return PrivateRegistrationController(self.contest)
[docs] def update_submission_score(self, submission):
raise NotImplementedError
[docs] def render_submission(self, request, submission):
raise NotImplementedError
[docs] def create_submission(self, request, problem_instance, form_data, **kwargs):
raise NotImplementedError
[docs]class PastRoundsHiddenContestController(ContestController):
pass
PastRoundsHiddenContestController.mix_in(PastRoundsHiddenContestControllerMixin)
[docs]class SubmitMixin(object):
[docs] def _assertSubmitted(self, contest, response):
self.assertEqual(302, response.status_code)
submissions = reverse('my_submissions', kwargs={'contest_id': contest.id})
self.assertTrue(response["Location"].endswith(submissions))
[docs] def _assertNotSubmitted(self, contest, response):
self.assertEqual(302, response.status_code)
submissions = reverse('my_submissions', kwargs={'contest_id': contest.id})
self.assertFalse(response["Location"].endswith(submissions))