Uni quezes and about page almost finished
This commit is contained in:
105
templates/uni/subjects/szamitogepek_mukodese/szgm_app.py
Normal file
105
templates/uni/subjects/szamitogepek_mukodese/szgm_app.py
Normal file
@ -0,0 +1,105 @@
|
||||
from flask import Flask, render_template, request, redirect, url_for, session, Blueprint
|
||||
import os
|
||||
import random
|
||||
|
||||
# Define the Blueprint for the halozatok quiz
|
||||
szamitogepek_mukodese = Blueprint(
|
||||
'szamitogepek_mukodese', # Blueprint name
|
||||
__name__,
|
||||
template_folder='./templates' # Path to templates
|
||||
)
|
||||
|
||||
preguntas = ['templates/uni/subjects/szamitogepek_mukodese/szgm_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()
|
||||
})
|
||||
|
||||
return questions
|
||||
|
||||
# Quiz Route
|
||||
@szamitogepek_mukodese.route('/')
|
||||
@szamitogepek_mukodese.route('/quiz', methods=['GET', 'POST'])
|
||||
def quiz():
|
||||
if 'quiz_questions' not in session:
|
||||
questions = parse_questions()
|
||||
halozatok_questions = random.sample(questions, 20)
|
||||
session['quiz_questions'] = halozatok_questions
|
||||
session['question_index'] = 0
|
||||
session['answers'] = []
|
||||
else:
|
||||
halozatok_questions = session['quiz_questions']
|
||||
|
||||
question_index = session.get('question_index', 0)
|
||||
|
||||
if question_index >= len(halozatok_questions):
|
||||
return redirect(url_for('szamitogepek_mukodese.result'))
|
||||
|
||||
current_question = halozatok_questions[question_index]
|
||||
|
||||
return render_template('szgm_quiz.html', question=current_question, question_index=question_index)
|
||||
|
||||
# Submit Answer Route
|
||||
@szamitogepek_mukodese.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('szamitogepek_mukodese.quiz'))
|
||||
|
||||
# Result Route
|
||||
@szamitogepek_mukodese.route('/result')
|
||||
def result():
|
||||
halozatok_questions = session['quiz_questions']
|
||||
answers = session['answers']
|
||||
score = 0
|
||||
mistakes = []
|
||||
|
||||
for i in range(len(answers)):
|
||||
if halozatok_questions[i]['answer'] == answers[i]:
|
||||
score += 1
|
||||
else:
|
||||
mistakes.append({
|
||||
'question': halozatok_questions[i]['question'],
|
||||
'answer': 'True' if answers[i] == 'I' else 'False',
|
||||
'correct': 'True' if halozatok_questions[i]['answer'] == 'I' else 'False'
|
||||
})
|
||||
halozatok_questions[i]['answer'] = 'True' if halozatok_questions[i]['answer'] == 'I' else 'False'
|
||||
|
||||
return render_template('szgm_result.html', score=score, total=len(halozatok_questions), mistakes=mistakes, halozatok_questions=halozatok_questions)
|
||||
|
||||
# Restart Route
|
||||
@szamitogepek_mukodese.route('/restart')
|
||||
def restart():
|
||||
session.pop('question_index', None)
|
||||
session.pop('answers', None)
|
||||
session.pop('quiz_questions', None)
|
||||
|
||||
return redirect(url_for('szamitogepek_mukodese.quiz'))
|
||||
|
||||
# All Questions Route
|
||||
@szamitogepek_mukodese.route('/allquestions')
|
||||
def allquestions():
|
||||
questions = parse_questions()
|
||||
for i in questions:
|
||||
i['answer'] = 'True' if i['answer'] == 'I' else 'False'
|
||||
return render_template('szgm_allquestions.html', questions=questions)
|
Reference in New Issue
Block a user