[Plugin] balance: Allow saving shortcuts
This commit is contained in:
parent
bdbb2d3e45
commit
826893e42e
|
@ -199,3 +199,9 @@ def load_avatar(user: User):
|
||||||
def save_avatar(user, avatar):
|
def save_avatar(user, avatar):
|
||||||
current_app.config["FG_AUTH_BACKEND"].set_avatar(user, avatar)
|
current_app.config["FG_AUTH_BACKEND"].set_avatar(user, avatar)
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
def persist(user=None):
|
||||||
|
if user:
|
||||||
|
db.session.add(user)
|
||||||
|
db.session.commit()
|
||||||
|
|
|
@ -4,6 +4,8 @@ Extends users plugin with balance functions
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
|
from flaschengeist.utils.HTTP import no_content
|
||||||
from flask import Blueprint, request, jsonify
|
from flask import Blueprint, request, jsonify
|
||||||
from werkzeug.exceptions import Forbidden, BadRequest
|
from werkzeug.exceptions import Forbidden, BadRequest
|
||||||
|
|
||||||
|
@ -39,31 +41,41 @@ class BalancePlugin(Plugin):
|
||||||
db.create_all()
|
db.create_all()
|
||||||
|
|
||||||
|
|
||||||
@balance_bp.route("/users/<userid>/balance/shortcuts", methods=["GET"])
|
@balance_bp.route("/users/<userid>/balance/shortcuts", methods=["GET", "PUT"])
|
||||||
@login_required()
|
@login_required()
|
||||||
def get_shortcuts(userid, current_session: Session):
|
def get_shortcuts(userid, current_session: Session):
|
||||||
"""Get set limit of an user
|
"""Get balance shortcuts of an user
|
||||||
|
|
||||||
Route: ``/users/<userid>/balance/limit`` | Method: ``GET``
|
Route: ``/users/<userid>/balance/shortcuts`` | Method: ``GET`` or ``PUT``
|
||||||
|
POST-data: On ``PUT`` json encoded array of floats
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
userid: Userid identifying the user
|
userid: Userid identifying the user
|
||||||
current_session: Session sent with Authorization Header
|
current_session: Session sent with Authorization Header
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
JSON object containing the limit (or Null if no limit set) or HTTP error
|
GET: JSON object containing the shortcuts as float array or HTTP error
|
||||||
|
PUT: HTTP-created or HTTP error
|
||||||
"""
|
"""
|
||||||
if userid != current_session._user.userid:
|
if userid != current_session._user.userid:
|
||||||
raise Forbidden
|
raise Forbidden
|
||||||
|
|
||||||
user = userController.get_user(userid)
|
user = userController.get_user(userid)
|
||||||
return jsonify(user.get_attribute("balance_shortcuts", []))
|
if request.method == "GET":
|
||||||
|
return jsonify(user.get_attribute("balance_shortcuts", []))
|
||||||
|
else:
|
||||||
|
data = request.get_json()
|
||||||
|
if not isinstance(data, list) or all(isinstance(n, int) for n in data):
|
||||||
|
raise BadRequest
|
||||||
|
user.set_attribute("balance_shortcuts", data)
|
||||||
|
userController.persist()
|
||||||
|
return no_content()
|
||||||
|
|
||||||
|
|
||||||
@balance_bp.route("/users/<userid>/balance/limit", methods=["GET"])
|
@balance_bp.route("/users/<userid>/balance/limit", methods=["GET"])
|
||||||
@login_required()
|
@login_required()
|
||||||
def get_limit(userid, current_session: Session):
|
def get_limit(userid, current_session: Session):
|
||||||
"""Get set limit of an user
|
"""Get limit of an user
|
||||||
|
|
||||||
Route: ``/users/<userid>/balance/limit`` | Method: ``GET``
|
Route: ``/users/<userid>/balance/limit`` | Method: ``GET``
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue