import os import datetime from flask import Blueprint, jsonify, request from db import db from helper_functions import get_username_from_token_data, extract_token_data, get_token, get_user_id_from_username, return_401 from models import Transaction transaction_blueprint = Blueprint('transaction', __name__, url_prefix='/api') __location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__))) @transaction_blueprint.route('/transaction', methods=['POST']) def add_transaction(): # get username from jwt token username = get_username_from_token_data(extract_token_data(get_token())) if username is None: # If token not provided or invalid -> return 401 code return return_401() request_data = request.get_json() symbol = request_data['symbol'] time = datetime.datetime.strptime(request_data['time'], '%Y-%m-%dT%H:%M:%S.%fZ') count = request_data['count'] price = request_data['price'] new_transcation = Transaction( user_id=get_user_id_from_username(username), symbol=symbol, time=time, count=count, price=price ) db.session.add(new_transcation) db.session.commit() return jsonify({"status": 200, "text": "Successfully added transaction", "data": new_transcation.as_dict()}) @transaction_blueprint.route('/transactions', methods=['GET']) def get_transaction(): # get username from jwt token username = get_username_from_token_data(extract_token_data(get_token())) if username is None: # If token not provided or invalid -> return 401 code return return_401() return_transactions = [] transactions = db.session.query(Transaction).filter_by(user_id=get_user_id_from_username(username)).all() if transactions is not None: for row in transactions: return_transactions.append(row.as_dict()) return jsonify({"status": 200, "text": "Successfully loaded transactions", "data": return_transactions})