Пример #1
0
def create_app(config_name):
    # app
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    # database
    db.init_app(app)
    db.app = app

    migrate.init_app(app, db)

    # cache
    from app.cache import CachingConfig, cache
    app.config.from_object(CachingConfig)
    cache.init_app(app)

    # 国际化
    babel.init_app(app)

    # flask-admin
    admin.init_app(app)
    admin.name = app.config.get("APP_NAME")

    # flask-user
    from app.models import User
    from app.flask_user_custom import FlaskUserConfig
    app.config.from_object(FlaskUserConfig)  # 添加 FlaskUserConfig 配置
    app.config["USER_APP_NAME"] = app.config.get("APP_NAME")
    user_manager.init_app(app, db, User)

    # toolbar
    # toolbar.init_app(app)

    # jinja2 env
    from app.jinja2_env import init_jinja2_env
    init_jinja2_env(app)

    # views
    from app.views import views
    app.register_blueprint(views)

    # error pages
    # from app.errors import init_errors_page
    # init_errors_page(app)
    amdin_index_view.init_errors_page(app)

    # apis
    from app.apis import api
    app.register_blueprint(api, url_prefix="/api/v1_0")

    from app.flask_restless_custom import api_manager
    api_manager.init_app(app, flask_sqlalchemy_db=db)
    api_manager.app = app

    # 慢查询日志
    from app.database import init_app
    init_app(app)

    return app
Пример #2
0
def create_app(config_object=config.Config):
    app = Flask(__name__, root_path=config_object.APP_PATH)
    with app.app_context():
        app.config.from_object(config_object)

        log_file_path = Path(app.config['LOG_PATH'])
        log_file_path.mkdir(parents=True, exist_ok=True)

        handler = logging.FileHandler(Path(log_file_path,
                                           app.config['LOG_FILENAME']),
                                      encoding='utf-8')
        handler.setFormatter(logging.Formatter(app.config['LOG_FORMAT']))
        app.logger.setLevel(app.config['LOG_LEVEL'])
        app.logger.addHandler(handler)

        app.jinja_env.auto_reload = True

        app.register_blueprint(home)
        app.register_blueprint(history_graph)

        app.register_error_handler(UserNotFoundException, user_not_found)
        app.register_error_handler(ValidationError, validation_error)
        app.register_error_handler(HTTPException, http_exception)
        app.register_error_handler(Exception, internal_server_error)

        cache.init_app(app)

        return app
Пример #3
0
def register_plugin(app):
    from app.models.base import db
    from app.cache import cache
    db.init_app(app)
    cache.init_app(app,app.config['CACHE_CONFIG'])
    with app.app_context():
        db.create_all()
    pass
Пример #4
0
def create_app(config="app.config.Config"):
    app = Flask(__name__)

    # Set Config
    app.config.from_object(config)

    with app.app_context():
        # Create Database(if it doesn't created)
        url = create_database()

        # Set MySQL's charset to utf8mb4 forcely
        app.config["SQLALCHEMY_DATABASE_URI"] = str(url)

        # Set Redis Session
        app.session_interface = redis.RedisSessionInterface()

        # Register Database
        db.init_app(app)

        # Create DB Session & Engine (if db is not defined, create db too.)
        db.create_all()

        # Set ReCaptcha
        if is_setup():
            app.config["RECAPTCHA_SITE_KEY"] = get_config("recaptcha_site_key")
            app.config["RECAPTCHA_SECRET_KEY"] = get_config(
                "recaptcha_secret_key")

        recaptcha.init_app(app)

        # Initialization
        init_template_globals(app)
        init_request_processors(app)

        # Cache Initialization
        cache.init_app(app)
        app.cache = cache

        from app.admin import admin
        from app.handler import page_not_found, forbidden, general_error, gateway_error, too_many_requests

        app.register_blueprint(admin)

        # Error Handler
        app.register_error_handler(403, forbidden)
        app.register_error_handler(404, page_not_found)
        app.register_error_handler(429, too_many_requests)
        app.register_error_handler(500, general_error)
        app.register_error_handler(502, gateway_error)

        return app
Пример #5
0
def create_app():
    app = Flask(__name__)
    app.config.from_object('app.config')
    app.config['CACHE_TYPE'] = 'simple'

    cors = CORS(app)

    config_db(app)
    config_ma(app)
    cache.init_app(app)

    Migrate(app, app.db)

    from app.views import bp_views
    app.register_blueprint(bp_views)

    return app
Пример #6
0
def create_app():
    app = Flask(__name__, instance_relative_config=True)
    app.wsgi_app = ProxyFix(app.wsgi_app)
    cache.init_app(app)

    app.config.from_object('app.config.Config')

    db.init_app(app)

    app.register_blueprint(blueprint)

    with app.app_context():
        # Imports
        from . import views
        # Creates a table for our model
        db.create_all()
        return app
Пример #7
0
def create_app():
    """Create Flask app."""

    app = Flask(__name__)
    config_app(app)
    login_manager = LoginManager()
    login_manager.session_protection = 'strong'
    login_manager.init_app(app)
    login_manager.login_view = 'auth.login'
    # Create user loader function
    @login_manager.user_loader
    def load_user(user_id):
        return db.session.query(User).get(user_id)

    # Register components
    # app.register_blueprint(infomation)
    # app.register_blueprint(vulner)

    # 将各个路由注册到实例上
    app.register_blueprint(aj)
    app.register_blueprint(company)
    app.register_blueprint(trend)
    app.register_blueprint(message)
    app.register_blueprint(jobtype)
    app.register_blueprint(data)
    app.register_blueprint(datalog)
    app.register_blueprint(auth)
    app.register_blueprint(recommend)
    app.register_blueprint(user_operate)
    cache.init_app(app)

    class NonASCIIJsonEncoder(json.JSONEncoder):
        def __init__(self, **kwargs):
            kwargs['ensure_ascii'] = False
            super(NonASCIIJsonEncoder, self).__init__(**kwargs)

    app.json_encoder = NonASCIIJsonEncoder

    return app
Пример #8
0
"""
import os
from flask import Flask
from flask_cors import CORS


def get_app_base_path():
    """ Get app base path. """
    return os.path.dirname(os.path.realpath(__file__))


def get_instance_folder_path():
    """ Get instance folder path. """
    return os.path.join(get_app_base_path(), 'instance')


app = Flask(__name__,
            instance_path=get_instance_folder_path())
app.config['JSON_SORT_KEYS'] = False
CORS(app)

app.config.from_pyfile('config.py')

from app.routes import bp

app.register_blueprint(bp)

from app.cache import cache

cache.init_app(app)
Пример #9
0
def create_app(env_id, env_api_key, config_name):
    """Flask application factory.

    :param config_name: Flask Configuration

    :type config_name: app.config class

    :returns: a flask application
    """
    app = Flask(__name__)
    if env_api_key:
        app.config['LD_CLIENT_KEY'] = env_api_key
        logging.info(env_api_key)
    if env_id:
        app.config['LD_FRONTEND_KEY'] = env_id
        logging.info(env_id)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)
    app = build_environment(app)
    app.ldclient = setup_ld_client(app)
    app.logger.info("APP VERSION: " + app.config['VERSION'])

    bootstrap.init_app(app)
    flask_cache_key = env_id + "-flask-"
    cache_config = {
        **app.config['CACHE_CONFIG'], 'CACHE_KEY_PREFIX': flask_cache_key
    }
    cache.init_app(app, config=cache_config)
    login.init_app(app)

    login.login_view = 'core.login'
    from app.models import AnonymousUser
    login.anonymous_user = AnonymousUser
    migrate.init_app(app, db)

    from app.routes import core
    app.register_blueprint(core)

    @app.before_request
    def setLoggingLevel():
        """Set Logging Level Based on Feature Flag

        This uses LaunchDarkly to update the logging level dynamically.
        Before each request runs, we check the current logging level and
        it does not match, we update it to the new value.

        Logging levels are integer values based on the standard Logging library
        in python: https://docs.python.org/3/library/logging.html#logging-levels

        This is an operational feature flag.
        """
        from flask import request
        logLevel = app.ldclient.variation("set-logging-level",
                                          getLdMachineUser(request),
                                          logging.INFO)

        app.logger.info("Log level is {0}".format(logLevel))

        # set app
        app.logger.setLevel(logLevel)
        # set werkzeug
        logging.getLogger('werkzeug').setLevel(logLevel)
        # set root
        logging.getLogger().setLevel(logLevel)

    return app
Пример #10
0
from flask import Flask
from flask.ext.babel import Babel
from flask_bower import Bower
from app import configurator
from app.cache import cache
from flask.ext.cors import CORS
from flask.ext.pymongo import PyMongo

app = Flask(__name__, template_folder="templates")
cors = CORS(app)
babel = Babel(app)
bower = Bower(app)
mongo = PyMongo(app)
load = configurator.get("modules")("load")
cache.init_app(app,config={'CACHE_TYPE': 'simple'})

from app import views
from flask import Flask
from flask.ext.babel import Babel
from flask_bower import Bower
from app import configurator
from app.cache import cache
from flask.ext.cors import CORS

app = Flask(__name__, template_folder="templates")
cors = CORS(app)
babel = Babel(app)
bower = Bower(app)
load = configurator.get("modules")("load")
cache.init_app(app, config={'CACHE_TYPE': 'simple'})

if "capitains-ahab" in load:
    from Ahab import ahab
    app.register_blueprint(ahab)

from joth import joth

app.register_blueprint(joth)

from app import views