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, 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 call(self, timestamp): return tokens_available( self.participation, self.task, self.at(timestamp))
def call(self, timestamp): return tokens_available(self.participation, self.task, self.at(timestamp))
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