__author__ = "Florian Kaiser" __copyright__ = "Copyright 2022, Project Aktienbot" __credits__ = ["Florian Kaiser", "Florian Kellermann", "Linus Eickhof", "Kevin Pauer"] __license__ = "GPL 3.0" __version__ = "1.0.0" from apiflask import APIFlask from app.blueprints.keyword import keyword_blueprint from app.blueprints.portfolio import portfolio_blueprint from app.blueprints.share_price import share_price_blueprint from app.blueprints.shares import shares_blueprint from app.blueprints.telegram import telegram_blueprint from app.blueprints.transactions import transaction_blueprint from app.blueprints.user import users_blueprint from app.helper_functions import hash_password from app.models import * from dotenv import load_dotenv from flask import current_app from flask_cors import CORS def create_app(config_filename=None): load_dotenv() # Create Flask app load app.config application = APIFlask(__name__, openapi_blueprint_url_prefix='/api') application.config.from_pyfile(config_filename) CORS(application, resources={r"*": {"origins": "*"}}) db.init_app(application) # api blueprints application.register_blueprint(keyword_blueprint) application.register_blueprint(shares_blueprint) application.register_blueprint(share_price_blueprint) application.register_blueprint(transaction_blueprint) application.register_blueprint(portfolio_blueprint) application.register_blueprint(users_blueprint) application.register_blueprint(telegram_blueprint) @application.before_first_request def init_database(): db.create_all() if current_app.config['BOT_EMAIL'] is not None and current_app.config['BOT_USERNAME'] is not None and current_app.config['BOT_PASSWORD'] is not None: if db.session.query(User).filter_by(email=current_app.config['BOT_EMAIL']).first() is None: # Check if user already exist bot = User( email=current_app.config['BOT_EMAIL'], username=current_app.config['BOT_USERNAME'], password=hash_password(current_app.config['BOT_PASSWORD']), admin=False ) db.session.add(bot) db.session.commit() if current_app.config['ADMIN_EMAIL'] is not None and current_app.config['ADMIN_USERNAME'] is not None and current_app.config['ADMIN_PASSWORD'] is not None: if db.session.query(User).filter_by(email=current_app.config['ADMIN_EMAIL']).first() is None: # Check if user already exist admin = User( email=current_app.config['ADMIN_EMAIL'], username=current_app.config['ADMIN_USERNAME'], password=hash_password(current_app.config['ADMIN_PASSWORD']), admin=True ) db.session.add(admin) db.session.commit() return application app = create_app("config/flask.cfg")