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)
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'))
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)