aboutsummaryrefslogtreecommitdiff
path: root/app/views
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2018-12-23 23:49:49 +0000
committerrubenwardy <rw@rubenwardy.com>2018-12-23 23:54:20 +0000
commit50889ccca57cea9166ab7c64a83d540d6c0a20ce (patch)
tree57d757bc7250517b8f4b5e38251b9dfc8422bf8c /app/views
parentb8ca5d24c50f108ea574c89405e2ce2e70ea18af (diff)
downloadcheatdb-50889ccca57cea9166ab7c64a83d540d6c0a20ce.tar.xz
Add topic searching and topic discarding
Diffstat (limited to 'app/views')
-rw-r--r--app/views/api.py17
-rw-r--r--app/views/packages/todo.py15
2 files changed, 26 insertions, 6 deletions
diff --git a/app/views/api.py b/app/views/api.py
index 9223c8b..04f58d6 100644
--- a/app/views/api.py
+++ b/app/views/api.py
@@ -19,7 +19,7 @@ from flask import *
from flask_user import *
from app import app
from app.models import *
-from app.utils import is_package_page
+from app.utils import is_package_page, rank_required
from .packages import QueryBuilder
@app.route("/api/packages/")
@@ -43,3 +43,18 @@ def api_topics_page():
.order_by(db.asc(ForumTopic.wip), db.asc(ForumTopic.name), db.asc(ForumTopic.title))
pkgs = [t.getAsDictionary() for t in query.all()]
return jsonify(pkgs)
+
+
+@app.route("/api/topic_discard/", methods=["POST"])
+@rank_required(UserRank.EDITOR)
+def topic_set_discard():
+ tid = request.args.get("tid")
+ discard = request.args.get("discard")
+ if tid is None or discard is None:
+ abort(400)
+
+ topic = ForumTopic.query.get(tid)
+ topic.discarded = discard == "true"
+ db.session.commit()
+
+ return jsonify(topic.getAsDictionary())
diff --git a/app/views/packages/todo.py b/app/views/packages/todo.py
index 596e83a..a29a46e 100644
--- a/app/views/packages/todo.py
+++ b/app/views/packages/todo.py
@@ -54,11 +54,16 @@ def todo_page():
@app.route("/todo/topics/")
@login_required
def todo_topics_page():
- total = ForumTopic.query.count()
+ query = ForumTopic.query
- query = ForumTopic.query \
- .filter(~ db.exists().where(Package.forums==ForumTopic.topic_id)) \
- .order_by(db.asc(ForumTopic.wip), db.asc(ForumTopic.name), db.asc(ForumTopic.title))
+ show_discarded = request.args.get("show_discarded") == "True"
+ if not show_discarded:
+ query = query.filter_by(discarded=False)
+
+ total = query.count()
+
+ query = query.filter(~ db.exists().where(Package.forums==ForumTopic.topic_id)) \
+ .order_by(db.asc(ForumTopic.wip), db.asc(ForumTopic.name), db.asc(ForumTopic.title))
topic_count = query.count()
@@ -75,5 +80,5 @@ def todo_topics_page():
if query.has_prev else None
return render_template("todo/topics.html", topics=query.items, total=total, \
- topic_count=topic_count, query=search, \
+ topic_count=topic_count, query=search, show_discarded=show_discarded, \
next_url=next_url, prev_url=prev_url, page=page, page_max=query.pages)