Source code for mooshak2api.evaluation

import requests

from mooshak2api.factory import GenericObject


[docs]class Evaluation(GenericObject): type = "evaluation_summary" status = "not_fetched" def __init__(self, contest_id, problem_id): super(Evaluation, self).__init__() self.contest_id = contest_id self.problem_id = problem_id
[docs] def refresh(self, connection): """ Refreshes the data from the server :param connection: :return: """ r = requests.get( f"{connection.endpoint}data/contests/{self.contest_id}/submissions/{self.id}/evaluation-summary", headers=connection.headers_with_auth() ) self.load_from_dict(r.json())
@property def notify_type(self) -> str: """ Returns the 'notification type' of the message, being one of: - success (Green) - warning (Amber/Orange) - error (Red) - info (blue) This is based from self.status. If they is no status, then 'none' will be returned :return: str: notify_type """ status = dict( error_status={"Compile Time Error", "Invalid Exit Value", "Invalid Function", "Invalid Submission", "Memory Limit Exceeded", "Output Limit Exceeded", "Presentation Error", "Program Size Exceeded", "Requires Reevaluation", "Runtime Error", "Time Limit Exceeded"}, warning_status={"Wrong Answer", "Evaluation Skipped"}, success_status={"Accepted"}, info_status={"Evaluating"} ) if not hasattr(self, "status") or self.status is None: return None if self.status in status["success_status"]: return 'success' if self.status in status["error_status"]: return 'error' if self.status in status["warning_status"]: return 'warning' if self.status in ["info_status"]: return 'info' raise Exception(f"{self.status} is not a valid status for an Evaluation")