Source code for oioioi.usercontests.controllers

from django.conf import settings
from django.utils.translation import gettext_lazy as _

from oioioi.contests.utils import is_contest_admin
from oioioi.programs.controllers import ProgrammingContestController
from oioioi.programs.utils import filter_model_submissions, is_model_submission
from oioioi.teachers.controllers import TeacherRegistrationController


[docs]class UserContestController(ProgrammingContestController):
[docs] description = _("Contest for everyone")
[docs] def registration_controller(self): if settings.HIDE_USERCONTESTS: return TeacherRegistrationController(self.contest) else: return super().registration_controller()
[docs] def can_see_test(self, request, test): # Further restrict access to possibly copyrighted stuff return is_contest_admin(request)
[docs] def can_see_checker_exe(self, request, checker): # Further restrict access to possibly copyrighted stuff return is_contest_admin(request)
[docs] def can_submit(self, request, problem_instance, check_round_times=True): if settings.ARCHIVE_USERCONTESTS: return False return super(UserContestController, self).can_submit( request, problem_instance, check_round_times )
[docs] def filter_visible_sources(self, request, queryset): # With ARCHIVE_USERCONTESTS=True observers can be regular users who were # once basicadmins - so disallow observers from seeing model solutions if not is_contest_admin(request): queryset = filter_model_submissions(queryset) return super(UserContestController, self).filter_visible_sources( request, queryset )
[docs] def can_see_source(self, request, submission): # With ARCHIVE_USERCONTESTS=True observers can be regular users who were # once basicadmins - so disallow observers from seeing model solutions if not is_contest_admin(request) and is_model_submission(submission): return False return super(UserContestController, self).can_see_source(request, submission)