Add welcome dialog API
This commit is contained in:
parent
1cfc152d3b
commit
38071165d1
|
@ -13,13 +13,14 @@
|
||||||
#
|
#
|
||||||
# You should have received a copy of the GNU Affero General Public License
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
import math
|
import math
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
import flask_sqlalchemy
|
import flask_sqlalchemy
|
||||||
from flask import request, jsonify, current_app
|
from flask import request, jsonify, current_app
|
||||||
from flask_login import current_user, login_required
|
from flask_login import current_user, login_required
|
||||||
from sqlalchemy.orm import subqueryload, joinedload
|
from sqlalchemy.orm import joinedload
|
||||||
from sqlalchemy.sql.expression import func
|
from sqlalchemy.sql.expression import func
|
||||||
|
|
||||||
from app import csrf
|
from app import csrf
|
||||||
|
@ -477,6 +478,26 @@ def homepage():
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@bp.route("/api/welcome/v1/")
|
||||||
|
@cors_allowed
|
||||||
|
def welcome_v1():
|
||||||
|
featured = Package.query \
|
||||||
|
.filter(Package.type == PackageType.GAME, Package.state == PackageState.APPROVED,
|
||||||
|
Package.tags.any(name="featured")) \
|
||||||
|
.order_by(func.random()) \
|
||||||
|
.limit(5).all()
|
||||||
|
|
||||||
|
mtg = Package.query.filter(Package.author.has(username="Minetest"), Package.name == "minetest_game").one()
|
||||||
|
featured.insert(2, mtg)
|
||||||
|
|
||||||
|
def map_packages(packages: List[Package]):
|
||||||
|
return [pkg.getAsDictionaryShort(current_app.config["BASE_URL"]) for pkg in packages]
|
||||||
|
|
||||||
|
return jsonify({
|
||||||
|
"featured": map_packages(featured),
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/api/minetest_versions/")
|
@bp.route("/api/minetest_versions/")
|
||||||
@cors_allowed
|
@cors_allowed
|
||||||
def versions():
|
def versions():
|
||||||
|
|
|
@ -378,3 +378,5 @@ Supported query parameters:
|
||||||
* `pop_txp`: popular textures
|
* `pop_txp`: popular textures
|
||||||
* `pop_game`: popular games
|
* `pop_game`: popular games
|
||||||
* `high_reviewed`: highest reviewed
|
* `high_reviewed`: highest reviewed
|
||||||
|
* GET `/api/welcome/v1/` ([View](/api/welcome/v1/)) - in-menu welcome dialog. Experimental (may change without warning)
|
||||||
|
* `featured`: featured games
|
||||||
|
|
Loading…
Reference in New Issue