diff options
author | rubenwardy <rw@rubenwardy.com> | 2019-01-28 21:31:08 +0000 |
---|---|---|
committer | rubenwardy <rw@rubenwardy.com> | 2019-01-28 21:33:50 +0000 |
commit | 84b996c489b2003c8da010baf92b748915170974 (patch) | |
tree | 1aa351dd75196487bc2819e886a48af3d9537651 /app/querybuilder.py | |
parent | d77403c0be04a79693fca4b0a8c6a5b3e06a6177 (diff) | |
download | cheatdb-84b996c489b2003c8da010baf92b748915170974.tar.xz |
Add Minetest version checking to packages API
Diffstat (limited to 'app/querybuilder.py')
-rw-r--r-- | app/querybuilder.py | 16 |
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) |