diff --git a/templates/newachievement.html b/templates/newachievement.html new file mode 100644 index 0000000..eff878b --- /dev/null +++ b/templates/newachievement.html @@ -0,0 +1,15 @@ + + +
+ {{ form.csrf }} + +
+ {{ form.name.label }} {{ form.name }} +
+ +
+ +
+
+ + diff --git a/user.py b/user.py index 22232f4..9a87bfb 100644 --- a/user.py +++ b/user.py @@ -1,22 +1,28 @@ from app import app, db from models import User, Achievement -from flask import request, render_template +from flask import request, render_template, redirect, url_for from flask_login import current_user, login_required +from wtforms import Form, TextField, validators import json -@app.route("/users//addachievement") +class AchievementForm(Form): + name = TextField("Name: ", validators=[validators.required()]) + +@app.route("/users//addachievement", methods=["GET", "POST"]) @login_required def add_achievement(id): - name = request.args.get("name") - if not name: - return "No name supplied" - achievement = Achievement(name=name, achieved_by=id) - achievement.endorsed_by.append(current_user) - db.session.add(achievement) - db.session.commit() - return "OK" + form = AchievementForm(request.form) + if request.method == "POST": + name = request.form["name"] + if form.validate(): + achievement = Achievement(name=name, achieved_by=id) + achievement.endorsed_by.append(current_user) + db.session.add(achievement) + db.session.commit() + return redirect(url_for("get_user", id=id)) + return render_template("newachievement.html", form=form) @app.route("/users/") def get_user(id): @@ -25,6 +31,7 @@ def get_user(id): return "Unknown user" return render_template("user.html", data=user.to_obj()) +@app.route("/") @app.route("/users/") def all_users(): - return render_template("allusers.html", data=[user.to_obj() for user in User.query.all()]) \ No newline at end of file + return render_template("allusers.html", data=[user.to_obj() for user in User.query.all()])