2022-04-12 07:50:24 +00:00
|
|
|
__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"
|
|
|
|
|
2022-03-30 08:46:54 +00:00
|
|
|
from apiflask import APIFlask
|
|
|
|
from app.blueprints.keyword import keyword_blueprint
|
|
|
|
from app.blueprints.portfolio import portfolio_blueprint
|
2022-04-05 13:08:57 +00:00
|
|
|
from app.blueprints.share_price import share_price_blueprint
|
2022-05-11 21:33:48 +00:00
|
|
|
from app.blueprints.shares import shares_blueprint
|
2022-03-30 08:46:54 +00:00
|
|
|
from app.blueprints.telegram import telegram_blueprint
|
2022-05-11 21:33:48 +00:00
|
|
|
from app.blueprints.transactions import transaction_blueprint
|
2022-03-30 08:46:54 +00:00
|
|
|
from app.blueprints.user import users_blueprint
|
|
|
|
from app.helper_functions import hash_password
|
|
|
|
from app.models import *
|
2022-05-11 21:33:48 +00:00
|
|
|
from dotenv import load_dotenv
|
|
|
|
from flask import current_app
|
|
|
|
from flask_cors import CORS
|
2022-03-30 08:46:54 +00:00
|
|
|
|
|
|
|
|
|
|
|
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)
|
2022-04-05 13:08:57 +00:00
|
|
|
application.register_blueprint(share_price_blueprint)
|
2022-03-30 08:46:54 +00:00
|
|
|
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")
|