def post(self): request = reqparse.RequestParser() \ .add_argument('balanceId', type=int, required=True) \ .add_argument('amount', type=float, required=True) \ .add_argument('description', required=True) \ .add_argument('budgetId', type=int, required=True) \ .parse_args() user_id = get_jwt_identity() if request['balanceId'] not in list( map(lambda b: b.id, User.find_by_id(user_id).balances)): return resp_util.access_denied() if request['budgetId'] not in list( map(lambda b: b.id, User.find_by_id(user_id).budgets)): return resp_util.access_denied() Transaction(balance_id=request['balanceId'], user_id=user_id, budget_id=request['budgetId'], amount=request['amount'], datetime=datetime.now(), description=request['description']).save_to_db()
def get(self): request = reqparse.RequestParser() \ .add_argument('dateFrom', type=int, required=True) \ .add_argument('dateTo', type=int, required=True) \ .parse_args() balances = User.find_by_id(get_jwt_identity()).balances def fold(b: Budget): income = 0 outcome = 0 for t in b.transactions: transaction_unix = int(time.mktime(t.datetime.timetuple())) if not request['dateFrom'] < transaction_unix < request[ 'dateTo']: continue if t.amount >= 0: income += t.amount else: outcome += abs(t.amount) return { 'name': b.name, 'currency': b.currency, 'income': float(income), 'outcome': float(outcome), } return list(map(fold, balances))
def post(self): request = reqparse.RequestParser() \ .add_argument('balanceId', type=int, required=True) \ .add_argument('amount', type=float, required=True) \ .add_argument('goalId', type=int, required=True) \ .parse_args() user_id = get_jwt_identity() if request['goalId'] not in list( map(lambda b: b.id, User.find_by_id(user_id).goals)): return resp_util.access_denied() if request['balanceId'] not in list( map(lambda b: b.id, User.find_by_id(user_id).balances)): return resp_util.access_denied() if request['amount'] <= 0: return resp_util.invalid_request() goal = Goal.find_by_id(request['goalId']) balance = Balance.find_by_id(request['balanceId']) if goal.currency != balance.currency: return {'message': 'Currencies doesn\'t match'}, 500 t1 = Transaction(balance_id=request['balanceId'], user_id=user_id, amount=-request['amount'], datetime=datetime.now(), description='filling the goal: ' + str(goal.id)) t2 = Transaction(balance_id=goal.balance_id, user_id=user_id, amount=request['amount'], datetime=datetime.now(), description='filling the goal: ' + str(goal.id)) Transaction.save_to_db_in_session(t1, t2)
def get(self): request = reqparse.RequestParser() \ .add_argument('id', type=int) \ .add_argument('currency') \ .parse_args() if request['id'] is None: balances = list( filter(lambda b: b.system is False, User.find_by_id(get_jwt_identity()).balances)) return ser_util.serialize_balances(balances) if not request['currency'] \ else ser_util.serialize_balances(list(filter(lambda b: b.currency == request['currency'], balances))) if request['id'] <= 0: return resp_util.invalid_request('Given id isn\'t valid') balance = Balance.find_by_user_id(get_jwt_identity(), request['id']) if not balance or balance.system is True: return resp_util.not_found() return ser_util.serialize_balance(balance)
def get(self): id = reqparse.RequestParser() \ .add_argument('id', type=int) \ .parse_args()['id'] if id is None: response = [] for goal in User.find_by_id(get_jwt_identity()).goals: response.append( ser_util.serialize_goal( goal, Balance.actual_balance(goal.balance_id))) return response if id <= 0: return resp_util.invalid_request('Given id isn\'t valid') goal = Goal.find_by_user_id(get_jwt_identity(), id) if not goal: return resp_util.not_found() return ser_util.serialize_goal(goal, Balance.actual_balance(goal.balance_id))
def get(self): id = reqparse.RequestParser() \ .add_argument('id', type=int) \ .parse_args()['id'] if id is None: response = [] for budget in User.find_by_id(get_jwt_identity()).budgets: response.append( ser_util.serialize_budget( budget, calculate_budget_current_amount(budget))) return response if id <= 0: return resp_util.invalid_request('Given id isn\'t valid') budget = Budget.find_by_user_id(get_jwt_identity(), id) if not budget: return resp_util.not_found() return ser_util.serialize_budget( budget, calculate_budget_current_amount(budget))