import os 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 Share shares_blueprint = Blueprint('share', __name__, url_prefix='/api') __location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__))) @shares_blueprint.route('/share', methods=['POST']) def add_symbol(): # 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'] check_share = db.session.query(Share).filter_by(symbol=symbol, user_id=get_user_id_from_username(username)).first() if check_share is None: # Keyword doesn't exist yet for this user new_symbol = Share( user_id=get_user_id_from_username(username), symbol=symbol ) db.session.add(new_symbol) db.session.commit() return jsonify({"status": 200, "text": "Successfully added symbol", "data": new_symbol.as_dict()}) else: return jsonify({"status": 500, "text": "Symbol already exist for this user"}) @shares_blueprint.route('/share', methods=['DELETE']) def remove_symbol(): # 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'] db.session.query(Share).filter_by(symbol=symbol, user_id=get_user_id_from_username(username)).delete() db.session.commit() return jsonify({"status": 200, "text": "Successfully removed symbol"}) @shares_blueprint.route('/shares', methods=['GET']) def get_symbol(): # 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_symbols = [] symbols = db.session.query(Share).filter_by(user_id=get_user_id_from_username(username)).all() if symbols is not None: for row in symbols: return_symbols.append(row.as_dict()) return jsonify({"status": 200, "text": "Successfully loaded symbols", "data": return_symbols})