diff options
author | rubenwardy <rw@rubenwardy.com> | 2020-04-07 18:23:06 +0100 |
---|---|---|
committer | rubenwardy <rw@rubenwardy.com> | 2020-04-07 18:23:06 +0100 |
commit | 39a09c5d9248d48422b4e8773add3b912e364ed1 (patch) | |
tree | 60a49542d094afb332276580bccf68c29ad09805 /app/querybuilder.py | |
parent | 663a9ba07bb947857d4fefecbebf1eadbadafe9e (diff) | |
download | cheatdb-39a09c5d9248d48422b4e8773add3b912e364ed1.tar.xz |
Add ability to search by tagv1.24.0
Diffstat (limited to 'app/querybuilder.py')
-rw-r--r-- | app/querybuilder.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/app/querybuilder.py b/app/querybuilder.py index 4db6742..d811ce5 100644 --- a/app/querybuilder.py +++ b/app/querybuilder.py @@ -1,4 +1,5 @@ -from .models import db, PackageType, Package, ForumTopic, License, MinetestRelease, PackageRelease, User +from .models import db, PackageType, Package, ForumTopic, License, MinetestRelease, PackageRelease, User, Tag +from .models import tags as Tags from .utils import isNo, isYes from sqlalchemy.sql.expression import func from flask import abort @@ -19,10 +20,17 @@ class QueryBuilder: if len(types) > 0: title = ", ".join([type.value + "s" for type in types]) + # Get tags types + tags = args.getlist("tag") + tags = [Tag.query.filter_by(name=tname).first() for tname in tags] + tags = [tag for tag in tags if tag is not None] + + # Hid hide_flags = args.getlist("hide") self.title = title self.types = types + self.tags = tags self.random = "random" in args self.lucky = "lucky" in args @@ -96,6 +104,9 @@ class QueryBuilder: query = query.filter_by(author=author) + for tag in self.tags: + query = query.filter(Package.tags.any(Tag.id == tag.id)) + if self.hide_nonfree: query = query.filter(Package.license.has(License.is_foss == True)) query = query.filter(Package.media_license.has(License.is_foss == True)) |