def init_app(app, **kwargs): """Initialize the Flask app located in the module sipa. This initializes the Flask app by: * calling the internal init_app() procedures of each module * registering the Blueprints * registering the Jinja global variables :return: None """ load_config_file(app, config=kwargs.pop('config', None)) app.wsgi_app = ProxyFix(app.wsgi_app, app.config['NUM_PROXIES']) init_logging(app) init_env_and_config(app) logger.debug('Initializing app') login_manager.init_app(app) babel = Babel() babel.init_app(app) babel.localeselector(select_locale) app.before_request(save_user_locale_setting) app.session_interface = SeparateLocaleCookieSessionInterface() cf_pages = CategorizedFlatPages() cf_pages.init_app(app) backends = build_backends_ext() backends.init_app(app) QRcode(app) app.url_map.converters['int'] = IntegerConverter from sipa.blueprints import bp_features, bp_usersuite, \ bp_pages, bp_documents, bp_news, bp_generic, bp_hooks logger.debug('Registering blueprints') app.register_blueprint(bp_generic) app.register_blueprint(bp_features) app.register_blueprint(bp_usersuite) app.register_blueprint(bp_pages) app.register_blueprint(bp_documents) app.register_blueprint(bp_news) app.register_blueprint(bp_hooks) logger.debug('Registering Jinja globals') form_label_width = 3 form_input_width = 7 app.jinja_env.globals.update( cf_pages=cf_pages, get_locale=get_locale, get_weekday=get_weekday, possible_locales=possible_locales, get_attribute_endpoint=get_attribute_endpoint, should_display_traffic_data=should_display_traffic_data, traffic_chart=provide_render_function(generate_traffic_chart), current_datasource=backends.current_datasource, form_label_width_class="col-sm-{}".format(form_label_width), form_input_width_class="col-sm-{}".format(form_input_width), form_input_offset_class="col-sm-offset-{}".format(form_label_width), url_self=url_self, ) logger.debug("Jinja globals have been set", extra={'data': {'jinja_globals': app.jinja_env.globals}}) backends.init_backends()
def create_app(): app = Flask(__name__) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False from docassemble.base.config import daconfig import docassemble.webapp.database import docassemble.webapp.db_object connect_string = docassemble.webapp.database.connection_string() alchemy_connect_string = docassemble.webapp.database.alchemy_connection_string() app.config['SQLALCHEMY_DATABASE_URI'] = alchemy_connect_string app.secret_key = daconfig.get('secretkey', '38ihfiFehfoU34mcq_4clirglw3g4o87') app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = docassemble.webapp.db_object.init_flask() db.init_app(app) csrf = CSRFProtect() csrf.init_app(app) babel = Babel() babel.init_app(app) if daconfig.get('behind https load balancer', False): if proxyfix_version >= 15: app.wsgi_app = ProxyFix(app.wsgi_app, x_proto=1, x_host=1) else: app.wsgi_app = ProxyFix(app.wsgi_app) return app, csrf, babel
class TCC3Babel(object): DEFAULT_LOCALE = 'zh_Hans_CN' def __init__(self, app=None): self._locale = TCC3Babel.DEFAULT_LOCALE self.babel = Babel() if app is not None: self.init_app(app) def init_app(self, app): """:type app : Flask""" self.babel.init_app(app) self.babel.localeselector(TCC3Babel.get_locale) def set_locale(self, locale=DEFAULT_LOCALE): self._locale = locale # TODO @classmethod def get_locale(cls): locale = request.accept_languages.best_match(LANGUAGES.keys()) print('locale: ', locale) return locale
# retrieve configuration from environment Settings(app, rules={ "BABEL_DEFAULT_LOCALE": (str, "en_US"), "SQLALCHEMY_DATABASE_URI": str, "BASIC_AUTH_USERNAME": str, "BASIC_AUTH_PASSWORD": str, "SECRET_KEY": str, "DEBUG": (bool, False), }) babel = Babel() app.jinja_env.add_extension('pyjade.ext.jinja.PyJadeExtension') app.jinja_env.globals['_'] = _ babel.init_app(app) all_locales = babel.list_translations() + [Locale('en', 'US')] @babel.localeselector def get_locale(): # Try to retrieve locale from query strings. locale = request.args.get('locale', None) if locale is not None: session["locale"] = locale return locale locale = session.get('locale', None) if locale is not None: return locale
from flask_migrate import Migrate from dash import Dash from dash.dependencies import Input, State, Output import dash_core_components as dcc import dash_html_components as html from elasticsearch import Elasticsearch from flask_babel import Babel, lazy_gettext as _l import json import plotly import pandas as pd import numpy as np AppServer = Flask(__name__) AppServer.config.from_object(Config) db = SQLAlchemy(AppServer) babel = Babel() babel.init_app(AppServer) db.init_app(AppServer) AppServer.elasticsearch = Elasticsearch([AppServer.config['ELASTICSEARCH_URL']]) \ if AppServer.config['ELASTICSEARCH_URL'] else None migrate = Migrate(AppServer, db) from app import routes, models #@AppServer.route('/', methods=['GET', 'POST']) #@AppServer.route('/index', methods=['GET', 'POST']) #def index(): #return render_template('visualization.html')
app = dash.Dash(__name__, **app_kwargs) app.css.config.serve_locally = True app.scripts.config.serve_locally = True app.title = 'REINA — Realistic Epidemic Model for COVID-19' server = app.server with server.app_context(): server.config.from_object('common.settings') server.config['BABEL_TRANSLATION_DIRECTORIES'] = 'locale' cache.init_app(server) sess = Session() sess.init_app(server) babel = Babel(default_locale='fi') babel.init_app(server) init_locale(babel) register_results_callbacks(app) register_params_callbacks(app) def generate_static_content(): f = open( os.path.join(os.path.dirname(__file__), 'Docs', 'description.en.md')) return dcc.Markdown(children=f.read()) def interventions_to_rows(): ivs = get_variable('interventions') iv_rows = [] for iv in sorted(ivs, key=lambda x: x[1]):