mirror of
https://github.com/minetest/contentdb.git
synced 2024-12-23 06:22:24 +01:00
Fix wrong release ID returned by API on explicit protocol version
This commit is contained in:
parent
23c406bff9
commit
2844773e4d
@ -403,7 +403,7 @@ class Package(db.Model):
|
||||
for e in PackagePropertyKey:
|
||||
setattr(self, e.name, getattr(package, e.name))
|
||||
|
||||
def getAsDictionaryShort(self, base_url):
|
||||
def getAsDictionaryShort(self, base_url, protonum=None):
|
||||
tnurl = self.getThumbnailURL(1)
|
||||
return {
|
||||
"name": self.name,
|
||||
@ -411,12 +411,12 @@ class Package(db.Model):
|
||||
"author": self.author.display_name,
|
||||
"short_description": self.shortDesc,
|
||||
"type": self.type.toName(),
|
||||
"release": self.getDownloadRelease().id if self.getDownloadRelease() is not None else None,
|
||||
"release": self.getDownloadRelease(protonum).id if self.getDownloadRelease(protonum) is not None else None,
|
||||
"thumbnail": (base_url + tnurl) if tnurl is not None else None,
|
||||
"score": round(self.score * 10) / 10
|
||||
}
|
||||
|
||||
def getAsDictionary(self, base_url):
|
||||
def getAsDictionary(self, base_url, protonum=None):
|
||||
tnurl = self.getThumbnailURL(1)
|
||||
return {
|
||||
"author": self.author.display_name,
|
||||
@ -440,7 +440,7 @@ class Package(db.Model):
|
||||
"screenshots": [base_url + ss.url for ss in self.screenshots],
|
||||
|
||||
"url": base_url + self.getDownloadURL(),
|
||||
"release": self.getDownloadRelease().id if self.getDownloadRelease() is not None else None,
|
||||
"release": self.getDownloadRelease(protonum).id if self.getDownloadRelease(protonum) is not None else None,
|
||||
|
||||
"score": round(self.score * 10) / 10
|
||||
}
|
||||
@ -489,9 +489,20 @@ class Package(db.Model):
|
||||
return url_for("package_download_page",
|
||||
author=self.author.username, name=self.name)
|
||||
|
||||
def getDownloadRelease(self):
|
||||
def getDownloadRelease(self, protonum=None):
|
||||
version = None
|
||||
if protonum is not None:
|
||||
version = MinetestRelease.query.filter(MinetestRelease.protocol >= int(protonum)).first()
|
||||
if version is not None:
|
||||
version = version.id
|
||||
else:
|
||||
version = 10000000
|
||||
|
||||
|
||||
for rel in self.releases:
|
||||
if rel.approved:
|
||||
if rel.approved and (protonum is None or
|
||||
((rel.min_rel is None or rel.min_rel_id <= version) and \
|
||||
(rel.max_rel is None or rel.max_rel_id >= version))):
|
||||
return rel
|
||||
|
||||
return None
|
||||
|
@ -27,7 +27,7 @@ def api_packages_page():
|
||||
qb = QueryBuilder(request.args)
|
||||
query = qb.buildPackageQuery()
|
||||
|
||||
pkgs = [package.getAsDictionaryShort(app.config["BASE_URL"]) \
|
||||
pkgs = [package.getAsDictionaryShort(app.config["BASE_URL"], request.args.get("protocol_version")) \
|
||||
for package in query.all() if package.getDownloadRelease() is not None]
|
||||
return jsonify(pkgs)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user