def post(self, task_name, submission_num): task = self.get_task(task_name) if task is None: raise tornado.web.HTTPError(404) submission = self.get_submission(task, submission_num) if submission is None: raise tornado.web.HTTPError(404) try: accept_token(self.sql_session, submission, self.timestamp) self.sql_session.commit() except UnacceptableToken as e: self.notify_error(e.subject, e.text) except TokenAlreadyPlayed as e: self.notify_warning(e.subject, e.text) else: # Inform ProxyService and eventually the ranking that the # token has been played. self.service.proxy_service.submission_tokened( submission_id=submission.id) logger.info("Token played by user %s on task %s.", self.current_user.user.username, task.name) # Add "All ok" notification. self.notify_success(N_("Token request received"), N_("Your request has been received " "and applied to the submission.")) self.redirect(self.contest_url("tasks", task.name, "submissions"))
def call(self): return accept_token(self.session, self.submission, self.timestamp)