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')