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 @@
+
+
+
+
+
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()])