def create_app(config=None): if config is not None: app.config.from_object(config) db.init_app(app) @app.route('/') def index(): return "Hello World!" # import internal resources from Users.user_login import user_page app.register_blueprint(user_page) # init api and routes api = Api(app=app) routes_manage.routes_creator(api=api) return app
def create_application(): if os.environ.get("SENTRY_DSN"): sentry_sdk.init(dsn=os.environ["SENTRY_DSN"], integrations=[FlaskIntegration()]) static_folder = os.path.join("..", "static") template_folder = os.path.join("..", "templates") application = Flask(__name__, static_folder=static_folder, template_folder=template_folder) try: application.config.update( DEBUG=os.environ.get("FLASK_DEBUG", False), SECRET_KEY=os.environ.get("FLASK_SECRET_KEY", ""), CACHE_DEFAULT_TIMEOUT=600, CACHE_DIR=".cache", CACHE_TYPE="FileSystemCache", CACHE_THRESHOLD=1000, MONGODB_HOST=os.environ["MONGO_HOST"], SESSION_COOKIE_SECURE=not os.environ.get("FLASK_DEBUG", False), SESSION_COOKIE_HTTPONLY=True, SESSION_COOKIE_SAMESITE="Strict", JWT_REFRESH_TOKEN_EXPIRES=False, ) except KeyError as e: logger.error( "Bad configuration, some environment variables are not set", arg=e.args[0]) sys.exit(2) cache.init_app(application) db.init_app(application) cors.init_app(application, supports_credentials=True, origins=os.environ.get("FRONTEND_DOMAIN", "*")) jwt.init_app(application) oid.init_app(application) return application
from flask_login import login_user from flask_login import logout_user from flask_login import login_required from flask_login import current_user from models import User from models import File from flask_uploads import configure_uploads from init import photos app = Flask(__name__) app.config.from_pyfile('config.py') db.init_app(app) login_manager.init_app(app) csrf = CSRFProtect(app) # initialise the uploadset # configure the uploadset # define upload folder and allowed file types configure_uploads(app, photos) @login_manager.user_loader def load_user(id): return User.query.get(id)
def create_app(config_name): app = Flask(__name__, instance_relative_config=True) configuration = app_config[config_name] app.config.from_object(configuration) if config_name != "testing": # load the instance config, if it exists, when not testing app.config.from_pyfile("config.py", silent=True) # create empty instance folder and empty config if not present try: os.makedirs(app.instance_path) with open(os.path.join(app.instance_path, "config.py"), "a"): pass except OSError: pass migrate.init_app(app, db) db.init_app(app) ma.init_app(app) mail.init_app(app) login_manager.init_app(app) csrf = CSRFProtect(app) # noqa admin = Admin( app, name="My App", template_mode="bootstrap4", index_view=MyAdminIndexView(), ) admin.add_view(DefaultModelView(Settings, db.session)) admin.add_view(DefaultModelView(Path, db.session)) admin.add_view(DefaultModelView(Section, db.session)) admin.add_view(DefaultModelView(Link, db.session)) admin.add_link( MenuLink(name="Logout", category="", url="/auth/logout?next=/admin")) # # dev static # @app.route("/devstatic/<path:boxormodule>/f/<path:filename>") def devstatic(boxormodule, filename): if app.config["DEBUG"]: module_static = os.path.join(modules_path, boxormodule, "static") return send_from_directory(module_static, filename=filename) available_everywhere_entities = {} # # load blueprints # for folder in os.listdir(os.path.join(base_path, "modules")): if folder.startswith("__"): # ignore __pycache__ continue if folder.startswith("box__"): # boxes for sub_folder in os.listdir( os.path.join(base_path, "modules", folder)): if sub_folder.startswith("__"): # ignore __pycache__ continue elif sub_folder.endswith(".json"): # box_info.json continue try: sys_mod = importlib.import_module( "modules.{}.{}.view".format(folder, sub_folder)) app.register_blueprint( getattr(sys_mod, "{}_blueprint".format(sub_folder))) except AttributeError as e: print( " x Blueprint skipped:", "modules.{}.{}.view".format(folder, sub_folder, folder), ) try: mod_global = importlib.import_module( "modules.{}.{}.global".format(folder, sub_folder)) available_everywhere_entities.update( mod_global.available_everywhere) except ImportError: pass else: # apps try: mod = importlib.import_module("modules.{}.view".format(folder)) app.register_blueprint( getattr(mod, "{}_blueprint".format(folder))) except AttributeError as e: print("[ ] Blueprint skipped:", e) try: mod_global = importlib.import_module( "modules.{}.global".format(folder)) available_everywhere_entities.update( mod_global.available_everywhere) except ImportError as e: # print(e) pass # # custom templates folder # with app.app_context(): front_theme_dir = os.path.join(app.config["BASE_DIR"], "static", "themes", "front") back_theme_dir = os.path.join(app.config["BASE_DIR"], "static", "themes", "back") my_loader = jinja2.ChoiceLoader([ app.jinja_loader, jinja2.FileSystemLoader([front_theme_dir, back_theme_dir]), ]) app.jinja_loader = my_loader # # global vars # @app.context_processor def inject_global_vars(): APP_NAME = get_setting("APP_NAME") base_context = { "APP_NAME": APP_NAME, "len": len, "current_user": current_user, } base_context.update(available_everywhere_entities) return base_context # end of func return app