aboutsummaryrefslogtreecommitdiff
path: root/app/models.py
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2019-01-29 01:28:38 +0000
committerrubenwardy <rw@rubenwardy.com>2019-01-29 01:29:49 +0000
commit2844773e4d05b3453fb90e131035a1639f05cd84 (patch)
tree095be6ae756e5097032a36628b950dffd987cbe6 /app/models.py
parent23c406bff9c0598f84be8dfcfa4a80f8093b05a6 (diff)
downloadcheatdb-2844773e4d05b3453fb90e131035a1639f05cd84.tar.xz
Fix wrong release ID returned by API on explicit protocol version
Diffstat (limited to 'app/models.py')
-rw-r--r--app/models.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/app/models.py b/app/models.py
index 2337b0b..e9cd65c 100644
--- a/app/models.py
+++ b/app/models.py
@@ -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