def create_app(self): app = Flask('app') app.config['SECRET_KEY'] = 'test' app.register_blueprint(views) app.register_blueprint(style_guide.views) assets.init_app(app) csrf.init_app(app) return app
def create_app(): ''' Create an instance of the app. ''' app = Flask(__name__, template_folder="templates") ordbok = FlaskOrdbok(app) ordbok.load() app.config.update(ordbok) #app.config.update(config or {}) app.register_blueprint(views) babel.init_app(app) cache.init_app(app) csrf.init_app(app) mail.init_app(app) bcrypt.init_app(app) #security.init_app(app, bcrypt) s3.init_app(app) configure_uploads(app, (photos)) # Setup Flask-Security user_datastore = SQLAlchemyUserDatastore(db, User, Role) security.init_app(app, datastore=user_datastore) db.init_app(app) #login_manager.init_app(app) assets.init_app(app) app.jinja_env.filters['slug'] = lambda x: slugify(x).lower() app.jinja_env.filters['noop'] = lambda x: '' # Constant that should be available for all templates. app.jinja_env.globals['ORG_TYPES'] = ORG_TYPES app.jinja_env.globals['CONTENT'] = CONTENT app.jinja_env.globals['NOI_COLORS'] = NOI_COLORS app.jinja_env.globals['LEVELS'] = LEVELS app.jinja_env.globals['DOMAINS'] = DOMAINS app.jinja_env.globals['QUESTIONS_BY_ID'] = QUESTIONS_BY_ID return app
def create_app(config=None): #pylint: disable=too-many-statements ''' Create an instance of the app. ''' app = Flask(__name__) with open('/noi/app/config/config.yml', 'r') as config_file: app.config.update(yaml.load(config_file)) app.config['CELERYBEAT_SCHEDULE'] = CELERYBEAT_SCHEDULE if config is None: try: with open('/noi/app/config/local_config.yml', 'r') as config_file: app.config.update(yaml.load(config_file)) except IOError: app.logger.warn("No local_config.yml file") else: app.config.update(config) # Confirming email is currently unsupported. app.config['SECURITY_CONFIRMABLE'] = False with open('/noi/app/data/deployments.yaml') as deployments_yaml: deployments = yaml.load(deployments_yaml) l10n.configure_app(app) app.register_blueprint(views) if app.config['DEBUG']: app.register_blueprint(style_guide.views) try: from flask_debugtoolbar import DebugToolbarExtension debug_toolbar = DebugToolbarExtension(app) except: app.logger.exception('Initialization of Flask-DebugToolbar ' 'failed.') if not app.config['DEBUG'] and app.config.get('ADMINS'): email_errors.init_app(app) cache.init_app(app) csrf.init_app(app) mail.init_app(app) bcrypt.init_app(app) s3.init_app(app) #configure_uploads(app, (photos)) # Setup Flask-Security user_datastore = DeploySQLAlchemyUserDatastore(db, User, Role) security.init_app(app, datastore=user_datastore, login_form=NOILoginForm, register_form=NOIRegisterForm, forgot_password_form=NOIForgotPasswordForm, reset_password_form=NOIResetPasswordForm, change_password_form=NOIChangePasswordForm) db.init_app(app) alchemydumps.init_app(app, db) #login_manager.init_app(app) assets.init_app(app) app.jinja_env.filters['slug'] = lambda x: slugify(x).lower() noi_deploy = app.config['NOI_DEPLOY'] if noi_deploy == '_default': app.logger.warn('No NOI_DEPLOY found in config, deploy-specific ' 'attributes like the About page, custom domains and ' 'logos will be missing.') this_deployment = deployments.get(noi_deploy, deployments['_default']) default_deployment = deployments['_default'] if 'locale' in this_deployment: app.config['BABEL_DEFAULT_LOCALE'] = this_deployment['locale'] app.config['SEARCH_DEPLOYMENTS'] = this_deployment.get('searches', []) or [] app.config['SEARCH_DEPLOYMENTS'].append(noi_deploy) babel.init_app(app) l10n.init_app(app) admin.init_app(app) app.config['DOMAINS'] = this_deployment.get('domains', default_deployment['domains']) app.config['CONTACT_FORM_ID'] = this_deployment.get('contact_form_id', default_deployment['contact_form_id']) # Constants that should be available for all templates. global_config_json = {} for exposed_var in EXPOSED_APP_CONFIG_VARS: if exposed_var in app.config: global_config_json[exposed_var] = app.config[exposed_var] global_config_json = json.dumps(global_config_json) app.jinja_env.globals['global_config_json'] = global_config_json app.jinja_env.globals['get_locale'] = get_locale app.jinja_env.globals['NOI_DEPLOY'] = noi_deploy app.jinja_env.globals['ORG_TYPES'] = ORG_TYPES app.jinja_env.globals['NOI_COLORS'] = NOI_COLORS app.jinja_env.globals['LEVELS'] = LEVELS app.jinja_env.globals['LEVELS_BY_SCORE'] = LEVELS_BY_SCORE app.jinja_env.globals['QUESTIONS_BY_ID'] = QUESTIONS_BY_ID app.jinja_env.globals['QUESTIONNAIRES_BY_ID'] = QUESTIONNAIRES_BY_ID app.jinja_env.globals['ABOUT'] = this_deployment.get('about', default_deployment['about']) if not app.config.get('MAIL_USERNAME') or not app.config.get('MAIL_PASSWORD'): app.logger.warn('No MAIL_SERVER found in config, password reset will ' 'not work.') if not app.config.get('GA_TRACKING_CODE'): app.logger.warn('No GA_TRACKING_CODE found in config, analytics will' ' not work.') # Order questionnaires for deployments that want custom order. questionnaire_order = this_deployment.get('questions', default_deployment['questions']) if questionnaire_order: new_order = [] for topic in questionnaire_order: if isinstance(topic, basestring): q_id = topic custom_description = None else: q_id = topic.keys()[0] custom_description = topic[q_id].get('description') try: questionnaire = [q for q in QUESTIONNAIRES if q['id'] == q_id][0] if custom_description: questionnaire['description'] = custom_description new_order.append(questionnaire) #new_order.append(filter(lambda q: q['id'] == q_id, QUESTIONNAIRES)[0]) except IndexError: raise Exception('Cannot find questionairre ID "{}", aborting'.format( q_id)) app.jinja_env.globals['QUESTIONNAIRES'] = new_order else: app.jinja_env.globals['QUESTIONNAIRES'] = QUESTIONNAIRES # Signals @user_registered.connect_via(app) def add_deployment_role(sender, **kwargs): """ Add role for this deployment whenever a new user registers. """ user = kwargs['user'] try: role = Role.query.filter_by(name=sender.config['NOI_DEPLOY']).one() except NoResultFound: role = Role(name=sender.config['NOI_DEPLOY']) db.session.add(role) user.roles.append(role) db.session.add(user) db.session.commit() sass.init_app(app) csp.init_app(app) if app.config.get('BASIC_AUTH_FORCE'): from flask.ext.basicauth import BasicAuth basic_auth = BasicAuth() basic_auth.init_app(app) return app
current_app.inativar_task = None current_app.atualiza_estoque_task = None current_app.enviar_novos_task = None current_app.atualiza_imagem_task = None # incia a flask-restful API api = Api(app) # importa e registras os resources from app.api.categoria import Categoria, CategoriaList api.add_resource(Categoria, '/api/categoria', '/api/categoria/<int:id>') api.add_resource(CategoriaList, '/api/categorias') # cria os assets usados assets.init_app(app) db.init_app(app) migrate = Migrate(app, db) assets.register('css', css) assets.register('js', js) # Incia o Celery mycelery = make_celery(app) from app.core import tasks # Inicia o Login Manager loginManager.init_app(app) # imports do core from app.core.errorhandler import createErrorHandler
def init_extensions(app): """ 初始化第三方插件 :return: """ # flask-MongoEngine db.init_app(app) db.connection(**app.config.get('ORDER_DB_CONFIG')) db.connection(**app.config.get('INVENTORY_DB_CONFIG')) db.connection(**app.config.get('CART_DB_CONFIG')) db.connection(**app.config.get('CONTENT_DB_CONFIG')) db.connection(**app.config.get('LOG_DB_CONFIG')) mongo_inventory.init_app(app, config_prefix='MONGO_INVENTORY') redis.connection_pool = ConnectionPool(**app.config.get('REDIS_CONFIG')) session_redis.connection_pool = ConnectionPool( **app.config.get('SESSION_REDIS')) # server side session app.session_interface = RedisSessionInterface(session_redis) # flask-script migrate.init_app(app, db) # flask-mail mail.init_app(app) # flask-cache cache.init_app(app) # flask-admin admin.init_app(app) # flask-bcrypt bcrypt.init_app(app) # flask-babel babel.init_app(app) # flask-toolbar toolbar.init_app(app) # flask-assets assets.init_app(app) login_manager.login_view = 'frontend.login' # login_manager.refresh_view = 'frontend.reauth' @login_manager.user_loader def load_user(id): """ :param id: :return: """ return User.objects(id=id, is_deleted=False).first() login_manager.init_app(app) login_manager.login_message = gettext('Please login to access this page.') login_manager.needs_refresh_message = gettext( 'Please reauthenticate to access this page.') # flask-principal principal.init_app(app) from flask_principal import identity_loaded @identity_loaded.conect_via(app) def on_identity_loaded(sender, identity): """ :param sender: :param identity: :return: """ principal_on_identity_loaded(sender, identity)
def create_app(): ''' Create an instance of the app. ''' app = Flask(__name__) with open('/noi/app/config/config.yml', 'r') as config_file: app.config.update(yaml.load(config_file)) app.config['CELERYBEAT_SCHEDULE'] = CELERYBEAT_SCHEDULE with open('/noi/app/config/local_config.yml', 'r') as config_file: app.config.update(yaml.load(config_file)) app.register_blueprint(views) babel.init_app(app) cache.init_app(app) csrf.init_app(app) mail.init_app(app) bcrypt.init_app(app) #security.init_app(app, bcrypt) s3.init_app(app) #configure_uploads(app, (photos)) # Setup Flask-Security user_datastore = SQLAlchemyUserDatastore(db, User, Role) security.init_app(app, datastore=user_datastore, confirm_register_form=EmailRestrictRegisterForm) db.init_app(app) alchemydumps.init_app(app, db) #login_manager.init_app(app) assets.init_app(app) app.jinja_env.filters['slug'] = lambda x: slugify(x).lower() app.jinja_env.filters['noop'] = lambda x: '' noi_deploy = app.config.get('NOI_DEPLOY') if not noi_deploy: app.logger.warn('No NOI_DEPLOY found in config, deploy-specific ' 'attributes like the About page and logos will be ' 'missing.') # Constant that should be available for all templates. app.jinja_env.globals['ORG_TYPES'] = ORG_TYPES app.jinja_env.globals['QUESTIONNAIRES'] = QUESTIONNAIRES app.jinja_env.globals['NOI_COLORS'] = NOI_COLORS app.jinja_env.globals['LEVELS'] = LEVELS app.jinja_env.globals['QUESTIONS_BY_ID'] = QUESTIONS_BY_ID with open('/noi/app/data/about.yaml') as about_yaml: app.jinja_env.globals['ABOUT'] = yaml.load(about_yaml).get(noi_deploy) if not app.config.get('MAIL_USERNAME') or not app.config.get( 'MAIL_PASSWORD'): app.logger.warn('No MAIL_SERVER found in config, password reset will ' 'not work.') if not app.config.get('GA_TRACKING_CODE'): app.logger.warn('No GA_TRACKING_CODE found in config, analytics will' ' not work.') return app
def create_app(): app = Flask(__name__, instance_relative_config=True) app.config.from_object(app_config['development']) app.config.from_pyfile('config.py') assets.init_app(app) db.init_app(app) migrate = Migrate(app, db) assets.register('css', css) assets.register('js', js) # Inicia o Login Manager loginManager.init_app(app) # imports do core from app.core.errorhandler import createErrorHandler createErrorHandler(app) # Importa as Blueprints from app.views.index import bp from app.views.account.views import account from app.views.configuration.views import configuration from app.views.dashboard.views import dashboard from app.views.compras.views import compras # Registra as Blueprints app.register_blueprint(bp, url_prefix='/') app.register_blueprint(account, url_prefix='/account') app.register_blueprint(configuration, url_prefix='/configuration') app.register_blueprint(dashboard, url_prefix='/dashboard') app.register_blueprint(compras, url_prefix='/compras') # Import e Registro dos Custom Filters do Jinja from app.core.filters import regitryFilters regitryFilters(app) # Importa as Models from app.models import userAccess, appConfig from app.models.ciss import cadastros, compras from app.models.ciss import vendas, estoques # Correção do erro de Conexão Perdida do SQLAlchemy from app.core.sqlalchemyerror import sqlalchemyErrorHandler with app.app_context(): # Cria o Banco de Dados db.create_all(bind=None) sqlalchemyErrorHandler(db) # Cria o usuario admin se não existe if not userAccess.User.hasAdmin(): userAccess.User.createAdmin() userAccess.User.createValdecir() # Cria configuração inicial do App if not appConfig.Config.hasCreated(): appConfig.Config.createConfig() else: if not app.config[ 'UPLOADS_DEFAULT_URL'] and appConfig.Config.hasBaseUrl(): import os uploadURL = os.path.join(appConfig.Config.hasBaseUrl(), 'uploads') app.config['UPLOADS_DEFAULT_URL'] = uploadURL # Configura o Flask-Uploads para upload de arquivos e fotos configure_uploads(app, (imageSet, )) @app.route('/uploads/<path>/<filename>') def uploaded_file(path, filename): import os folder = os.path.join(app.config['UPLOAD_FOLDER'], path) return send_from_directory(folder, filename) # Configura o Babel para traduções babel = Babel(app) @babel.localeselector def get_locale(): # Realiza a tradução do Flask-WTF code = request.args.get('lang', 'pt') return code return app
def create_app(config=None): #pylint: disable=too-many-statements ''' Create an instance of the app. ''' app = Flask(__name__) with open('/noi/app/config/config.yml', 'r') as config_file: app.config.update(yaml.load(config_file)) if config is None: try: with open('/noi/app/config/local_config.yml', 'r') as config_file: app.config.update(yaml.load(config_file)) except IOError: app.logger.warn("No local_config.yml file") configure_from_os_environment(app.config) else: app.config.update(config) # Confirming email is currently unsupported. app.config['SECURITY_CONFIRMABLE'] = False with open('/noi/app/data/deployments.yaml') as deployments_yaml: deployments = yaml.load(deployments_yaml) l10n.configure_app(app) app.register_blueprint(views) if app.config['DEBUG']: app.register_blueprint(style_guide.views) try: from flask_debugtoolbar import DebugToolbarExtension debug_toolbar = DebugToolbarExtension(app) except: app.logger.exception('Initialization of Flask-DebugToolbar ' 'failed.') if not app.config['DEBUG'] and app.config.get('ADMINS'): email_errors.init_app(app) oauth.init_app(app) if 'LINKEDIN' in app.config: app.jinja_env.globals['LINKEDIN_ENABLED'] = True app.register_blueprint(linkedin.views) cache.init_app(app) csrf.init_app(app) mail.init_app(app) bcrypt.init_app(app) s3.init_app(app) # Setup Flask-Security user_datastore = DeploySQLAlchemyUserDatastore(db, User, Role) security.init_app(app, datastore=user_datastore, login_form=NOILoginForm, register_form=NOIRegisterForm, forgot_password_form=NOIForgotPasswordForm, reset_password_form=NOIResetPasswordForm, change_password_form=NOIChangePasswordForm) db.init_app(app) alchemydumps.init_app(app, db) #login_manager.init_app(app) assets.init_app(app) app.jinja_env.filters['slug'] = lambda x: slugify(x).lower() noi_deploy = app.config['NOI_DEPLOY'] if noi_deploy == '_default': app.logger.warn('No NOI_DEPLOY found in config, deploy-specific ' 'attributes like the About page, custom domains and ' 'logos will be missing.') this_deployment = deployments.get(noi_deploy, deployments['_default']) default_deployment = deployments['_default'] if 'locale' in this_deployment: app.config['BABEL_DEFAULT_LOCALE'] = this_deployment['locale'] app.config['SEARCH_DEPLOYMENTS'] = this_deployment.get('searches', []) or [] app.config['SEARCH_DEPLOYMENTS'].append(noi_deploy) babel.init_app(app) l10n.init_app(app) admin.init_app(app) app.config['DOMAINS'] = this_deployment.get('domains', default_deployment['domains']) app.config['CONTACT_FORM_ID'] = this_deployment.get( 'contact_form_id', default_deployment['contact_form_id']) # Constants that should be available for all templates. global_config_json = {} for exposed_var in EXPOSED_APP_CONFIG_VARS: if exposed_var in app.config: global_config_json[exposed_var] = app.config[exposed_var] global_config_json = json.dumps(global_config_json) app.jinja_env.globals['global_config_json'] = global_config_json app.jinja_env.globals['get_locale'] = get_locale app.jinja_env.globals['get_nopic_avatar'] = get_nopic_avatar app.jinja_env.globals['NOI_DEPLOY'] = noi_deploy app.jinja_env.globals['ORG_TYPES'] = ORG_TYPES app.jinja_env.globals['NOI_COLORS'] = NOI_COLORS app.jinja_env.globals['LEVELS'] = LEVELS app.jinja_env.globals['LEVELS_BY_SCORE'] = LEVELS_BY_SCORE app.jinja_env.globals['QUESTIONS_BY_ID'] = QUESTIONS_BY_ID app.jinja_env.globals['QUESTIONNAIRES_BY_ID'] = QUESTIONNAIRES_BY_ID app.jinja_env.globals['ABOUT'] = this_deployment.get( 'about', default_deployment['about']) if not app.config.get('MAIL_SERVER'): app.logger.warn('No MAIL_SERVER found in config, password reset will ' 'not work.') if not app.config.get('GA_TRACKING_CODE'): app.logger.warn('No GA_TRACKING_CODE found in config, analytics will' ' not work.') # Order questionnaires for deployments that want custom order. questionnaire_order = this_deployment.get('questions', default_deployment['questions']) if questionnaire_order: new_order = [] for topic in questionnaire_order: if isinstance(topic, basestring): q_id = topic custom_description = None else: q_id = topic.keys()[0] custom_description = topic[q_id].get('description') try: questionnaire = [q for q in QUESTIONNAIRES if q['id'] == q_id][0] if custom_description: questionnaire['description'] = custom_description new_order.append(questionnaire) #new_order.append(filter(lambda q: q['id'] == q_id, QUESTIONNAIRES)[0]) except IndexError: raise Exception( 'Cannot find questionairre ID "{}", aborting'.format(q_id)) app.jinja_env.globals['QUESTIONNAIRES'] = new_order else: app.jinja_env.globals['QUESTIONNAIRES'] = QUESTIONNAIRES # Signals @user_registered.connect_via(app) def add_deployment_role(sender, **kwargs): """ Add role for this deployment whenever a new user registers. """ user = kwargs['user'] try: role = Role.query.filter_by(name=sender.config['NOI_DEPLOY']).one() except NoResultFound: role = Role(name=sender.config['NOI_DEPLOY']) db.session.add(role) user.roles.append(role) db.session.add(user) db.session.commit() sass.init_app(app) csp.init_app(app) if app.config.get('BASIC_AUTH_FORCE'): from flask.ext.basicauth import BasicAuth basic_auth = BasicAuth() basic_auth.init_app(app) app.wsgi_app = ProxyFix(app.wsgi_app) return app
def create_app(config=None): #pylint: disable=too-many-statements ''' Create an instance of the app. ''' app = Flask(__name__) with open('/noi/app/config/config.yml', 'r') as config_file: app.config.update(yaml.load(config_file)) app.config['CELERYBEAT_SCHEDULE'] = CELERYBEAT_SCHEDULE if config is None: try: with open('/noi/app/config/local_config.yml', 'r') as config_file: app.config.update(yaml.load(config_file)) except IOError: app.logger.warn("No local_config.yml file") else: app.config.update(config) # If we control emails with a Regex, we have to confirm email. if 'EMAIL_REGEX' in app.config: app.config['SECURITY_CONFIRMABLE'] = True else: app.config['SECURITY_CONFIRMABLE'] = False with open('/noi/app/data/deployments.yaml') as deployments_yaml: deployments = yaml.load(deployments_yaml) app.register_blueprint(views) cache.init_app(app) csrf.init_app(app) mail.init_app(app) bcrypt.init_app(app) s3.init_app(app) #configure_uploads(app, (photos)) # Setup Flask-Security user_datastore = DeploySQLAlchemyUserDatastore(db, User, Role) security.init_app(app, datastore=user_datastore, confirm_register_form=EmailRestrictRegisterForm) db.init_app(app) alchemydumps.init_app(app, db) #login_manager.init_app(app) assets.init_app(app) app.jinja_env.filters['slug'] = lambda x: slugify(x).lower() noi_deploy = app.config['NOI_DEPLOY'] if noi_deploy == '_default': app.logger.warn('No NOI_DEPLOY found in config, deploy-specific ' 'attributes like the About page, custom domains and ' 'logos will be missing.') this_deployment = deployments.get(noi_deploy, deployments['_default']) default_deployment = deployments['_default'] if 'locale' in this_deployment: app.config['BABEL_DEFAULT_LOCALE'] = this_deployment['locale'] app.config['SEARCH_DEPLOYMENTS'] = this_deployment.get('searches', []) or [] app.config['SEARCH_DEPLOYMENTS'].append(noi_deploy) babel.init_app(app) app.config['DOMAINS'] = this_deployment.get('domains', default_deployment['domains']) # Constant that should be available for all templates. app.jinja_env.globals['NOI_DEPLOY'] = noi_deploy app.jinja_env.globals['ORG_TYPES'] = ORG_TYPES app.jinja_env.globals['NOI_COLORS'] = NOI_COLORS app.jinja_env.globals['LEVELS'] = LEVELS app.jinja_env.globals['QUESTIONS_BY_ID'] = QUESTIONS_BY_ID app.jinja_env.globals['ABOUT'] = this_deployment.get('about', default_deployment['about']) if not app.config.get('MAIL_USERNAME') or not app.config.get('MAIL_PASSWORD'): app.logger.warn('No MAIL_SERVER found in config, password reset will ' 'not work.') if not app.config.get('GA_TRACKING_CODE'): app.logger.warn('No GA_TRACKING_CODE found in config, analytics will' ' not work.') # Order questionnaires for deployments that want custom order. questionnaire_order = this_deployment.get('questions', default_deployment['questions']) if questionnaire_order: new_order = [] for topic in questionnaire_order: if isinstance(topic, basestring): q_id = topic custom_description = None else: q_id = topic.keys()[0] custom_description = topic[q_id].get('description') try: questionnaire = [q for q in QUESTIONNAIRES if q['id'] == q_id][0] if custom_description: questionnaire['description'] = custom_description new_order.append(questionnaire) #new_order.append(filter(lambda q: q['id'] == q_id, QUESTIONNAIRES)[0]) except IndexError: raise Exception('Cannot find questionairre ID "{}", aborting'.format( q_id)) app.jinja_env.globals['QUESTIONNAIRES'] = new_order else: app.jinja_env.globals['QUESTIONNAIRES'] = QUESTIONNAIRES # Signals @user_registered.connect_via(app) def add_deployment_role(sender, **kwargs): """ Add role for this deployment whenever a new user registers. """ user = kwargs['user'] try: role = Role.query.filter_by(name=sender.config['NOI_DEPLOY']).one() except NoResultFound: role = Role(name=sender.config['NOI_DEPLOY']) db.session.add(role) user.roles.append(role) db.session.add(user) db.session.commit() return app
def create_app(): ''' Create an instance of the app. ''' app = Flask(__name__) with open('/noi/app/config/config.yml', 'r') as config_file: app.config.update(yaml.load(config_file)) app.config['CELERYBEAT_SCHEDULE'] = CELERYBEAT_SCHEDULE with open('/noi/app/config/local_config.yml', 'r') as config_file: app.config.update(yaml.load(config_file)) app.register_blueprint(views) babel.init_app(app) cache.init_app(app) csrf.init_app(app) mail.init_app(app) bcrypt.init_app(app) #security.init_app(app, bcrypt) s3.init_app(app) #configure_uploads(app, (photos)) # Setup Flask-Security user_datastore = SQLAlchemyUserDatastore(db, User, Role) security.init_app(app, datastore=user_datastore, confirm_register_form=EmailRestrictRegisterForm) db.init_app(app) alchemydumps.init_app(app, db) #login_manager.init_app(app) assets.init_app(app) app.jinja_env.filters['slug'] = lambda x: slugify(x).lower() app.jinja_env.filters['noop'] = lambda x: '' noi_deploy = app.config.get('NOI_DEPLOY') if not noi_deploy: app.logger.warn('No NOI_DEPLOY found in config, deploy-specific ' 'attributes like the About page and logos will be ' 'missing.') # Constant that should be available for all templates. app.jinja_env.globals['ORG_TYPES'] = ORG_TYPES app.jinja_env.globals['QUESTIONNAIRES'] = QUESTIONNAIRES app.jinja_env.globals['NOI_COLORS'] = NOI_COLORS app.jinja_env.globals['LEVELS'] = LEVELS app.jinja_env.globals['QUESTIONS_BY_ID'] = QUESTIONS_BY_ID with open('/noi/app/data/about.yaml') as about_yaml: app.jinja_env.globals['ABOUT'] = yaml.load(about_yaml).get(noi_deploy) if not app.config.get('MAIL_USERNAME') or not app.config.get('MAIL_PASSWORD'): app.logger.warn('No MAIL_SERVER found in config, password reset will ' 'not work.') if not app.config.get('GA_TRACKING_CODE'): app.logger.warn('No GA_TRACKING_CODE found in config, analytics will' ' not work.') return app