Ejemplo n.º 1
0
def submit_quiz():
    if request.get_json() is None:
        return jsonify({
            "result": "error",
            "field": "",
            "message": "Not valid model!"
        }), 200
    quiz = Quiz.factory_form_json(request.get_json())
    if quiz.get_points() is "":
        return jsonify({
            "result": "error",
            "field": "points",
            "message": "Points cannot be empty"
        }), 200
    if not quiz.is_valid_model():
        return jsonify({
            "result": "error",
            "field": "",
            "message": "Not valid model!"
        }), 200
    if len(quiz.get_title()) == 0:
        return jsonify({
            "result": "error",
            "field": "title",
            "message": "Title cannot be empty!"
        }), 200
    if quiz.get_points() < 0:
        return jsonify({
            "result": "error",
            "field": "points",
            "message": "Points cannot be less then 0!"
        }), 200
    quiz_real = Quiz.get_by_id(uuid.UUID(quiz._id))

    passed = False
    if quiz_real.mark_subbmitted_quiz(quiz):
        passed = True
    try:
        QuizProfile.get_by_composite_id(uuid.UUID(quiz._id), session['email'])
        return jsonify({
            "result": "ok",
            "field": "title",
            "message": "",
            "relocateTo": "/quiz_profile/" + str(quiz_real.get_id())
        }), 200
    except NoSuchQuizProfileExistException as e:
        new_quiz_profile = QuizProfile(uuid.UUID(quiz._id), session['email'],
                                       datetime.now(), 0, passed)
        new_quiz_profile.save_to_db()
        User.update_user_points(session['email'], "virtual",
                                quiz_real.get_points())
        return jsonify({
            "result": "ok",
            "field": "title",
            "message": "",
            "relocateTo": "/quiz_profile/" + str(quiz_real.get_id())
        }), 200