Initial commit: Flask quiz game 'Уроки французского'

This commit is contained in:
eka
2026-03-01 08:36:02 +05:00
commit 9a9c58afc0
9 changed files with 1769 additions and 0 deletions

73
app.py Normal file
View File

@@ -0,0 +1,73 @@
import json
from flask import Flask, render_template, request, redirect, url_for, make_response
app = Flask(__name__)
app.secret_key = 'your_secret_key_here'
ADMIN_PASSWORD = 'RaMaZaNoV2013'
def load_questions():
with open('data/questions.json', 'r', encoding='utf-8') as f:
return json.load(f)
def save_questions(data):
with open('data/questions.json', 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=4)
@app.context_processor
def inject_enumerate():
return dict(enumerate=enumerate)
@app.route('/')
def index():
questions = load_questions()
return render_template('index.html', questions=questions)
def check_auth():
password = request.cookies.get('admin_password')
return password == ADMIN_PASSWORD
@app.route('/admin')
def admin():
if not check_auth():
return render_template('login.html')
questions = load_questions()
return render_template('admin.html', questions=questions)
@app.route('/admin/login', methods=['POST'])
def login():
password = request.form.get('password')
if password == ADMIN_PASSWORD:
resp = make_response(redirect(url_for('admin')))
resp.set_cookie('admin_password', password)
return resp
return render_template('login.html', error='Неверный пароль')
@app.route('/admin/logout')
def logout():
resp = make_response(redirect(url_for('admin')))
resp.set_cookie('admin_password', '', expires=0)
return resp
@app.route('/admin/edit/<int:cat>/<int:q>', methods=['GET', 'POST'])
def edit_question(cat, q):
if not check_auth():
return redirect(url_for('admin'))
questions = load_questions()
if request.method == 'POST':
questions['categories'][cat]['questions'][q]['question'] = request.form['question']
questions['categories'][cat]['questions'][q]['options'] = [
request.form['option1'],
request.form['option2'],
request.form['option3'],
request.form['option4']
]
questions['categories'][cat]['questions'][q]['answer'] = int(request.form['answer'])
questions['categories'][cat]['questions'][q]['cost'] = int(request.form['cost'])
save_questions(questions)
return redirect(url_for('admin'))
question = questions['categories'][cat]['questions'][q]
return render_template('edit.html', question=question, cat=cat, q=q)
if __name__ == '__main__':
app.run(debug=True, port=5002)