def app(): flask_app = Flask(__name__) flask_app.config['SECRET_KEY'] = '@##&6cweafhv3426445' flask_app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get( 'POSTGRES_URL') flask_app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False flask_app.config['TESTING'] = True db.init_app(flask_app) ApiHandler.set_db(db) flask_app.app_context().push() install_models() return flask_app
import os from flask import Flask from sqlalchemy_api_handler import ApiHandler from models import import_models from models.utils.db import db flask_app = Flask(__name__) flask_app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('POSTGRES_URL') flask_app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(flask_app) ApiHandler.set_db(db) flask_app.app_context().push() import_models()
def setup(flask_app, with_cors=True, with_debug=False, with_jobs=False, with_login_manager=False, with_routes=False, with_scripts_manager=False, with_models_creation=False): flask_app.secret_key = os.environ.get('FLASK_SECRET', '+%+5Q83!abR+-Dp@') flask_app.config['SQLALCHEMY_DATABASE_URI'] = os.environ.get('POSTGRES_URL') flask_app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False if with_debug: flask_app.config['DEBUG'] = True db.app = flask_app db.init_app(flask_app) ApiHandler.set_db(db) flask_app.json_encoder = EnumJSONEncoder @flask_app.teardown_request def remove_db_session(exc): try: db.session.remove() except AttributeError: pass if with_cors: from flask_cors import CORS cors = CORS(flask_app, resources={r"/*": {"origins": "*"}}, supports_credentials=True) flask_app.url_map.strict_slashes = False flask_app.app_context().push() import_models(with_creation=with_models_creation) if with_login_manager: from flask_login import LoginManager flask_app.config['SESSION_COOKIE_HTTPONLY'] = not flask_app.config['TESTING'] flask_app.config['SESSION_COOKIE_SECURE'] = False if IS_DEVELOPMENT else True flask_app.config['REMEMBER_COOKIE_HTTPONLY'] = not flask_app.config['TESTING'] if not flask_app.config['TESTING']: flask_app.config['PERMANENT_SESSION_LIFETIME'] = 90 * 24 * 3600 flask_app.config['REMEMBER_COOKIE_DURATION'] = 90 * 24 * 3600 flask_app.config['REMEMBER_COOKIE_SECURE'] = True login_manager = LoginManager() login_manager.init_app(flask_app) import repository.login_manager import utils.nltk_downloader if with_routes: import_routes() if with_jobs: from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.schedulers.asyncio import AsyncIOScheduler async_jobs = import_async_jobs() background_jobs = import_background_jobs() async_scheduler = AsyncIOScheduler() background_scheduler = BackgroundScheduler() for job in async_jobs: async_scheduler.add_job(**job, replace_existing=True) for job in background_jobs: background_scheduler.add_job(**job, replace_existing=True) flask_app.async_scheduler = async_scheduler flask_app.background_scheduler = background_scheduler if with_scripts_manager: from flask_script import Manager def create_app(env=None): flask_app.env = env return flask_app flask_app.manager = Manager(create_app) import_scripts()