From bfbab7ae9ebfae888bb25d3c445c93bddcb350d3 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sat, 25 Jun 2022 02:51:29 +0100 Subject: [PATCH] Prevent disabling game detection without manually specifying games --- app/blueprints/packages/packages.py | 11 ++++++++--- app/templates/packages/game_support.html | 16 +++++++++------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/app/blueprints/packages/packages.py b/app/blueprints/packages/packages.py index b8479066..15067ceb 100644 --- a/app/blueprints/packages/packages.py +++ b/app/blueprints/packages/packages.py @@ -628,7 +628,7 @@ def similar(package): class GameSupportForm(FlaskForm): - enable_support_detection = BooleanField(lazy_gettext("Enable support detection based on dependencies")) + enable_support_detection = BooleanField(lazy_gettext("Enable support detection based on dependencies (recommended)"), [Optional()]) supported = StringField(lazy_gettext("Supported games (Comma-separated)"), [Optional()]) unsupported = StringField(lazy_gettext("Unsupported games (Comma-separated)"), [Optional()]) submit = SubmitField(lazy_gettext("Save")) @@ -645,6 +645,9 @@ def game_support(package): if not (can_edit or package.checkPerm(current_user, Permission.APPROVE_NEW)): abort(403) + force_game_detection = package.supported_games.filter(and_( + PackageGameSupport.confidence > 1, PackageGameSupport.supports == True)).count() == 0 + form = GameSupportForm() if can_edit else None if request.method == "GET": form.enable_support_detection.data = package.enable_game_support_detection @@ -665,8 +668,9 @@ def game_support(package): next_url = package.getURL("packages.game_support") - if form.enable_support_detection.data != package.enable_game_support_detection: - package.enable_game_support_detection = form.enable_support_detection.data + enable_support_detection = form.enable_support_detection.data or force_game_detection + if enable_support_detection != package.enable_game_support_detection: + package.enable_game_support_detection = enable_support_detection if package.enable_game_support_detection: db.session.commit() @@ -682,4 +686,5 @@ def game_support(package): return redirect(next_url) return render_template("packages/game_support.html", package=package, form=form, + force_game_detection=force_game_detection, tabs=get_package_tabs(current_user, package), current_tab="game_support") diff --git a/app/templates/packages/game_support.html b/app/templates/packages/game_support.html index 10c6aa15..4935cc14 100644 --- a/app/templates/packages/game_support.html +++ b/app/templates/packages/game_support.html @@ -5,17 +5,14 @@ {% endblock %} {% block content %} + + {{ _("Documentation") }} +

{{ self.title() }}

This feature is experimental

-

- - {{ _("Read more") }} - - {{ _("Support is determined based on dependencies and fields in mod.conf") }} -

@@ -75,7 +72,12 @@
{{ form.hidden_tag() }} - {{ render_checkbox_field(form.enable_support_detection) }} + {{ render_checkbox_field(form.enable_support_detection, disabled=force_game_detection) }} + {% if force_game_detection %} +

+ {{ _("You need to manually define at least one supported game before you can turn this off.") }} +

+ {% endif %} {% if package.checkPerm(current_user, "EDIT_PACKAGE") and current_user not in package.maintainers %}