示例#1
0
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
示例#2
0
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'])
示例#3
0
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'])
示例#4
0
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')
示例#5
0
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')
示例#6
0
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
示例#7
0
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 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
示例#10
0
 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}
 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}