コード例 #1
0
def getter(question_number, test_number, test_set, code):
    if question_number not in test_set:
        raise Container(
            error(f"Question {question_number} not found in homework", code))
    if test_number not in test_set[question_number]:
        raise Container(
            error(
                f"Test {test_number} not found in Question {question_number}",
                code))
    return test_set[question_number][test_number]
コード例 #2
0
ファイル: app.py プロジェクト: LukasGL/CC6204
def process(homework_number, question_number):
    data = request.args
    if "token" not in data:
        return error("The token is not included", "token_missing")
    if data["token"] != app.config["TOKEN"]:
        return error("The token is not correct/is invalid", "token_wrong")
    if homework_number not in available_homeworks:
        return error(f"There is no homework {homework_number}", "no_homework")
    if "test" not in data:
        return error("The test parameter is not included", "no_test")
    return available_homeworks[homework_number].get_test(
        question_number, str(data["test"]))
コード例 #3
0
ファイル: app.py プロジェクト: LukasGL/CC6204
def reload_tests(homework_number):
    if not request.is_json:
        return error("Sent format is not a json", "json")
    data = request.get_json()
    if "token" not in data:
        return error("The token is not included", "token_missing")
    if data["token"] != app.config["ADMIN_TOKEN"]:
        return error("The token is not correct/is invalid", "token_wrong")
    if homework_number not in available_homeworks:
        return error(f"There is no homework {homework_number}", "no_homework")

    available_homeworks[homework_number].reload_tests()

    return "OK"
コード例 #4
0
def autocheck(homework_number, question_number):
    if not request.is_json:
        return error("Sent format is not a json", "json")
    data = request.get_json()
    if "token" not in data:
        return error("The token is not included", "token_missing")
    if data["token"] != app.config["TOKEN"]:
        return error("The token is not correct/is invalid", "token_wrong")
    if homework_number not in available_homeworks:
        return error(f"There is no homework {homework_number}", "no_homework")

    return available_homeworks[homework_number].check(
        question_number=question_number,
        data=data)
コード例 #5
0
def check(question_number, test_number, student_answer):
    try:
        value = getter(question_number, test_number, __tests_expected,
                       "test_output")
    except Container as e:
        return e.data

    try:
        status, result, comments = numpy_isclose(value, student_answer)
    except InvalidInput as e:
        return error(message=e.msg, code="invalid_input")
    else:
        return send_results(status=status, mask=result, comments=comments)
コード例 #6
0
def check(question_number, data):
    if not __tests_expected:
        load_tests()

    try:
        test = extract_argument(data, "test")
        student_answer = extract_argument(data, "student_answer")

        value = test_getter(question_number, test, __tests_expected,
                            "test_output")

        try:
            status, result, comments = numpy_isclose(value,
                                                     student_answer,
                                                     msg="value")
        except InvalidInput as e:
            return error(message=e.msg, code="invalid_input")
        else:
            return send_results(status=status, mask=result, comments=comments)

    except Container as e:
        return e.data
コード例 #7
0
def autocheck(homework_number, question_number):
    if not request.is_json:
        return error("Sent format is not a json", "json")
    data = request.get_json()
    if "token" not in data:
        return error("The token is not included", "token_missing")
    if data["token"] != "mytoken":
        return error("The token is not correct/is invalid", "token_wrong")
    if homework_number not in available_homeworks:
        return error(f"There is no homework {homework_number}", "no_homework")
    if "answer" not in data:
        return error("The answer parameter is not included", "no_answer")
    if "test" not in data:
        return error("The test parameter is not included", "no_test")
    return available_homeworks[homework_number].check(question_number,
                                                      str(data["test"]),
                                                      data["answer"])
コード例 #8
0
ファイル: homework2.py プロジェクト: matiasvergaras/CC6204
def check(question_number, data):
    if not __tests_expected:
        load_tests()

    try:
        test = extract_argument(data, "test")
        student_answer = extract_argument(data, "student_answer")
        student_time = extract_argument(data, "time")

        expected = test_getter(question_number, test, __tests_expected,
                               "test_output")

        expected_value = expected["value"]
        expected_time = expected["time"]

        try:
            value_status, value_result, value_comments = numpy_isclose(
                expected_value, student_answer, msg="value", equal_nan=True)
            time_status, time_result, time_comments = simple_max_value(
                expected_time, student_time, msg="time")
        except InvalidInput as e:
            return error(message=e.msg, code="invalid_input")
        else:
            if value_status == 0:
                return send_results(status=value_status,
                                    mask=value_result,
                                    comments=value_comments)
            elif time_status == 0:
                return send_results(status=time_status,
                                    mask=time_result,
                                    comments=time_comments)
            else:
                return send_results(status=1,
                                    mask=[],
                                    comments="Correct Test.")

    except Container as e:
        return e.data
コード例 #9
0
def extract_argument(data, arg_name):
    try:
        return data[arg_name]
    except KeyError:
        raise Container(error(f"Missing argument `{arg_name}`", "missing_arg"))