mirror of
https://github.com/minetest/contentdb.git
synced 2024-12-22 22:12:24 +01:00
parent
232e3199fd
commit
3f12a89764
@ -74,10 +74,12 @@ def packages():
|
|||||||
qb = QueryBuilder(request.args, lang=lang)
|
qb = QueryBuilder(request.args, lang=lang)
|
||||||
query = qb.build_package_query()
|
query = qb.build_package_query()
|
||||||
|
|
||||||
if request.args.get("fmt") == "keys":
|
fmt = request.args.get("fmt")
|
||||||
|
if fmt == "keys":
|
||||||
return jsonify([pkg.as_key_dict() for pkg in query.all()])
|
return jsonify([pkg.as_key_dict() for pkg in query.all()])
|
||||||
|
|
||||||
pkgs = qb.convert_to_dictionary(query.all())
|
include_vcs = fmt == "vcs"
|
||||||
|
pkgs = qb.convert_to_dictionary(query.all(), include_vcs)
|
||||||
if "engine_version" in request.args or "protocol_version" in request.args:
|
if "engine_version" in request.args or "protocol_version" in request.args:
|
||||||
pkgs = [pkg for pkg in pkgs if pkg.get("release")]
|
pkgs = [pkg for pkg in pkgs if pkg.get("release")]
|
||||||
|
|
||||||
@ -88,7 +90,8 @@ def packages():
|
|||||||
"limit" not in request.args:
|
"limit" not in request.args:
|
||||||
featured_lut = set()
|
featured_lut = set()
|
||||||
featured = qb.convert_to_dictionary(query.filter(
|
featured = qb.convert_to_dictionary(query.filter(
|
||||||
Package.collections.any(and_(Collection.name == "featured", Collection.author.has(username="ContentDB")))).all())
|
Package.collections.any(and_(Collection.name == "featured", Collection.author.has(username="ContentDB")))).all(),
|
||||||
|
include_vcs)
|
||||||
for pkg in featured:
|
for pkg in featured:
|
||||||
featured_lut.add(f"{pkg['author']}/{pkg['name']}")
|
featured_lut.add(f"{pkg['author']}/{pkg['name']}")
|
||||||
pkg["short_description"] = gettext("Featured") + ". " + pkg["short_description"]
|
pkg["short_description"] = gettext("Featured") + ". " + pkg["short_description"]
|
||||||
|
@ -213,6 +213,7 @@ Format query parameters:
|
|||||||
* `fmt`: How the response is formatted.
|
* `fmt`: How the response is formatted.
|
||||||
* `keys`: author/name only.
|
* `keys`: author/name only.
|
||||||
* `short`: stuff needed for the Minetest client.
|
* `short`: stuff needed for the Minetest client.
|
||||||
|
* `vcs`: `short` but with `repo`.
|
||||||
|
|
||||||
|
|
||||||
### Releases
|
### Releases
|
||||||
|
@ -611,7 +611,7 @@ class Package(db.Model):
|
|||||||
"type": self.type.to_name(),
|
"type": self.type.to_name(),
|
||||||
}
|
}
|
||||||
|
|
||||||
def as_short_dict(self, base_url, version=None, release_id=None, no_load=False, lang="en"):
|
def as_short_dict(self, base_url, version=None, release_id=None, no_load=False, lang="en", include_vcs=False):
|
||||||
tnurl = self.get_thumb_url(1, format="png")
|
tnurl = self.get_thumb_url(1, format="png")
|
||||||
|
|
||||||
if release_id is None and no_load == False:
|
if release_id is None and no_load == False:
|
||||||
@ -637,6 +637,9 @@ class Package(db.Model):
|
|||||||
if not ret["aliases"]:
|
if not ret["aliases"]:
|
||||||
del ret["aliases"]
|
del ret["aliases"]
|
||||||
|
|
||||||
|
if include_vcs:
|
||||||
|
ret["repo"] = self.repo
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def as_dict(self, base_url, version=None, lang="en", screenshots_dict=False):
|
def as_dict(self, base_url, version=None, lang="en", screenshots_dict=False):
|
||||||
|
@ -213,14 +213,15 @@ class QueryBuilder:
|
|||||||
|
|
||||||
return releases_query.all()
|
return releases_query.all()
|
||||||
|
|
||||||
def convert_to_dictionary(self, packages):
|
def convert_to_dictionary(self, packages, include_vcs: bool):
|
||||||
releases = {}
|
releases = {}
|
||||||
for [package_id, release_id] in self.get_releases():
|
for [package_id, release_id] in self.get_releases():
|
||||||
releases[package_id] = release_id
|
releases[package_id] = release_id
|
||||||
|
|
||||||
def to_json(package: Package):
|
def to_json(package: Package):
|
||||||
release_id = releases.get(package.id)
|
release_id = releases.get(package.id)
|
||||||
return package.as_short_dict(current_app.config["BASE_URL"], release_id=release_id, no_load=True, lang=self.lang)
|
return package.as_short_dict(current_app.config["BASE_URL"], release_id=release_id, no_load=True,
|
||||||
|
lang=self.lang, include_vcs=include_vcs)
|
||||||
|
|
||||||
return [to_json(pkg) for pkg in packages]
|
return [to_json(pkg) for pkg in packages]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user