1
0
mirror of https://github.com/Mailu/Mailu.git synced 2024-12-20 20:22:38 +02:00
Mailu/core/admin/mailu/__init__.py

63 lines
1.8 KiB
Python
Raw Normal View History

""" Mailu admin app
"""
2016-06-25 12:57:47 +02:00
import flask
import flask_bootstrap
2016-02-20 14:57:26 +02:00
2018-11-08 22:29:30 +02:00
from mailu import utils, debug, models, manage, configuration
2021-02-07 18:58:19 +02:00
import hmac
def create_app_from_config(config):
""" Create a new application based on the given configuration
"""
app = flask.Flask(__name__)
2018-11-08 22:29:30 +02:00
app.cli.add_command(manage.mailu)
# Bootstrap is used for basic JS and CSS loading
# TODO: remove this and use statically generated assets instead
app.bootstrap = flask_bootstrap.Bootstrap(app)
# Initialize application extensions
2018-10-18 17:55:07 +02:00
config.init_app(app)
models.db.init_app(app)
utils.session.init_app(app)
utils.limiter.init_app(app)
utils.babel.init_app(app)
utils.login.init_app(app)
2018-11-08 21:29:52 +02:00
utils.login.user_loader(models.User.get)
utils.proxy.init_app(app)
2018-11-08 21:29:52 +02:00
utils.migrate.init_app(app, models.db)
2021-02-07 18:58:19 +02:00
app.temp_token_key = hmac.new(bytearray(app.secret_key, 'utf-8'), bytearray('WEBMAIL_TEMP_TOKEN_KEY', 'utf-8'), 'sha256').digest()
# Initialize debugging tools
2018-10-18 17:55:07 +02:00
if app.config.get("DEBUG"):
debug.toolbar.init_app(app)
2018-10-18 17:55:07 +02:00
# TODO: add a specific configuration variable for profiling
# debug.profiler.init_app(app)
# Inject the default variables in the Jinja parser
2018-10-18 17:55:07 +02:00
# TODO: move this to blueprints when needed
@app.context_processor
def inject_defaults():
signup_domains = models.Domain.query.filter_by(signup_enabled=True).all()
return dict(
signup_domains=signup_domains,
config=app.config
)
# Import views
from mailu import ui, internal
app.register_blueprint(ui.ui, url_prefix='/ui')
app.register_blueprint(internal.internal, url_prefix='/internal')
return app
def create_app():
""" Create a new application based on the config module
"""
config = configuration.ConfigManager()
return create_app_from_config(config)