]> git.lizzy.rs Git - cheatdb.git/blobdiff - app/views/threads.py
Fix thumbnails
[cheatdb.git] / app / views / threads.py
index 2aa815e85b5e7fcbc65989c2b1a34d1c5c3df07c..37ac3d1b7a59b1c57d0c19e2cfcf0b0a27065978 100644 (file)
@@ -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/<int:id>/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/<int:id>/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/<int:id>/", methods=["GET", "POST"])
 def thread_page(id):
        clearNotifications(url_for("thread_page", id=id))
@@ -92,7 +127,7 @@ def new_thread_page():
                        flash("Unable to find that package!", "error")
 
        # Don't allow making threads on approved packages for now
-       if package is None or package.approved:
+       if package is None:
                abort(403)
 
        def_is_private   = request.args.get("private") or False
@@ -102,8 +137,7 @@ def new_thread_page():
        is_review_thread = package is not None and not package.approved
 
        # Check that user can make the thread
-       if is_review_thread and not (package.author == current_user or \
-                       package.checkPerm(current_user, Permission.APPROVE_NEW)):
+       if not package.checkPerm(current_user, Permission.CREATE_THREAD):
                flash("Unable to create thread!", "error")
                return redirect(url_for("home_page"))