From e82166f87e89f329e9fd94a26dfc8651c69deb91 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sat, 28 Jul 2018 15:30:59 +0100 Subject: Add subscribe/unsubscribe button --- app/views/threads.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'app/views') diff --git a/app/views/threads.py b/app/views/threads.py index 316ca4d..37ac3d1 100644 --- a/app/views/threads.py +++ b/app/views/threads.py @@ -32,6 +32,41 @@ def threads_page(): query = query.filter_by(private=False) return render_template("threads/list.html", threads=query.all()) + +@app.route("/threads//subscribe/", methods=["POST"]) +@login_required +def thread_subscribe_page(id): + thread = Thread.query.get(id) + if thread is None or not thread.checkPerm(current_user, Permission.SEE_THREAD): + abort(404) + + if current_user in thread.watchers: + flash("Already subscribed!", "success") + else: + flash("Subscribed to thread", "success") + thread.watchers.append(current_user) + db.session.commit() + + return redirect(url_for("thread_page", id=id)) + + +@app.route("/threads//unsubscribe/", methods=["POST"]) +@login_required +def thread_unsubscribe_page(id): + thread = Thread.query.get(id) + if thread is None or not thread.checkPerm(current_user, Permission.SEE_THREAD): + abort(404) + + if current_user in thread.watchers: + flash("Unsubscribed!", "success") + thread.watchers.remove(current_user) + db.session.commit() + else: + flash("Not subscribed to thread", "success") + + return redirect(url_for("thread_page", id=id)) + + @app.route("/threads//", methods=["GET", "POST"]) def thread_page(id): clearNotifications(url_for("thread_page", id=id)) -- cgit v1.2.3