Restructure project for Docker: move app to src/, add Helm chart and Fleet config
This commit is contained in:
76
src/app.py
Normal file
76
src/app.py
Normal file
@@ -0,0 +1,76 @@
|
||||
import json
|
||||
import os
|
||||
from flask import Flask, render_template, request, redirect, url_for, make_response
|
||||
|
||||
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
app = Flask(__name__)
|
||||
app.secret_key = 'your_secret_key_here'
|
||||
|
||||
ADMIN_PASSWORD = 'RaMaZaNoV2013'
|
||||
|
||||
def load_questions():
|
||||
with open(os.path.join(BASE_DIR, 'data', 'questions.json'), 'r', encoding='utf-8') as f:
|
||||
return json.load(f)
|
||||
|
||||
def save_questions(data):
|
||||
with open(os.path.join(BASE_DIR, '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)
|
||||
Reference in New Issue
Block a user