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