feature/balance #13
			
				
			
		
		
		
	|  | @ -113,7 +113,9 @@ def get_transaction(transaction_id) -> 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 | ||||
|     query = Transaction.query.filter((Transaction.sender_ == user) | (Transaction.receiver_ == user)) | ||||
|     if start: | ||||
|  | @ -125,6 +127,9 @@ def get_transactions(user, start=None, end=None, limit=None, offset=None, show_r | |||
|         query = query.filter(Transaction.original_ == None) | ||||
|     if not show_cancelled: | ||||
|         query = query.filter(Transaction.reversal_id.is_(None)) | ||||
|     if descending: | ||||
|         query = query.order_by(Transaction.time.desc()) | ||||
|     else: | ||||
|         query = query.order_by(Transaction.time) | ||||
|     if limit is not None: | ||||
|         count = query.count() | ||||
|  |  | |||
|  | @ -99,6 +99,32 @@ def set_limit(userid, current_session: Session): | |||
|     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"]) | ||||
| @login_required(permission=permissions.SHOW) | ||||
| 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) | ||||
|     limit = request.args.get("limit") | ||||
|     offset = request.args.get("offset") | ||||
|     descending = request.args.get("descending", False) | ||||
|     try: | ||||
|         if limit is not None: | ||||
|             limit = int(limit) | ||||
|  | @ -179,11 +206,20 @@ def get_transactions(userid, current_session: Session): | |||
|             show_reversals = str2bool(show_reversals) | ||||
|         if not isinstance(show_cancelled, bool): | ||||
|             show_cancelled = str2bool(show_cancelled) | ||||
|         if not isinstance(descending, bool): | ||||
|             descending = str2bool(descending) | ||||
|     except ValueError: | ||||
|         raise BadRequest | ||||
| 
 | ||||
|     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} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	
Not sure how I think about that API.
Not a friend of multiple API endpoints for quite the same task (changing the limit of an user).
But on the other hand the current enpoint requires you to send N requests (for N users)...