def _prepare(self): """Select a random solution and prepare it for submission. If task/ is the task directory, it might contain files (only if the submission format is with a single file) and directory. If it contains a file, it is assumed that it is the only element in the submission format, and is the basename without extension of the file. If it is a directory, all files inside are assumed to be part of the submission format with their basenames without extension. """ GenericRequest._prepare(self) # Select a random directory or file inside the task directory. task_path = os.path.join(self.submissions_path, self.task[1]) sources = os.listdir(task_path) source = random.choice(sources) lang = filename_to_language(source) if lang is not None: self.data["language"] = lang.name self.source_path = os.path.join(task_path, source) # Compose the submission format self.files = [] if os.path.isdir(self.source_path): submission_formats = os.listdir(self.source_path) self.files = [('%s.%%l' % (os.path.splitext(sf)[0]), os.path.join(self.source_path, sf)) for sf in submission_formats] else: submission_format = os.path.splitext(source)[0] self.files = [('%s.%%l' % (submission_format), self.source_path)]
def __init__(self, browser, task, filename, base_url=None): GenericRequest.__init__(self, browser, base_url) self.url = "%ssubmit/%s" % (self.base_url, encrypt_number(task[0])) self.task = task self.filename = filename self.data = {}
def __init__(self, browser, task, base_url=None, submissions_path=None): GenericRequest.__init__(self, browser, base_url) self.url = "%stasks/%s/submit" % (self.base_url, task[1]) self.task = task self.submissions_path = submissions_path self.data = {}
def _prepare(self): GenericRequest._prepare(self) # Let's generate an arbitrary input file. temp_file, temp_filename = tempfile.mkstemp() self.files = \ list(zip(self.submission_format, self.filenames)) + \ [("input", temp_filename)]
def prepare(self): GenericRequest.prepare(self) task_path = os.path.join(self.submissions_path, self.task[1]) sources = os.listdir(task_path) source = random.choice(sources) self.source_path = os.path.join(task_path, source) self.files = [('%s.%%l' % (self.task[1]), self.source_path)]
def __init__(self, browser, task, base_url=None, submissions_path=None): GenericRequest.__init__(self, browser, base_url) self.url = "%ssubmit/%s" % (self.base_url, encrypt_number(task[0])) self.task = task self.submissions_path = submissions_path self.data = {}
def __init__(self, browser, task, submission_num, base_url=None): GenericRequest.__init__(self, browser, base_url) self.url = "%stasks/%s/submissions/%s/token" % (self.base_url, task[1], submission_num) self.task = task self.submission_num = submission_num self.data = {}
def __init__(self, browser, task, submission_format_element, filename, base_url=None): GenericRequest.__init__(self, browser, base_url) self.url = "%stasks/%s/submit" % (self.base_url, task[1]) self.task = task self.submission_format_element = submission_format_element self.filename = filename self.data = {}
def _prepare(self): GenericRequest._prepare(self) # Let's generate an arbitrary input file. # TODO: delete this file once we're done with it. _, temp_filename = tempfile.mkstemp() self.files = \ list(zip(self.submission_format, self.filenames)) + \ [("input", temp_filename)]
def __init__(self, browser, username, password, base_url=None): GenericRequest.__init__(self, browser, base_url) self.username = username self.password = password self.url = '%slogin' % self.base_url self.data = {'username': self.username, 'password': self.password, 'next': '/'}
def test_success(self): if not GenericRequest.test_success(self): return False try: self.get_submission_info() return True except: return False
def __init__(self, browser, task, submission_format, filenames, language=None, base_url=None): GenericRequest.__init__(self, browser, base_url) self.url = "%s/tasks/%s/test" % (self.base_url, task[1]) self.task = task self.submission_format = submission_format self.filenames = filenames self.data = {} # If not passed, try to recover the language from the filenames. if language is None: for filename in filenames: lang = filename_to_language(filename) if lang is not None: language = lang.name break # Only send the language in the request if not None. if language is not None: self.data = {"language": language}
def test_success(self): if not GenericRequest.test_success(self): return False fail_re = re.compile('Failed to log in.') if fail_re.search(self.res_data) is not None: return False username_re = re.compile(self.username) if username_re.search(self.res_data) is None: return False return True
def test_success(self): if not GenericRequest.test_success(self): return False username_re = re.compile(self.username) if self.loggedin: if username_re.search(self.res_data) is None: return False else: if username_re.search(self.res_data) is not None: return False return True
def test_success(self): if not GenericRequest.test_success(self): return False return True
def __init__(self, browser, submission_id, base_url=None): GenericRequest.__init__(self, browser, base_url) self.submission_id = submission_id self.url = "%ssubmission/%s" % (self.base_url, submission_id)
def __init__(self, browser, task_id, base_url=None): GenericRequest.__init__(self, browser, base_url) self.url = "%stasks/%s/description" % (self.base_url, task_id) self.task_id = task_id
def specific_info(self): return 'Task: %s (ID %d)\nFile: %s\n' % \ (self.task[1], self.task[0], self.source_path) + \ GenericRequest.specific_info(self)
def __init__(self, browser, task, filename, base_url=None): GenericRequest.__init__(self, browser, base_url) self.url = "%stasks/%s/submit" % (self.base_url, task[1]) self.task = task self.filename = filename self.data = {}
def __init__(self, session, task, base_url=None, submissions_path=None): GenericRequest.__init__(self, session, base_url) self.url = "%stasks/%s/submit" % (self.base_url, task[1]) self.task = task self.submissions_path = submissions_path self.data = {}
def _prepare(self): GenericRequest._prepare(self) self.files = list(zip(self.submission_format, self.filenames))
def __init__(self, browser, task_id, base_url=None): GenericRequest.__init__(self, browser, base_url) self.url = "%stasks/%s" % (self.base_url, encrypt_number(task_id)) self.task_id = task_id
def prepare(self): GenericRequest.prepare(self) self.files = [['%s.%%l' % self.task[1], self.filename]]
def _prepare(self): GenericRequest._prepare(self) self.files = [(self.submission_format_element, self.filename)]
def prepare(self): GenericRequest.prepare(self) self.files = [('%s.%%l' % (self.task[1]), self.filename)]
def __init__(self, browser, username, loggedin, base_url=None): GenericRequest.__init__(self, browser, base_url) self.url = self.base_url self.username = username self.loggedin = loggedin
def specific_info(self): return 'Task: %s (ID %d)\nFile: %s\n' % \ (self.task[1], self.task[0], self.filename) + \ GenericRequest.specific_info(self)
def test_success(self): if not GenericRequest.test_success(self): return False if self.redirected_to != './': return False return True
def test_success(self): if not GenericRequest.test_success(self): return False return self.get_submission_id() is not None
def specific_info(self): return 'Username: %s\nPassword: %s\n' % \ (self.username, self.password) + \ GenericRequest.specific_info(self)
def prepare(self): GenericRequest.prepare(self)
def __init__(self, browser, user_test_id, base_url=None): GenericRequest.__init__(self, browser, base_url) self.user_test_id = user_test_id self.url = "%suser_test/%s" % (self.base_url, user_test_id)
def specific_info(self): return 'Task: %s (ID %d)\nSubmission: %s\n' % \ (self.task[1], self.task[0], self.submission_num) + \ GenericRequest.specific_info(self)
def __init__(self, browser, task_id, language_code, base_url=None): GenericRequest.__init__(self, browser, base_url) self.url = "%stasks/%s/statements/%s" % (self.base_url, task_id, language_code) self.task_id = task_id