aboutsummaryrefslogtreecommitdiff
path: root/app/querybuilder.py
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2019-01-28 21:31:08 +0000
committerrubenwardy <rw@rubenwardy.com>2019-01-28 21:33:50 +0000
commit84b996c489b2003c8da010baf92b748915170974 (patch)
tree1aa351dd75196487bc2819e886a48af3d9537651 /app/querybuilder.py
parentd77403c0be04a79693fca4b0a8c6a5b3e06a6177 (diff)
downloadcheatdb-84b996c489b2003c8da010baf92b748915170974.tar.xz
Add Minetest version checking to packages API
Diffstat (limited to 'app/querybuilder.py')
-rw-r--r--app/querybuilder.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/app/querybuilder.py b/app/querybuilder.py
index a7f1323..e524bde 100644
--- a/app/querybuilder.py
+++ b/app/querybuilder.py
@@ -1,7 +1,8 @@
-from .models import db, PackageType, Package, ForumTopic, License
+from .models import db, PackageType, Package, ForumTopic, License, MinetestRelease, PackageRelease
from .utils import isNo
from sqlalchemy.sql.expression import func
from flask import abort
+from sqlalchemy import or_
class QueryBuilder:
title = None
@@ -27,6 +28,7 @@ class QueryBuilder:
self.limit = 1 if self.lucky else None
self.order_by = args.get("sort") or "score"
self.order_dir = args.get("order") or "desc"
+ self.protocol_version = args.get("protocol_version")
if self.search is not None and self.search.strip() == "":
self.search = None
@@ -64,6 +66,18 @@ 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:
+ self.protocol_version = int(self.protocol_version)
+ version = MinetestRelease.query.filter(MinetestRelease.protocol>=self.protocol_version).first()
+ if version is not None:
+ version = version.id
+ else:
+ version = 10000000
+
+ query = query.join(Package.releases) \
+ .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 self.limit:
query = query.limit(self.limit)