From 211b130f98761981d8daec3e2162793e24ccfff9 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 11 Jun 2024 21:39:10 +0100 Subject: [PATCH] Advanced Search: Use dropdown for supported game --- app/blueprints/packages/advanced_search.py | 8 ++++++-- app/templates/packages/advanced_search.html | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/blueprints/packages/advanced_search.py b/app/blueprints/packages/advanced_search.py index e69ee6a0..7dfa7c82 100644 --- a/app/blueprints/packages/advanced_search.py +++ b/app/blueprints/packages/advanced_search.py @@ -23,7 +23,7 @@ from wtforms.validators import Optional from wtforms_sqlalchemy.fields import QuerySelectMultipleField, QuerySelectField from . import bp -from ...models import PackageType, Tag, db, ContentWarning, License, Language, MinetestRelease +from ...models import PackageType, Tag, db, ContentWarning, License, Language, MinetestRelease, Package, PackageState def make_label(obj: Tag | ContentWarning): @@ -64,7 +64,11 @@ class AdvancedSearchForm(FlaskForm): query_factory=lambda: License.query.order_by(db.asc(License.name)), allow_blank=True, blank_value="", get_pk=lambda a: a.name, get_label=lambda a: a.name) - game = StringField(lazy_gettext("Supports Game"), [Optional()]) + game = QuerySelectField(lazy_gettext("Supports Game"), [Optional()], + query_factory=lambda: Package.query.filter(Package.type == PackageType.GAME, Package.state == PackageState.APPROVED).order_by(db.asc(Package.name)), + allow_blank=True, blank_value="", + get_pk=lambda a: f"{a.author.username}/{a.name}", + get_label=lambda a: lazy_gettext("%(title)s by %(author)s", title=a.title, author=a.author.display_name)) lang = QuerySelectField(lazy_gettext("Language"), query_factory=lambda: Language.query.order_by(db.asc(Language.title)), allow_blank=True, blank_value="", diff --git a/app/templates/packages/advanced_search.html b/app/templates/packages/advanced_search.html index 2f1a7697..93af3a42 100644 --- a/app/templates/packages/advanced_search.html +++ b/app/templates/packages/advanced_search.html @@ -23,7 +23,7 @@

{{ _("Compatibility") }}

{{ render_field(form.engine_version) }} - {{ render_field(form.game, placeholder=_("author/name"), pattern="\w+/\w+", hint=_("author/name")) }} + {{ render_field(form.game) }}

{{ _("Sorting") }}