diff options
Diffstat (limited to 'routes')
-rw-r--r-- | routes/base.py | 78 | ||||
-rw-r--r-- | routes/get/quiz.py | 18 | ||||
-rw-r--r-- | routes/set/nick.py | 28 | ||||
-rw-r--r-- | routes/set/question.py | 40 | ||||
-rw-r--r-- | routes/set/quiz.py | 13 |
5 files changed, 177 insertions, 0 deletions
diff --git a/routes/base.py b/routes/base.py new file mode 100644 index 0000000..144eeef --- /dev/null +++ b/routes/base.py @@ -0,0 +1,78 @@ +from app import app +from flask import render_template,session +import db_actions as D + +def get_alert(): + if "alert" in session: + alert = session["alert"] + del session["alert"] + return f"{alert}" + return "" + +def get_nick(): + while "id" in session.keys(): + nick = D.user_get_nick(session["id"]) + if not nick: + del session['id'] + if "quiz_id" in session.keys(): + del session['quiz_id'] + break + return nick + return "(ei nimimerkkiä)" + +@app.route("/") +def index(): + return app.send_static_file("index.html") + +@app.route("/pages/info.html") +def info(): + return render_template("info.html", + alert=get_alert() + ) + +@app.route("/pages/create.html") +def create(): + if "id" not in session.keys(): + return "redirect = #nick" + if "quiz_id" not in session.keys(): + return "redirect = #quiz" + return render_template("create.html", + alert=get_alert(), + nick=get_nick() + ) + +@app.route("/pages/answer.html") +def answer(): + if "id" not in session.keys(): + return "redirect = #nick" + return render_template("answer.html", + alert=get_alert(), + nick=get_nick() + ) + +@app.route("/pages/analyse.html") +def analyse(): + if "id" not in session.keys(): + return "redirect = #nick" + return render_template("analyse.html", + alert=get_alert(), + nick=get_nick() + ) + +@app.route("/pages/moderate.html") +def moderate(): + return render_template("moderate.html", + alert=get_alert() + ) + +@app.route("/pages/nick.html") +def nick(): + return render_template("nick.html", alert=get_alert() ) + +@app.route("/pages/question.html") +def question(): + return render_template("question.html", alert=get_alert() ) + +@app.route("/pages/quiz.html") +def build(): + return render_template("quiz.html", alert=get_alert() ) diff --git a/routes/get/quiz.py b/routes/get/quiz.py new file mode 100644 index 0000000..69e2613 --- /dev/null +++ b/routes/get/quiz.py @@ -0,0 +1,18 @@ +from app import app +from flask import render_template, session, request, redirect, jsonify +import db_actions as D + + +@app.route("/get/quiz_creator",methods=["GET"]) +def get_questions_by_id(): + if "quiz_id" not in session.keys(): + return "KUOLETTAVA: Sessiota / kyselmä id:tä ei ole" + + results = D.get_questions(session['quiz_id']) + r={} + names=['i','q','n','p','a'] + for i in range(len(results)): + r[i]={} + for j in range(len(results[i])): + r[i][names[j]]=results[i][j] + return (jsonify(r)) diff --git a/routes/set/nick.py b/routes/set/nick.py new file mode 100644 index 0000000..67ddeea --- /dev/null +++ b/routes/set/nick.py @@ -0,0 +1,28 @@ +from app import app +from flask import render_template, session, request, redirect +import db_actions as D + + +@app.route("/set/nick",methods=["POST"]) +def new_nick(): + nick = request.form["nick"] + if "id" in session.keys(): + msg = "You already have a nick." + elif D.user_exists(nick): + msg = "Nick is already reserved." + elif msg := invalid_nick(nick): + pass + else: + session["id"] = D.user_new(nick) + return redirect("/") + session["alert"]="Nick in not created: "+msg + return redirect("/#nick") + + +def invalid_nick(nick): + if len(nick)<4: + return "Nick is too short" + if not nick.isalnum(): + return "Only letters and numbers are allowed" + return 0 +
\ No newline at end of file diff --git a/routes/set/question.py b/routes/set/question.py new file mode 100644 index 0000000..deaf9be --- /dev/null +++ b/routes/set/question.py @@ -0,0 +1,40 @@ +from app import app +from flask import render_template, session, request, redirect +import db_actions as D + + +def validate_answer(ans): + if len(ans)<1: + return False + return True + +def validate_question(question): + if len(question)<2: + return False + return True + +@app.route("/set/question",methods=["POST"]) +def new_question(): + question = request.form["question"] + neg_ans = request.form["neg_ans"] + pos_ans = request.form["pos_ans"] + answer = request.form["answer"] + if not validate_question(question): + msg = "Kysymys on virheellinen" + elif not validate_answer(neg_ans): + msg = "Vasen selite on virheellinen" + elif not validate_answer(pos_ans): + msg = "Oikea selite on virheellinen" + elif "id" not in session.keys(): + msg = "Tarvitaan nimimerkki" + elif "quiz_id" not in session.keys(): + msg = "Ei voi lisätä kysymystä ilman kyselmää" + else: + quiz_id = session["quiz_id"] + user_id = session["id"] + question_id = D.question_new( question, neg_ans, pos_ans ) + D.quiz_add(quiz_id, question_id) + D.answer_new(user_id, question_id, answer) + return redirect("/#create") + session["alert"]="Kysymystä ei luotu: "+msg + return redirect("/#create") diff --git a/routes/set/quiz.py b/routes/set/quiz.py new file mode 100644 index 0000000..9ad13da --- /dev/null +++ b/routes/set/quiz.py @@ -0,0 +1,13 @@ +from app import app +from flask import render_template, session, request, redirect +import db_actions as D + + +@app.route("/set/quiz",methods=["POST"]) +def new_quiz(): + if not "id" in session.keys(): + session["alert"]="Tarvitset nimimerkin loudaksesi" + return redirect("/#nick") + user_id = session["id"] + session["quiz_id"] = D.quiz_new( user_id ) + return redirect("/#create") |