76 lines
1.7 KiB
Python
76 lines
1.7 KiB
Python
|
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()
|