Esempio n. 1
0
def quiz_map_edit(quiz_id):
    current_app.logger.debug("quiz_edit. quiz_id - " + str(quiz_id))

    quizes = Quiz.get_quizes_by_user_id(current_user.id)

    for q in quizes:
        q.quiz_results = QuizResult.get_quiz_results_only_by_quiz_id(q.qid)

    quiz = Quiz.get_quiz_by_id(quiz_id)

    quiz_results = QuizResult.get_quiz_results_only_by_quiz_id(quiz_id)

    def serialize_for_left_menu(q):
        return {
            "quiz_results": [qr.serialize_for_statistics for qr in q.quiz_results],
            "quiz": q.serialize_for_result
        }

    jsdata = {
              "quiz_results": [i.serialize_for_statistics for i in quiz_results],
              "quizes": [serialize_for_left_menu(q) for q in quizes]
              }

    if quiz:
        if current_user.id == quiz.user_id:
            return render_template("quiz_map_edit.html", quiz=quiz, quizes=quizes, \
                                   active_page='quiz_edit', jsdata=jsdata, showTour=(not current_user.isTrained()))
        else:
            return render_template("auth_failure.html")
    else:
        current_app.logger.warning("No quiz found")        
        return render_template("404.html")
Esempio n. 2
0
def quiz(quiz_id):
    current_app.logger.debug("quiz. quiz_id - " + str(quiz_id))
    
    quiz = Quiz.get_quiz_by_id(quiz_id)
    if quiz:            
        if current_user.id == quiz.user_id:
            jsdata = {
                      "questions": [i.serialize for i in quiz.questions],
                      "show_private_page": True
                      }
            if (len(quiz.questions) > 0):
                QuizResult.start_session(quiz_id, current_user.id)
                db.session.commit()
            return render_template('quiz.html', quiz=quiz, jsdata=jsdata)

        elif quiz.permission == 'public':
            jsdata = {
              "questions": [i.serialize_with_answers for i in quiz.questions],
              "show_private_page": False
            }
            return render_template('quiz_public.html', quiz=quiz, jsdata=jsdata)
        else:
            return render_template('auth_failure.html')            
    else:
        current_app.logger.warning("No quiz found")
        return render_template('404.html')
Esempio n. 3
0
def jupdate(quiz_id):
    current_app.logger.debug("jupdate. quiz_id - " + str(quiz_id))
    
    quiz = Quiz.get_quiz_by_id(quiz_id)
    
    if quiz:
        if current_user.id == quiz.user_id:
            schema = {
                "type": "object",
                "properties": {
                    "title": {"type": "string", "minLength": 4, "maxLength": 55, "optional": False},
                    "is_private": {"type": "string", "minLength": 1, "maxLength": 1, "optional": False},
                    }
                }

            v = Draft4Validator(schema)
            errors = sorted(v.iter_errors(request.json), key = lambda e: e.path)
    
            if len(errors) > 0:
                msg = u"Error : "
                if len(request.json['title']) < 4 or len(request.json['title']) > 55:
                    msg = u"Title length should be greater than 3 and less than 55 symbols"
                else:
                    for e in errors:
                        msg = msg + e.message.decode("UTF-8")
                    
                result = {"status": "ERROR", "message": msg}
                current_app.logger.warning(result)
                return jsonify(result)
            else:
                title = request.json['title']
                is_private = request.json['is_private']
                if is_private == 'T':
                    Quiz.update_quiz_by_id(quiz_id, title, None, 'private')
                else:
                    Quiz.update_quiz_by_id(quiz_id, title, None, 'public')
                db.session.commit()
                
                current_app.logger.debug('Quiz updated. quiz.id - ' + str(quiz_id) + ', title - ' + title)
                return jsonify({"status" : "OK", "quizid": quiz_id})
        else:
            msg = auth_failure_message + u"update this quiz(id = " + str(quiz_id).decode("UTF-8")+")"
            current_app.logger.warning(msg)
            return jsonify({"status" : "ERROR", "message": msg})
    else:
        msg = u"No quiz found with such quiz_id" + str(quiz_id).decode("UTF-8")
        current_app.logger.warning(msg)
        return jsonify({"status": "ERROR", "message": msg})
Esempio n. 4
0
def jget(quiz_id):
    current_app.logger.debug("jget. quiz_id - " + str(quiz_id))
    
    quiz = Quiz.get_quiz_by_id(quiz_id)
    
    if quiz:
        if current_user.id == quiz.userid:
            result = {'status': 'OK'}
            result.update(quiz.serialize)
           
            return jsonify(result)
        else:
            msg = auth_failure_message + u"view this quiz(id = " + str(quiz_id).decode("UTF-8")+")"
            current_app.logger.warning(msg)
            return jsonify({"status": "ERROR", "message": msg})
    else:
        msg = u"No quiz found with such quiz_id" + str(quiz_id).decode("UTF-8")
        current_app.logger.warning(msg)
        return jsonify({"status" : "ERROR", "message": msg})