PDMI/LBI_PiPy/__init__.py

76 lines
1.7 KiB
Python
Raw Normal View History

2019-04-28 18:49:02 +02:00
import mimetypes
from flask import Flask, request, session
from flask import url_for
from flask_admin import helpers as admin_helpers
from flask_babelex import Babel
from flask_security import Security, SQLAlchemyUserDatastore
from flask_uploads import patch_request_class
from LBI_PiPy.blueprints.admin import admin
from LBI_PiPy.blueprints.api import api, api_0_0_1
from LBI_PiPy.models import db, User, Role
from LBI_PiPy.views import main_bp
# Config mimetype
mimetypes.add_type('text/css', '.css')
mimetypes.add_type('text/javascript', '.js')
server = Flask(__name__)
# Load config
server.config.from_object('LBI_PiPy.config')
# Create database
db.init_app(server)
with server.app_context():
db.create_all(app=server)
# Setup Flask-security
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(server, user_datastore)
patch_request_class(server, 16 * 1024 * 1024)
# Setup babel
babel = Babel(server)
@babel.localeselector
def get_locale():
if request.args.get('lang'):
session['lang'] = request.args.get('lang')
return session.get('lang', 'fr')
@security.context_processor
def security_context_processor():
return dict(
admin_base_template=admin.base_template,
admin_view=admin.index_view,
h=admin_helpers,
get_url=url_for
)
@server.context_processor
def utility_functions():
def print_in_console(message):
print(str(message))
return dict(mdebug=print_in_console)
# Register admin
admin.init_app(server)
# Register api
api.init_app(server)
api_0_0_1.init_app(server)
# Register main blueprint
server.register_blueprint(main_bp)
if __name__ == '__main__':
server.run()