Ejemplo n.º 1
0
def edit_question(question_id):
    question = Questions.query.get(question_id)
    answers = Answers.query.filter_by(question_id = question.id)
    wrong_answers = answers.filter_by(correct = 0).all()
    correct_answer = answers.filter_by(correct = 1).first()

    values = {
        'question': question.question_text,
        'wrong_answers': [a.answer_text for a in wrong_answers],
        'correct_answer': correct_answer.answer_text
    }

    form = QuestionForm(content = question.content_id)
    form.content.choices = [(r.id, r.title) for r in Content.query.all()]
    form.new_question = False

    if form.validate_on_submit():
        question.question_text = form.question.data
        question.content = Content.query.filter_by(id = form.content.data).first()
        wrong_answers[0].answer_text = form.first_answer.data
        wrong_answers[1].answer_text = form.second_answer.data
        wrong_answers[2].answer_text = form.third_answer.data
        correct_answer.answer_text = form.correct_answer.data
        db.session.commit()

        return redirect(url_for('quiz.questions'))

    return render_template('questions/edit.html', values=values, form=form)
Ejemplo n.º 2
0
def quiz():
    if current_user.is_authenticated:
        global limit, count

        form = QuestionForm()

        id = Questions.query.order_by(func.random()).first().id
        question = Questions.query.filter_by(id=id).first().question
        answer = Questions.query.filter_by(id=id).first().answer
        option1 = Questions.query.filter_by(id=id).first().option1
        option2 = Questions.query.filter_by(id=id).first().option2
        option3 = Questions.query.filter_by(id=id).first().option3

        choice = [('answer', answer), ('option1', option1),
                  ('option2', option2), ('option3', option3)]
        random.shuffle(choice)
        form.options.choices = choice

        if form.validate_on_submit():

            dat = form.options.data
            if dat == 'answer':
                flash(f'Correct!', 'success')
                count = count + 1
            else:
                flash(f'Incorrect!', 'danger')

            if limit >= 10:
                limit = 0

                score_user = current_user.username
                user = User.query.filter_by(username=score_user).first()
                user.score = count
                db.session.commit()
                return redirect(url_for('result'))

            return redirect(url_for('quiz'))
        limit = limit + 1

        return render_template('questions.html',
                               title='Quiz',
                               form=form,
                               question=question,
                               limit=str(limit))
    else:
        return redirect(url_for('login'))
Ejemplo n.º 3
0
def add_question():
    form = QuestionForm()
    form.content.choices = [(r.id, r.title) for r in Content.query.all()]

    if form.validate_on_submit():
        question = Questions(question_text = form.question.data, content = Content.query.filter_by(id = form.content.data).first())
        answers = [
            Answers(answer_text = form.first_answer.data, correct = 0, question = question),
            Answers(answer_text = form.second_answer.data, correct = 0, question = question),
            Answers(answer_text = form.third_answer.data, correct = 0, question = question),
            Answers(answer_text = form.correct_answer.data, correct = 1, question = question)
        ]

        db.session.add(question)
        for answer in answers:
            db.session.add(answer)

        db.session.commit()
        return redirect(url_for('quiz.questions'))

    return render_template('questions/add.html', form=form)