import os from flask import Blueprint, jsonify, request from webservice.db import db from webservice.helper_functions import get_username_from_token_data, extract_token_data, get_token, get_user_id_from_username from webservice.models import Keyword keyword_blueprint = Blueprint('keyword', __name__, url_prefix='/api') __location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__))) @keyword_blueprint.route('/keyword', methods=['POST']) def add_keyword(): request_data = request.get_json() key = request_data['keyword'] # get username from jwt token username = get_username_from_token_data(extract_token_data(get_token())) check_keyword = db.session.query(Keyword).filter_by(keyword=key, user_id=get_user_id_from_username(username)).first() if check_keyword is None: # Keyword doesn't exist yet for this user new_keyword = Keyword( user_id=get_user_id_from_username(username), keyword=key ) db.session.add(new_keyword) db.session.commit() return jsonify({"status": 200, "text": "Successfully added keyword", "data": new_keyword.as_dict()}) else: return jsonify({"status": 500, "text": "Keyword already exist for this user"}) @keyword_blueprint.route('/keyword', methods=['DELETE']) def remove_keyword(): request_data = request.get_json() key = request_data['keyword'] # get username from jwt token username = get_username_from_token_data(extract_token_data(get_token())) db.session.query(Keyword).filter_by(keyword=key, user_id=get_user_id_from_username(username)).delete() db.session.commit() return jsonify({"status": 200, "text": "Successfully removed keyword"}) @keyword_blueprint.route('/keywords', methods=['GET']) def get_keywords(): # get username from jwt token username = get_username_from_token_data(extract_token_data(get_token())) return_keywords = [] keywords = db.session.query(Keyword).filter_by(user_id=get_user_id_from_username(username)).all() if keywords is not None: for row in keywords: return_keywords.append(row.as_dict()) return jsonify({"status": 200, "text": "Successfully loaded keywords", "data": return_keywords})