From 6280cd5947c57af9d0b447237ac47532047bbff2 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Wed, 3 Apr 2024 18:30:08 +0100 Subject: [PATCH] Remove some forum topic related features (#527) --- app/blueprints/api/endpoints.py | 18 ----- app/blueprints/packages/packages.py | 1 - app/blueprints/todo/editor.py | 32 -------- app/flatpages/help/api.md | 1 - app/flatpages/help/editors.md | 1 - app/models/__init__.py | 2 +- app/public/static/js/topic_discard.js | 33 --------- app/querybuilder.py | 4 - app/templates/macros/topics.html | 47 +++++------- app/templates/todo/todo_base.html | 6 -- app/templates/todo/topics.html | 101 -------------------------- app/templates/todo/user.html | 4 +- 12 files changed, 20 insertions(+), 230 deletions(-) delete mode 100644 app/public/static/js/topic_discard.js delete mode 100644 app/templates/todo/topics.html diff --git a/app/blueprints/api/endpoints.py b/app/blueprints/api/endpoints.py index fa646143..a40cd760 100644 --- a/app/blueprints/api/endpoints.py +++ b/app/blueprints/api/endpoints.py @@ -234,24 +234,6 @@ def topics(): return jsonify([t.as_dict() for t in query.all()]) -@bp.route("/api/topic_discard/", methods=["POST"]) -@login_required -def topic_set_discard(): - tid = request.args.get("tid") - discard = request.args.get("discard") - if tid is None or discard is None: - error(400, "Missing topic ID or discard bool") - - topic = ForumTopic.query.get(tid) - if not topic.check_perm(current_user, Permission.TOPIC_DISCARD): - error(403, "Permission denied, need: TOPIC_DISCARD") - - topic.discarded = discard == "true" - db.session.commit() - - return jsonify(topic.as_dict()) - - @bp.route("/api/whoami/") @is_api_authd @cors_allowed diff --git a/app/blueprints/packages/packages.py b/app/blueprints/packages/packages.py index 1f604195..972a3657 100644 --- a/app/blueprints/packages/packages.py +++ b/app/blueprints/packages/packages.py @@ -101,7 +101,6 @@ def list_all(): topics = None if qb.search and not query.has_next: - qb.show_discarded = True topics = qb.build_topic_query().all() tags_query = db.session.query(func.count(Tags.c.tag_id), Tag) \ diff --git a/app/blueprints/todo/editor.py b/app/blueprints/todo/editor.py index a2a12999..c3195c3b 100644 --- a/app/blueprints/todo/editor.py +++ b/app/blueprints/todo/editor.py @@ -90,38 +90,6 @@ def view_editor(): unfulfilled_meta_packages=unfulfilled_meta_packages, audit_log=audit_log) -@bp.route("/todo/topics/") -@login_required -def topics(): - qb = QueryBuilder(request.args, cookies=True) - qb.set_sort_if_none("date") - query = qb.build_topic_query() - - tmp_q = ForumTopic.query - if not qb.show_discarded: - tmp_q = tmp_q.filter_by(discarded=False) - total = tmp_q.count() - topic_count = query.count() - - page = get_int_or_abort(request.args.get("page"), 1) - num = get_int_or_abort(request.args.get("n"), 100) - if num > 100 and not current_user.rank.at_least(UserRank.APPROVER): - num = 100 - - query = query.paginate(page=page, per_page=num) - next_url = url_for("todo.topics", page=query.next_num, query=qb.search, - show_discarded=qb.show_discarded, n=num, sort=qb.order_by) \ - if query.has_next else None - prev_url = url_for("todo.topics", page=query.prev_num, query=qb.search, - show_discarded=qb.show_discarded, n=num, sort=qb.order_by) \ - if query.has_prev else None - - return render_template("todo/topics.html", current_tab="topics", topics=query.items, total=total, - topic_count=topic_count, query=qb.search, show_discarded=qb.show_discarded, - next_url=next_url, prev_url=prev_url, page=page, page_max=query.pages, - n=num, sort_by=qb.order_by) - - @bp.route("/todo/tags/") @login_required def tags(): diff --git a/app/flatpages/help/api.md b/app/flatpages/help/api.md index 59f05417..4ffddf3f 100644 --- a/app/flatpages/help/api.md +++ b/app/flatpages/help/api.md @@ -435,7 +435,6 @@ Supported query parameters: * `type`: Package types (`mod`, `game`, `txp`). * `sort`: Sort by (`name`, `views`, `created_at`). * `show_added`: Show topics that have an existing package. -* `show_discarded`: Show topics marked as discarded. * `limit`: Return at most `limit` topics. diff --git a/app/flatpages/help/editors.md b/app/flatpages/help/editors.md index b0c3f533..c0a65141 100644 --- a/app/flatpages/help/editors.md +++ b/app/flatpages/help/editors.md @@ -26,7 +26,6 @@ The [Editor Work Queue](/todo/) and related pages contain useful information for * The package, release, and screenshot approval queues. * Packages which are outdated or are missing tags. * A list of forum topics without packages. - Editors can create the packages or "discard" them if they don't think it's worth adding them. ## Editor Notifications diff --git a/app/models/__init__.py b/app/models/__init__.py index 7612c4ba..7ea23ecc 100644 --- a/app/models/__init__.py +++ b/app/models/__init__.py @@ -142,6 +142,7 @@ class ForumTopic(db.Model): author = db.relationship("User", back_populates="forum_topics") wip = db.Column(db.Boolean, default=False, nullable=False) + # TODO: remove discarded = db.Column(db.Boolean, default=False, nullable=False) type = db.Column(db.Enum(PackageType), nullable=False) @@ -175,7 +176,6 @@ class ForumTopic(db.Model): "posts": self.posts, "views": self.views, "is_wip": self.wip, - "discarded": self.discarded, "created_at": self.created_at.isoformat(), } diff --git a/app/public/static/js/topic_discard.js b/app/public/static/js/topic_discard.js deleted file mode 100644 index 2b8116e9..00000000 --- a/app/public/static/js/topic_discard.js +++ /dev/null @@ -1,33 +0,0 @@ -// @author rubenwardy -// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later - -"use strict"; - -document.querySelectorAll(".topic-discard").forEach(ele => ele.addEventListener("click", (e) => { - const row = ele.parentNode.parentNode; - const tid = ele.getAttribute("data-tid"); - const discard = !row.classList.contains("discardtopic"); - fetch(new Request("/api/topic_discard/?tid=" + tid + - "&discard=" + (discard ? "true" : "false"), { - method: "post", - credentials: "same-origin", - headers: { - "Accept": "application/json", - "X-CSRFToken": csrf_token, - }, - })).then(function(response) { - response.text().then(function(txt) { - if (JSON.parse(txt).discarded) { - row.classList.add("discardtopic"); - ele.classList.remove("btn-danger"); - ele.classList.add("btn-success"); - ele.innerText = "Show"; - } else { - row.classList.remove("discardtopic"); - ele.classList.remove("btn-success"); - ele.classList.add("btn-danger"); - ele.innerText = "Discard"; - } - }).catch(console.error); - }).catch(console.error); -})); diff --git a/app/querybuilder.py b/app/querybuilder.py index 885739f9..78a1fbd8 100644 --- a/app/querybuilder.py +++ b/app/querybuilder.py @@ -121,7 +121,6 @@ class QueryBuilder: else: self.version = None - self.show_discarded = is_yes(args.get("show_discarded")) self.show_added = args.get("show_added") if self.show_added is not None: self.show_added = is_yes(self.show_added) @@ -300,9 +299,6 @@ class QueryBuilder: def build_topic_query(self, show_added=False): query = ForumTopic.query - if not self.show_discarded: - query = query.filter_by(discarded=False) - show_added = self.show_added == True or (self.show_added is None and show_added) if not show_added: query = query.filter(~ db.exists().where(Package.forums==ForumTopic.topic_id)) diff --git a/app/templates/macros/topics.html b/app/templates/macros/topics.html index 7eec0fc8..31edf17e 100644 --- a/app/templates/macros/topics.html +++ b/app/templates/macros/topics.html @@ -1,4 +1,4 @@ -{% macro render_topics_table(topics, show_author=True, show_discard=False, current_user=current_user, class_=None) -%} +{% macro render_topics_table(topics, show_author=True, current_user=current_user, class_=None) -%} @@ -9,7 +9,7 @@ {% for topic in topics %} - + @@ -29,15 +29,6 @@ {{ _("Create") }} {% endif %} - {% if show_discard and current_user.is_authenticated and topic.check_perm(current_user, "TOPIC_DISCARD") %} - - {% if topic.discarded %} - {{ _("Show") }} - {% else %} - {{ _("Discard") }} - {% endif %} - - {% endif %} {% if topic.link %} {{ topic.link | domain | truncate(18) }} {% endif %} @@ -48,24 +39,22 @@ {% endmacro %} -{% macro render_topics(topics, current_user, show_author=True) -%} - + {% endmacro %} diff --git a/app/templates/todo/todo_base.html b/app/templates/todo/todo_base.html index 3ad6748f..626f7dd3 100644 --- a/app/templates/todo/todo_base.html +++ b/app/templates/todo/todo_base.html @@ -35,12 +35,6 @@ {{ _("Missing Screenshots") }} - diff --git a/app/templates/todo/topics.html b/app/templates/todo/topics.html deleted file mode 100644 index 055bb5d2..00000000 --- a/app/templates/todo/topics.html +++ /dev/null @@ -1,101 +0,0 @@ -{% extends "todo/todo_base.html" %} - -{% block title %} -Topics to be Added -{% endblock %} - -{% block content %} -
- - -
- {% if current_user.rank.at_least(current_user.rank.APPROVER) %} - {% if n >= 10000 %} - - {{ _("Paginated list") }} - - {% else %} - - {{ _("Unlimited list") }} - - {% endif %} - {% endif %} - - - {% if not show_discarded %} - {{ _("Show discarded topics") }} - {% else %} - {{ _("Hide discarded topics") }} - {% endif %} - -
-
- -

{{ _("Topics to be Added") }}

- - {% if topic_count > 0 %} -

- {{ total - topic_count }} / {{ total }} topics have been added as packages to CDB. - {{ topic_count }} remaining. -

-
- {% set perc = 100 * (total - topic_count) / total %} -
-
- {% else %} -

- The forum topic crawler needs to run at least once for this section to work. -

- {% endif %} - - - - - - - - - - {% from "macros/topics.html" import render_topics_table %} - {{ render_topics_table(topics, show_discard=True, current_user=current_user) }} - - -{% endblock %} - -{% block scriptextra %} - - -{% endblock %} diff --git a/app/templates/todo/user.html b/app/templates/todo/user.html index d91f2393..404738e1 100644 --- a/app/templates/todo/user.html +++ b/app/templates/todo/user.html @@ -203,12 +203,11 @@ {% if topics_to_add %}

{{ _("List of your forum topics which do not have a matching package.") }} - {{ _("Topics with a strikethrough have been marked as discarded.") }}

{% from "macros/topics.html" import render_topics_table %} - {{ render_topics_table(topics_to_add, show_author=False, show_discard=True, current_user=current_user) }} + {{ render_topics_table(topics_to_add, show_author=False, current_user=current_user) }}
{% else %}

{{ _("Congrats! You don't have any topics which aren't on CDB.") }}

@@ -220,5 +219,4 @@ - {% endblock %}
{{ _("Actions") }}
[{{ topic.type.text }}]