def create_app(config_name): app = Flask(__name__) app.config.from_object(config[config_name]) config[config_name].init_app(app) moment.init_app(app) bootstrap.init_app(app) configure_blueprints(app) # initialize Wiki and place it in current_app with app.app_context(): app.wiki = Wiki() return app
'CACHE_DIR': CACHE_DIR }) manager = Manager(app) loginmanager = LoginManager() loginmanager.init_app(app) loginmanager.login_view = 'user_login' markup = dict([(klass.NAME, klass) for klass in Markup.__subclasses__()])[app.config.get('MARKUP')] wiki = Wiki(app.config.get('CONTENT_DIR'), markup) # FIX ME: This monkeypatching is pollution crap . # Should be possible to import them wherever, # Wiki class should be a singleton. app.wiki = wiki app.signals = wiki_signals app.EditorForm = EditorForm users = UserManager(app.config.get('CONTENT_DIR')) @loginmanager.user_loader def load_user(name): return users.get_user(name) """ Routes ~~~~~~ """
cache.init_app(app, config={'CACHE_TYPE': 'filesystem', 'CACHE_DIR': CACHE_DIR}) manager = Manager(app) loginmanager = LoginManager() loginmanager.init_app(app) loginmanager.login_view = 'user_login' markup = dict([(klass.NAME, klass) for klass in Markup.__subclasses__()])[app.config.get('MARKUP')] wiki = Wiki(app.config.get('CONTENT_DIR')) # FIX ME: This monkeypatching is pollution crap . # Should be possible to import them wherever, # Wiki class should be a singleton. app.wiki = wiki app.signals = wiki_signals app.EditorForm = EditorForm users = UserManager(app.config.get('CONTENT_DIR')) @loginmanager.user_loader def load_user(name): return users.get_user(name) """ Routes ~~~~~~
"config.py in your content directory.") CACHE_DIR = os.path.join(app.config.get('CONTENT_DIR'), 'cache') cache.init_app(app, config={'CACHE_TYPE': 'filesystem', 'CACHE_DIR': CACHE_DIR}) manager = Manager(app) loginmanager = LoginManager() loginmanager.init_app(app) loginmanager.login_view = 'user_login' markup_class = get_subclass_dict(markup.Markup)[app.config.get('MARKUP')] # FIX ME: This monkeypatching is pollution crap . # Should be possible to import them wherever, # Wiki class should be a singleton. app.wiki = wiki.Wiki(app.config.get('CONTENT_DIR'), markup_class) app.signals = wiki_signals app.EditorForm = wiki.EditorForm app.user_manager = users.UserManager(app) # Set up the storage engine. Must wait until the signals are constructed! storage_class = get_subclass_dict(storage.StorageEngine)[app.config.get('STORAGE')] storage_engine = storage_class(app) # ugh, all the WTForms stuff needs access to app as a global... wiki.app = app @loginmanager.user_loader def load_user(name): return app.user_manager.get_user(name)