This commit is contained in:
54
app.py
Normal file
54
app.py
Normal file
@@ -0,0 +1,54 @@
|
||||
from flask_bootstrap import Bootstrap5
|
||||
from flask import Flask, render_template, request
|
||||
import utils
|
||||
import random
|
||||
|
||||
app = Flask(__name__)
|
||||
bootstrap = Bootstrap5(app)
|
||||
|
||||
def get_questions(categories, num):
|
||||
question_pool = []
|
||||
weights = []
|
||||
for c in categories:
|
||||
for q in utils.get_questions_by_category(c):
|
||||
weight = utils.get_question_weights(c, q)
|
||||
question_pool.append((c, q))
|
||||
weights.append(weight)
|
||||
|
||||
|
||||
if num > len(question_pool):
|
||||
num = len(question_pool)
|
||||
if num == 0:
|
||||
return {}
|
||||
selected_question_tuples = []
|
||||
while len(selected_question_tuples) < num:
|
||||
selected = random.choices(question_pool, weights)[0]
|
||||
if selected not in selected_question_tuples:
|
||||
selected_question_tuples.append(selected)
|
||||
|
||||
questions = {}
|
||||
for category, question in selected_question_tuples:
|
||||
utils.set_question_selected(category, question)
|
||||
if category not in questions:
|
||||
questions[category] = []
|
||||
questions[category].append(question)
|
||||
utils.save_weights()
|
||||
return questions
|
||||
|
||||
|
||||
@app.route("/", methods=["POST", "GET"])
|
||||
def index():
|
||||
categories = utils.get_categories()
|
||||
selected = categories
|
||||
n = 2
|
||||
questions = {}
|
||||
if request.method == "POST":
|
||||
selected = request.form.getlist("categories[]")
|
||||
n = int(request.form.get("num"))
|
||||
questions = get_questions(selected, n)
|
||||
print(selected, n)
|
||||
return render_template("index.html", categories=categories, selected=selected, n=n, questions=questions)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run()
|
||||
Reference in New Issue
Block a user