From 13837ce88bf6c80af9308942843425a89f244ba3 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sat, 7 Jul 2018 00:28:27 +0100 Subject: [PATCH] Add forum topic validation --- app/tasks/phpbbparser.py | 2 +- app/templates/packages/view.html | 11 +++++++++++ app/views/packages/__init__.py | 23 ++++++++++++++++++++++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/app/tasks/phpbbparser.py b/app/tasks/phpbbparser.py index 9984ad0..a945531 100644 --- a/app/tasks/phpbbparser.py +++ b/app/tasks/phpbbparser.py @@ -133,7 +133,7 @@ def parseForumListPage(id, page, out, extra=None): out[id] = row - return True + return False def getTopicsFromForum(id, out={}, extra=None): print("Fetching all topics from forum {}".format(id)) diff --git a/app/templates/packages/view.html b/app/templates/packages/view.html index df31ce1..b118046 100644 --- a/app/templates/packages/view.html +++ b/app/templates/packages/view.html @@ -24,6 +24,9 @@ {% elif (package.type == package.type.GAME or package.type == package.type.TXP) and package.screenshots.count() == 0 %} You need to add at least one screenshot. + {% elif topic_error_lvl == "error" %} + Please fix the below topic issue(s). + {% else %} {% if package.screenshots.count() == 0 %} You should add at least one screenshot, but this isn't required.
@@ -44,6 +47,14 @@
+ {% if topic_error %} +
+ + {{ topic_error | safe }} +
+
+ {% endif %} + {% if package.author == current_user or package.checkPerm(current_user, "APPROVE_NEW") %} {% if review_thread %}

🔒 {{ review_thread.title }}

diff --git a/app/views/packages/__init__.py b/app/views/packages/__init__.py index 2c8d77b..6184813 100644 --- a/app/views/packages/__init__.py +++ b/app/views/packages/__init__.py @@ -116,10 +116,31 @@ def package_page(package): if review_thread is not None and not review_thread.checkPerm(current_user, Permission.SEE_THREAD): review_thread = None + topic_error = None + topic_error_lvl = "warning" + if not package.approved and package.forums is not None: + errors = [] + if Package.query.filter_by(forums=package.forums, soft_deleted=False).count() > 1: + errors.append("Error: Another package already uses this forum topic!") + topic_error_lvl = "error" + + topic = ForumTopic.query.get(package.forums) + if topic is not None: + if topic.author != package.author: + errors.append("Error: Forum topic author doesn't match package author.") + topic_error_lvl = "error" + + if topic.wip: + errors.append("Warning: Forum topic is in WIP section, make sure package meets playability standards.") + elif package.type != PackageType.TXP: + errors.append("Warning: Forum topic not found. This may happen if the topic has only just been created.") + + topic_error = "
".join(errors) + return render_template("packages/view.html", \ package=package, releases=releases, requests=requests, \ alternatives=alternatives, similar_topics=similar_topics, \ - review_thread=review_thread) + review_thread=review_thread, topic_error=topic_error, topic_error_lvl=topic_error_lvl) @app.route("/packages///download/")