def get(self, task_name): participation = self.current_user task = self.get_task(task_name) if task is None: raise tornado.web.HTTPError(404) submissions = self.sql_session.query(Submission)\ .filter(Submission.participation == participation)\ .filter(Submission.task == task)\ .options(joinedload(Submission.token))\ .options(joinedload(Submission.results))\ .all() public_score, is_public_score_partial = task_score( participation, task, public=True, rounded=True) tokened_score, is_tokened_score_partial = task_score( participation, task, only_tokened=True, rounded=True) # These two should be the same, anyway. is_score_partial = is_public_score_partial or is_tokened_score_partial submissions_left_contest = None if self.contest.max_submission_number is not None: submissions_c = \ get_submission_count(self.sql_session, participation, contest=self.contest) submissions_left_contest = \ self.contest.max_submission_number - submissions_c submissions_left_task = None if task.max_submission_number is not None: submissions_left_task = \ task.max_submission_number - len(submissions) submissions_left = submissions_left_contest if submissions_left_task is not None and \ (submissions_left_contest is None or submissions_left_contest > submissions_left_task): submissions_left = submissions_left_task # Make sure we do not show negative value if admins changed # the maximum if submissions_left is not None: submissions_left = max(0, submissions_left) tokens_info = tokens_available(participation, task, self.timestamp) download_allowed = self.contest.submissions_download_allowed self.render("task_submissions.html", task=task, submissions=submissions, public_score=public_score, tokened_score=tokened_score, is_score_partial=is_score_partial, tokens_task=task.token_mode, tokens_info=tokens_info, submissions_left=submissions_left, submissions_download_allowed=download_allowed, **self.r_params)
def get(self, task_name): participation = self.current_user task = self.get_task(task_name) if task is None: raise tornado.web.HTTPError(404) submissions = self.sql_session.query(Submission)\ .filter(Submission.participation == participation)\ .filter(Submission.task == task)\ .options(joinedload(Submission.token))\ .options(joinedload(Submission.results))\ .all() public_score, is_public_score_partial = task_score( participation, task, public=True) tokened_score, is_tokened_score_partial = task_score( participation, task, only_tokened=True) # These two should be the same, anyway. is_score_partial = is_public_score_partial or is_tokened_score_partial submissions_left_contest = None if self.contest.max_submission_number is not None: submissions_c = \ get_submission_count(self.sql_session, participation, contest=self.contest) submissions_left_contest = \ self.contest.max_submission_number - submissions_c submissions_left_task = None if task.max_submission_number is not None: submissions_left_task = \ task.max_submission_number - len(submissions) submissions_left = submissions_left_contest if submissions_left_task is not None and \ (submissions_left_contest is None or submissions_left_contest > submissions_left_task): submissions_left = submissions_left_task # Make sure we do not show negative value if admins changed # the maximum if submissions_left is not None: submissions_left = max(0, submissions_left) tokens_info = tokens_available(participation, task, self.timestamp) download_allowed = self.contest.submissions_download_allowed self.render("task_submissions.html", task=task, submissions=submissions, public_score=public_score, tokened_score=tokened_score, is_score_partial=is_score_partial, tokens_task=task.token_mode, tokens_info=tokens_info, submissions_left=submissions_left, submissions_download_allowed=download_allowed, **self.r_params)
def get(self): participation = self.current_user if not self.r_params["testing_enabled"]: raise tornado_web.HTTPError(404) user_tests = dict() user_tests_left = dict() default_task = None user_tests_left_contest = None if self.contest.max_user_test_number is not None: user_test_c = \ get_submission_count(self.sql_session, participation, contest=self.contest, cls=UserTest) user_tests_left_contest = \ self.contest.max_user_test_number - user_test_c for task in self.contest.tasks: if self.get_argument("task_name", None) == task.name: default_task = task if default_task is None and task.active_dataset.task_type_object.testable: default_task = task user_tests[task.id] = self.sql_session.query(UserTest)\ .filter(UserTest.participation == participation)\ .filter(UserTest.task == task)\ .all() user_tests_left_task = None if task.max_user_test_number is not None: user_tests_left_task = \ task.max_user_test_number - len(user_tests[task.id]) user_tests_left[task.id] = user_tests_left_contest if user_tests_left_task is not None and \ (user_tests_left_contest is None or user_tests_left_contest > user_tests_left_task): user_tests_left[task.id] = user_tests_left_task # Make sure we do not show negative value if admins changed # the maximum if user_tests_left[task.id] is not None: user_tests_left[task.id] = max(0, user_tests_left[task.id]) if default_task is None and len(self.contest.tasks) > 0: default_task = self.contest.tasks[0] self.render("test_interface.html", default_task=default_task, user_tests=user_tests, user_tests_left=user_tests_left, **self.r_params)
def get(self): participation = self.current_user if not self.r_params["testing_enabled"]: raise tornado.web.HTTPError(404) user_tests = dict() user_tests_left = dict() default_task = None user_tests_left_contest = None if self.contest.max_user_test_number is not None: user_test_c = \ get_submission_count(self.sql_session, participation, contest=self.contest, cls=UserTest) user_tests_left_contest = \ self.contest.max_user_test_number - user_test_c for task in self.contest.tasks: if self.get_argument("task_name", None) == task.name: default_task = task user_tests[task.id] = self.sql_session.query(UserTest)\ .filter(UserTest.participation == participation)\ .filter(UserTest.task == task)\ .all() user_tests_left_task = None if task.max_user_test_number is not None: user_tests_left_task = \ task.max_user_test_number - len(user_tests[task.id]) user_tests_left[task.id] = user_tests_left_contest if user_tests_left_task is not None and \ (user_tests_left_contest is None or user_tests_left_contest > user_tests_left_task): user_tests_left[task.id] = user_tests_left_task # Make sure we do not show negative value if admins changed # the maximum if user_tests_left[task.id] is not None: user_tests_left[task.id] = max(0, user_tests_left[task.id]) if default_task is None and len(self.contest.tasks) > 0: default_task = self.contest.tasks[0] self.render("test_interface.html", default_task=default_task, user_tests=user_tests, user_tests_left=user_tests_left, **self.r_params)
def call(self, participation=None, **kwargs): if participation is None: participation = self.participation return get_submission_count(self.session, participation, **kwargs)
def append_task_render_params(self, task_name, rparams): """Append task-specific render parameters """ participation = self.current_user task = self.get_task(task_name) if task is None: raise tornado.web.HTTPError(404) submissions = self.sql_session.query(Submission)\ .filter(Submission.participation == participation)\ .filter(Submission.task == task)\ .options(joinedload(Submission.token))\ .options(joinedload(Submission.results))\ .all() public_score, is_public_score_partial = task_score(participation, task, public=True, rounded=True) tokened_score, is_tokened_score_partial = task_score(participation, task, only_tokened=True, rounded=True) # These two should be the same, anyway. is_score_partial = is_public_score_partial or is_tokened_score_partial submissions_left_contest = None if self.contest.max_submission_number is not None: submissions_c = \ get_submission_count(self.sql_session, participation, contest=self.contest) submissions_left_contest = \ self.contest.max_submission_number - submissions_c submissions_left_task = None if task.max_submission_number is not None: submissions_left_task = \ task.max_submission_number - len(submissions) submissions_left = submissions_left_contest if submissions_left_task is not None and \ (submissions_left_contest is None or submissions_left_contest > submissions_left_task): submissions_left = submissions_left_task # Make sure we do not show negative value if admins changed # the maximum if submissions_left is not None: submissions_left = max(0, submissions_left) tokens_info = tokens_available(participation, task, self.timestamp) download_allowed = self.contest.submissions_download_allowed rparams['task'] = task rparams['submissions'] = submissions rparams['public_score'] = public_score rparams['tokened_score'] = tokened_score rparams['is_score_partial'] = is_score_partial rparams['tokens_task'] = task.token_mode rparams['tokens_info'] = tokens_info rparams['submissions_left'] = submissions_left rparams['submissions_download_allowed'] = download_allowed return rparams