def submit_job(env, kind=None, **kwargs): """Submits the job to Zeus for given ``kind``. Used ``environ`` keys: * ``contest_id`` * ``submission_id`` * ``language`` * ``zeus_id`` * ``zeus_problem_id`` Altered ``environ`` keys: * ``zeus_check_uids`` - dictionary mapping grading kind to Zeus's ``check_uid`` """ zeus = get_zeus_server(env['zeus_id']) ps = ProgramSubmission.objects.get(id=env['submission_id']) check_uid = get_random_string(length=16) return_url = settings.ZEUS_PUSH_GRADE_CALLBACK_URL + reverse( 'zeus_push_grade_callback', kwargs={ 'check_uid': check_uid, 'signature': zeus_url_signature(check_uid) }) zeus_submission_id = zeus.send_regular( kind=kind, source_file=ps.source_file, zeus_problem_id=env['zeus_problem_id'], language=env['language'], submission_id=env['submission_id'], return_url=return_url) env.setdefault('zeus_submission_ids', {})[kind] = zeus_submission_id env.setdefault('zeus_check_uids', {})[kind] = check_uid return env
def transfer_job(env, kind, source_code): """"Sends the job to Zeus for given ``kind``. Used ``env`` keys: * ``submission_id`` * ``language`` * ``saved_environ_id`` * ``zeus_problem_id`` * ``zeus_id`` """ # Env is already saved in evalmgr, use saved_environ_id to # identify results. zeus = get_zeus_server(env['zeus_id']) saved_environ_id = env['saved_environ_id'] return_url = settings.ZEUS_PUSH_GRADE_CALLBACK_URL + reverse( 'zeus_push_grade_callback', kwargs={ 'saved_environ_id': saved_environ_id, 'signature': zeus_url_signature(saved_environ_id) }) zeus.send_regular(kind=kind, return_url=return_url, source_code=source_code, zeus_problem_id=env['zeus_problem_id'], language=env['language'], submission_id=['submission_id'])
def transfer_job(env, kind, source_code): """"Sends the job to Zeus for given ``kind``. Used ``env`` keys: * ``submission_id`` * ``language`` * ``saved_environ_id`` * ``zeus_problem_id`` * ``zeus_id`` """ # Env is already saved in evalmgr, use saved_environ_id to # identify results. zeus = get_zeus_server(env['zeus_id']) saved_environ_id = env['saved_environ_id'] return_url = settings.ZEUS_PUSH_GRADE_CALLBACK_URL + reverse( 'zeus_push_grade_callback', kwargs={ 'saved_environ_id': saved_environ_id, 'signature': zeus_url_signature(saved_environ_id) } ) zeus.send_regular(kind=kind, return_url=return_url, source_code=source_code, zeus_problem_id=env['zeus_problem_id'], language=env['language'], submission_id=['submission_id'])
def download_output_file_view(request, submission_id, testrun_report_id=None): submission = get_submission_or_error(request, submission_id, ZeusTestRunProgramSubmission) result = get_testrun_report_or_404(request, submission, testrun_report_id, ZeusTestRunReport) if result.output_file.size != result.full_out_size: zeus_server = get_zeus_server( submission.problem_instance.problem.zeusproblemdata.zeus_id) file = zeus_server.download_output(int(result.full_out_handle)) result.output_file.save('full_out', ContentFile(file)) return stream_file(result.output_file, name='output.out')
def download_output_file_view(request, contest_id, submission_id, testrun_report_id=None): submission = get_submission_or_error(request, contest_id, submission_id, ZeusTestRunProgramSubmission) result = get_testrun_report_or_404(request, submission, testrun_report_id, ZeusTestRunReport) if result.output_file.size != result.full_out_size: zeus_server = get_zeus_server( submission.problem_instance.problem.zeusproblemdata.zeus_id) file = zeus_server.download_output(int(result.full_out_handle)) result.output_file.save('full_out', ContentFile(file)) return stream_file(result.output_file, name='output.out')
def submit_testrun_job(env, **kwargs): """Submits the testrun job to Zeus. Used ``environ`` keys: * ``submission_id`` * ``language`` * ``zeus_id`` * ``zeus_problem_id`` Altered ``environ`` keys: * ``zeus_check_uids`` - dictionary mapping grading kind to Zeus's ``check_uid`` """ zeus = get_zeus_server(env['zeus_id']) ps = ZeusTestRunProgramSubmission.objects.get(id=env['submission_id']) check_uid = zeus.send_testrun(source_file=ps.source_file, zeus_problem_id=env['zeus_problem_id'], language=env['language'], input_file=ps.input_file, library_file=ps.library_file) env.setdefault('zeus_check_uids', {})['TESTRUN'] = check_uid return env
def submit_job(env, kind=None, **kwargs): """Submits the job to Zeus for given ``kind``. Used ``environ`` keys: * ``submission_id`` * ``language`` * ``zeus_id`` * ``zeus_problem_id`` Altered ``environ`` keys: * ``zeus_check_uids`` - dictionary mapping grading kind to Zeus's ``check_uid`` """ assert kind is not None zeus = get_zeus_server(env['zeus_id']) ps = ProgramSubmission.objects.get(id=env['submission_id']) check_uid = zeus.send_regular(kind=kind, source_file=ps.source_file, zeus_problem_id=env['zeus_problem_id'], language=env['language']) env.setdefault('zeus_check_uids', {})[kind] = check_uid return env
def __init__(self, *args, **kwargs): super(Command, self).__init__(*args, **kwargs) zeus_server_ids = settings.ZEUS_INSTANCES.iterkeys() self.zeus_servers = {i: get_zeus_server(i) for i in zeus_server_ids}