aboutsummaryrefslogtreecommitdiff
path: root/app/querybuilder.py
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2020-06-03 17:17:21 +0100
committerrubenwardy <rw@rubenwardy.com>2020-06-03 17:33:33 +0100
commit14cf3912f09f1fc649f3ac808ea3125d6a87516e (patch)
tree577a649964c92d06adf1523da7ea4abc5263b213 /app/querybuilder.py
parent720457e8768429efb3c9a8107e0e01a3490d75c3 (diff)
downloadcheatdb-14cf3912f09f1fc649f3ac808ea3125d6a87516e.tar.xz
Add support for getting MinetestRelease using engine_version
Diffstat (limited to 'app/querybuilder.py')
-rw-r--r--app/querybuilder.py23
1 files changed, 10 insertions, 13 deletions
diff --git a/app/querybuilder.py b/app/querybuilder.py
index cb1d07a..5b75b4c 100644
--- a/app/querybuilder.py
+++ b/app/querybuilder.py
@@ -42,7 +42,8 @@ class QueryBuilder:
# Filters
self.search = args.get("q")
- self.protocol_version = args.get("protocol_version")
+ self.minetest_version = args.get("engine_version")
+ self.protocol_version = get_int_or_abort(args.get("protocol_version"))
self.author = args.get("author")
self.show_discarded = isYes(args.get("show_discarded"))
@@ -58,15 +59,10 @@ class QueryBuilder:
self.order_by = name
def getMinetestVersion(self):
- if not self.protocol_version:
+ if not self.protocol_version and not self.minetest_version:
return None
- self.protocol_version = get_int_or_abort(self.protocol_version)
- version = MinetestRelease.query.filter(MinetestRelease.protocol>=self.protocol_version).first()
- if version is not None:
- return version.id
- else:
- return 10000000
+ return MinetestRelease.get(self.minetest_version, self.protocol_version)
def buildPackageQuery(self):
query = Package.query.filter_by(soft_deleted=False, approved=True)
@@ -111,12 +107,13 @@ class QueryBuilder:
query = query.filter(Package.license.has(License.is_foss == True))
query = query.filter(Package.media_license.has(License.is_foss == True))
- if self.protocol_version:
+ if self.protocol_version or self.minetest_version:
version = self.getMinetestVersion()
- query = query.join(Package.releases) \
- .filter(PackageRelease.approved==True) \
- .filter(or_(PackageRelease.min_rel_id==None, PackageRelease.min_rel_id<=version)) \
- .filter(or_(PackageRelease.max_rel_id==None, PackageRelease.max_rel_id>=version))
+ if version:
+ query = query.join(Package.releases) \
+ .filter(PackageRelease.approved==True) \
+ .filter(or_(PackageRelease.min_rel_id==None, PackageRelease.min_rel_id<=version.id)) \
+ .filter(or_(PackageRelease.max_rel_id==None, PackageRelease.max_rel_id>=version.id))
if self.limit:
query = query.limit(self.limit)