Uni quezes and about page almost finished
This commit is contained in:
@ -0,0 +1,109 @@
|
||||
from flask import Flask, render_template, request, redirect, url_for, session, Blueprint
|
||||
import os
|
||||
import random
|
||||
|
||||
# Define the Blueprint for the halozatok quiz
|
||||
vallalati_informacios_rendszerek = Blueprint(
|
||||
'vallalati_informacios_rendszerek', # Blueprint name
|
||||
__name__,
|
||||
template_folder='./templates' # Path to templates
|
||||
)
|
||||
|
||||
preguntas = ['templates/uni/subjects/vallalati_informacios_rendszerek/vir_kerdessor.txt']
|
||||
|
||||
def parse_questions():
|
||||
questions = []
|
||||
lines = []
|
||||
for pregunta in preguntas:
|
||||
with open(pregunta, 'r', encoding='utf-8') as f:
|
||||
lines.extend(f.readlines())
|
||||
|
||||
for line in range(0, len(lines)-1, 2):
|
||||
questions.append({
|
||||
'question': lines[line].strip(),
|
||||
'answer': lines[line + 1].strip()
|
||||
})
|
||||
|
||||
print(questions[1])
|
||||
print(questions[2])
|
||||
print(questions[3])
|
||||
|
||||
return questions
|
||||
|
||||
# Quiz Route
|
||||
@vallalati_informacios_rendszerek.route('/')
|
||||
@vallalati_informacios_rendszerek.route('/quiz', methods=['GET', 'POST'])
|
||||
def quiz():
|
||||
if 'quiz_questions' not in session:
|
||||
questions = parse_questions()
|
||||
vir_questions = random.sample(questions, 20)
|
||||
session['quiz_questions'] = vir_questions
|
||||
session['question_index'] = 0
|
||||
session['answers'] = []
|
||||
else:
|
||||
vir_questions = session['quiz_questions']
|
||||
|
||||
question_index = session.get('question_index', 0)
|
||||
|
||||
if question_index >= len(vir_questions):
|
||||
return redirect(url_for('vallalati_informacios_rendszerek.result'))
|
||||
|
||||
current_question = vir_questions[question_index]
|
||||
|
||||
return render_template('vir_quiz.html', question=current_question, question_index=question_index)
|
||||
|
||||
# Submit Answer Route
|
||||
@vallalati_informacios_rendszerek.route('/submit_answer', methods=['POST'])
|
||||
def submit_answer():
|
||||
user_answers = request.form.get('answer')
|
||||
question_index = int(request.form.get('question_index'))
|
||||
|
||||
if 'answers' not in session:
|
||||
session['answers'] = []
|
||||
|
||||
answers = session.get('answers')
|
||||
answers.append(user_answers)
|
||||
session['answers'] = answers
|
||||
|
||||
question_index += 1
|
||||
session['question_index'] = question_index
|
||||
|
||||
return redirect(url_for('vallalati_informacios_rendszerek.quiz'))
|
||||
|
||||
# Result Route
|
||||
@vallalati_informacios_rendszerek.route('/result')
|
||||
def result():
|
||||
vir_questions = session['quiz_questions']
|
||||
answers = session['answers']
|
||||
score = 0
|
||||
mistakes = []
|
||||
|
||||
for i in range(len(answers)):
|
||||
if vir_questions[i]['answer'] == answers[i]:
|
||||
score += 1
|
||||
else:
|
||||
mistakes.append({
|
||||
'question': vir_questions[i]['question'],
|
||||
'answer': 'True' if answers[i] == 'I' else 'False',
|
||||
'correct': 'True' if vir_questions[i]['answer'] == 'I' else 'False'
|
||||
})
|
||||
vir_questions[i]['answer'] = 'True' if vir_questions[i]['answer'] == 'I' else 'False'
|
||||
|
||||
return render_template('vir_result.html', score=score, total=len(vir_questions), mistakes=mistakes, vir_questions=vir_questions)
|
||||
|
||||
# Restart Route
|
||||
@vallalati_informacios_rendszerek.route('/restart')
|
||||
def restart():
|
||||
session.pop('question_index', None)
|
||||
session.pop('answers', None)
|
||||
session.pop('quiz_questions', None)
|
||||
|
||||
return redirect(url_for('vallalati_informacios_rendszerek.quiz'))
|
||||
|
||||
# All Questions Route
|
||||
@vallalati_informacios_rendszerek.route('/allquestions')
|
||||
def allquestions():
|
||||
questions = parse_questions()
|
||||
for i in questions:
|
||||
i['answer'] = 'True' if i['answer'] == 'I' else 'False'
|
||||
return render_template('vir_allquestions.html', questions=questions)
|
Reference in New Issue
Block a user