80 lines
2.1 KiB
Python
80 lines
2.1 KiB
Python
import logging
|
|
import os
|
|
from flask import Flask
|
|
from flask_security import SQLAlchemyUserDatastore
|
|
from werkzeug.middleware.proxy_fix import ProxyFix
|
|
import logging.config
|
|
|
|
from .extensions import db, migrate, bootstrap, security, mail, login_manager
|
|
from .models.user import User, Tenant, Role
|
|
from .models.document import Document, DocumentLanguage, DocumentVersion
|
|
from .logging_config import LOGGING
|
|
# from .context_processors import inject_user
|
|
|
|
# Create app
|
|
|
|
|
|
def create_app(config_file=None):
|
|
app = Flask(__name__)
|
|
app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1)
|
|
|
|
if config_file is None:
|
|
app.config.from_object('config.DevConfig')
|
|
else:
|
|
app.config.from_object(config_file)
|
|
|
|
try:
|
|
os.makedirs(app.instance_path)
|
|
except OSError:
|
|
pass
|
|
|
|
logging.config.dictConfig(LOGGING)
|
|
register_extensions(app)
|
|
# Setup Flask-Security-Too
|
|
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
|
|
security.init_app(app, user_datastore)
|
|
|
|
# app.context_processor(inject_user)
|
|
|
|
# Register Blueprints
|
|
register_blueprints(app)
|
|
|
|
if app.config['DEBUG'] is True:
|
|
app.logger.setLevel(logging.DEBUG)
|
|
mail_logger = logging.getLogger('flask_mailman')
|
|
mail_logger.setLevel(logging.DEBUG)
|
|
security_logger = logging.getLogger('flask_security')
|
|
security_logger.setLevel(logging.DEBUG)
|
|
# with app.app_context():
|
|
# mail.send_mail(
|
|
# subject="Dit is een debugging test",
|
|
# message="Die wordt enkel verzonden als de app in debug mode staat",
|
|
# from_email="eveai_super@flow-it.net",
|
|
# recipient_list=["eveai_super@flow-it.net"],
|
|
# )
|
|
|
|
# Register API
|
|
register_api(app)
|
|
|
|
return app
|
|
|
|
|
|
def register_extensions(app):
|
|
db.init_app(app)
|
|
migrate.init_app(app, db)
|
|
bootstrap.init_app(app)
|
|
mail.init_app(app)
|
|
login_manager.init_app(app)
|
|
|
|
|
|
# Register Blueprints
|
|
def register_blueprints(app):
|
|
from .views.user_views import user_bp
|
|
app.register_blueprint(user_bp)
|
|
|
|
|
|
def register_api(app):
|
|
pass
|
|
# from . import api
|
|
# app.register_blueprint(api.bp, url_prefix='/api')
|