from flask import Flask, render_template, request, redirect, url_for, session, Blueprint import os import random TEXTFILES = ["./portalfejlesztes_net_ben/kerdessor1_manual.txt", "./portalfejlesztes_net_ben/kerdessor2_manual.txt", "./portalfejlesztes_net_ben/kerdessor3.txt"] portalfejlesztes_net_ben = Blueprint( 'portalfejlesztes_net_ben', __name__, template_folder='templates' # Ensure this matches the folder location ) def parse_questions(): content = [] for file_path in TEXTFILES: with open(file_path, 'r', encoding='utf-8') as file: content.extend(file.read().split("\n\n")) questions = [] for block in content: lines = block.strip().split("\n") question = lines[0].replace("Kérdés: ", "").strip() answers = [] correct_answers = [] for line in lines[1:]: answer = line.strip() if answer.startswith('!'): correct_answers.append(answer[1:].strip()) else: answers.append(answer) if correct_answers: questions.append({ 'question': question, 'answers': answers + correct_answers, 'correct_answers': correct_answers }) return questions @portalfejlesztes_net_ben.route('/') @portalfejlesztes_net_ben.route('/quiz', methods=['GET', 'POST']) def quiz(): if 'selected_questions' not in session: questions = parse_questions() selected_questions = random.sample(questions, 20) session['selected_questions'] = selected_questions session['question_index'] = 0 session['answers'] = [] else: selected_questions = session['selected_questions'] question_index = session.get('question_index', 0) if question_index >= len(selected_questions): return redirect(url_for('portalfejlesztes_net_ben.result')) current_question = selected_questions[question_index] random.shuffle(current_question['answers']) return render_template('quiz.html', question=current_question, question_index=question_index) @portalfejlesztes_net_ben.route('/submit_answer', methods=['POST']) def submit_answer(): user_answers = request.form.getlist('answer') question_index = int(request.form.get('question_index')) answers = session.get('answers', []) answers.append(user_answers) session['answers'] = answers question_index += 1 session['question_index'] = question_index return redirect(url_for('portalfejlesztes_net_ben.quiz')) @portalfejlesztes_net_ben.route('/result') def result(): selected_questions = session.get('selected_questions', None) answers = session.get('answers', None) score = 0 mistakes = [] for i, user_answer in enumerate(answers): correct_answers = selected_questions[i]['correct_answers'] if set(user_answer) == set(correct_answers): score += 1 else: mistakes.append({ 'question': selected_questions[i]['question'], 'correct_answer': correct_answers, 'user_answer': user_answer }) questions_with_answers = zip(selected_questions, answers) session.pop('question_index', None) session.pop('answers', None) session.pop('selected_questions', None) return render_template('result.html', score=score, total=len(selected_questions), mistakes=mistakes, questions_with_answers=questions_with_answers) @portalfejlesztes_net_ben.route('/restart') def restart(): session.pop('question_index', None) session.pop('answers', None) session.pop('selected_questions', None) return redirect(url_for('portalfejlesztes_net_ben.quiz')) @portalfejlesztes_net_ben.route('/allquestions') def allquestions(): questions = parse_questions() return render_template('allquestions.html', questions=questions)