Compare commits
6 Commits
06b38b8231
...
a094edf6cd
Author | SHA1 | Date |
---|---|---|
Ferdinand Thiessen | a094edf6cd | |
Ferdinand Thiessen | 2dc511db11 | |
Ferdinand Thiessen | 459b61aa70 | |
Ferdinand Thiessen | cadde543f2 | |
Tim Gröger | 4e46ea1ca3 | |
Tim Gröger | 0d1a39f217 |
|
@ -54,6 +54,8 @@ def __load_plugins(app):
|
||||||
logger.error(
|
logger.error(
|
||||||
f"Plugin {entry_point.name} was enabled, but could not be loaded due to an error.", exc_info=True
|
f"Plugin {entry_point.name} was enabled, but could not be loaded due to an error.", exc_info=True
|
||||||
)
|
)
|
||||||
|
del plugin
|
||||||
|
continue
|
||||||
if isinstance(plugin, AuthPlugin):
|
if isinstance(plugin, AuthPlugin):
|
||||||
logger.debug(f"Found authentication plugin: {entry_point.name}")
|
logger.debug(f"Found authentication plugin: {entry_point.name}")
|
||||||
if entry_point.name == config["FLASCHENGEIST"]["auth"]:
|
if entry_point.name == config["FLASCHENGEIST"]["auth"]:
|
||||||
|
@ -65,6 +67,7 @@ def __load_plugins(app):
|
||||||
app.config["FG_PLUGINS"][entry_point.name] = plugin
|
app.config["FG_PLUGINS"][entry_point.name] = plugin
|
||||||
if "FG_AUTH_BACKEND" not in app.config:
|
if "FG_AUTH_BACKEND" not in app.config:
|
||||||
logger.error("No authentication plugin configured or authentication plugin not found")
|
logger.error("No authentication plugin configured or authentication plugin not found")
|
||||||
|
raise RuntimeError("No authentication plugin configured or authentication plugin not found")
|
||||||
|
|
||||||
|
|
||||||
def install_all():
|
def install_all():
|
||||||
|
|
|
@ -113,7 +113,9 @@ def get_transaction(transaction_id) -> Transaction:
|
||||||
return transaction
|
return transaction
|
||||||
|
|
||||||
|
|
||||||
def get_transactions(user, start=None, end=None, limit=None, offset=None, show_reversal=False, show_cancelled=True):
|
def get_transactions(
|
||||||
|
user, start=None, end=None, limit=None, offset=None, show_reversal=False, show_cancelled=True, descending=False
|
||||||
|
):
|
||||||
count = None
|
count = None
|
||||||
query = Transaction.query.filter((Transaction.sender_ == user) | (Transaction.receiver_ == user))
|
query = Transaction.query.filter((Transaction.sender_ == user) | (Transaction.receiver_ == user))
|
||||||
if start:
|
if start:
|
||||||
|
@ -125,7 +127,10 @@ def get_transactions(user, start=None, end=None, limit=None, offset=None, show_r
|
||||||
query = query.filter(Transaction.original_ == None)
|
query = query.filter(Transaction.original_ == None)
|
||||||
if not show_cancelled:
|
if not show_cancelled:
|
||||||
query = query.filter(Transaction.reversal_id.is_(None))
|
query = query.filter(Transaction.reversal_id.is_(None))
|
||||||
query = query.order_by(Transaction.time)
|
if descending:
|
||||||
|
query = query.order_by(Transaction.time.desc())
|
||||||
|
else:
|
||||||
|
query = query.order_by(Transaction.time)
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
count = query.count()
|
count = query.count()
|
||||||
query = query.limit(limit)
|
query = query.limit(limit)
|
||||||
|
|
|
@ -99,6 +99,32 @@ def set_limit(userid, current_session: Session):
|
||||||
return HTTP.no_content()
|
return HTTP.no_content()
|
||||||
|
|
||||||
|
|
||||||
|
@BalancePlugin.blueprint.route("/users/balance/limit", methods=["GET", "PUT"])
|
||||||
|
@login_required(permission=permissions.SET_LIMIT)
|
||||||
|
def limits(current_session: Session):
|
||||||
|
"""Get, Modify limit of all users
|
||||||
|
|
||||||
|
Args:
|
||||||
|
current_ession: Session sent with Authorization Header
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
JSON encoded array of userid with limit or HTTP-error
|
||||||
|
"""
|
||||||
|
|
||||||
|
users = userController.get_users()
|
||||||
|
if request.method == "GET":
|
||||||
|
return jsonify([{"userid": user.userid, "limit": user.get_attribute("balance_limit")} for user in users])
|
||||||
|
|
||||||
|
data = request.get_json()
|
||||||
|
try:
|
||||||
|
limit = data["limit"]
|
||||||
|
except (TypeError, KeyError):
|
||||||
|
raise BadRequest
|
||||||
|
for user in users:
|
||||||
|
balance_controller.set_limit(user, limit)
|
||||||
|
return HTTP.no_content()
|
||||||
|
|
||||||
|
|
||||||
@BalancePlugin.blueprint.route("/users/<userid>/balance", methods=["GET"])
|
@BalancePlugin.blueprint.route("/users/<userid>/balance", methods=["GET"])
|
||||||
@login_required(permission=permissions.SHOW)
|
@login_required(permission=permissions.SHOW)
|
||||||
def get_balance(userid, current_session: Session):
|
def get_balance(userid, current_session: Session):
|
||||||
|
@ -170,6 +196,7 @@ def get_transactions(userid, current_session: Session):
|
||||||
show_cancelled = request.args.get("showCancelled", True)
|
show_cancelled = request.args.get("showCancelled", True)
|
||||||
limit = request.args.get("limit")
|
limit = request.args.get("limit")
|
||||||
offset = request.args.get("offset")
|
offset = request.args.get("offset")
|
||||||
|
descending = request.args.get("descending", False)
|
||||||
try:
|
try:
|
||||||
if limit is not None:
|
if limit is not None:
|
||||||
limit = int(limit)
|
limit = int(limit)
|
||||||
|
@ -179,11 +206,20 @@ def get_transactions(userid, current_session: Session):
|
||||||
show_reversals = str2bool(show_reversals)
|
show_reversals = str2bool(show_reversals)
|
||||||
if not isinstance(show_cancelled, bool):
|
if not isinstance(show_cancelled, bool):
|
||||||
show_cancelled = str2bool(show_cancelled)
|
show_cancelled = str2bool(show_cancelled)
|
||||||
|
if not isinstance(descending, bool):
|
||||||
|
descending = str2bool(descending)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
raise BadRequest
|
raise BadRequest
|
||||||
|
|
||||||
transactions, count = balance_controller.get_transactions(
|
transactions, count = balance_controller.get_transactions(
|
||||||
user, start, end, limit, offset, show_reversal=show_reversals, show_cancelled=show_cancelled
|
user,
|
||||||
|
start,
|
||||||
|
end,
|
||||||
|
limit,
|
||||||
|
offset,
|
||||||
|
show_reversal=show_reversals,
|
||||||
|
show_cancelled=show_cancelled,
|
||||||
|
descending=descending,
|
||||||
)
|
)
|
||||||
return {"transactions": transactions, "count": count}
|
return {"transactions": transactions, "count": count}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue