diff --git a/flaskr/__init__.py b/flaskr/__init__.py new file mode 100755 index 0000000..96af7cf --- /dev/null +++ b/flaskr/__init__.py @@ -0,0 +1,83 @@ +#! ../venv/bin/python + +from flask import Flask +from webassets.loaders import PythonLoader as PythonAssetsLoader + +from flaskr import assets +from flaskr.models import db +from flaskr.controllers.main import main + +from flaskr.extensions import ( + cache, + assets_env, + debug_toolbar, + login_manager +) + +from yaml import safe_load as yaml_safe_load + +from markdown import markdown + + +def create_app(object_name): + """ + An flask application factory, as explained here: + http://flask.pocoo.org/docs/patterns/appfactories/ + + Arguments: + object_name: the python path of the config object, + e.g. flaskr.settings.ProductionConfig + """ + + app = Flask(__name__) + + # We bypass object_name (for now) + object_name = 'flaskr.settings.DevelopmentConfig' + + # Load configuration + app.config.from_object(object_name) + + # initialize the cache + cache.init_app(app) + + # initialize the debug tool bar + debug_toolbar.init_app(app) + + # initialize SQLAlchemy + db.init_app(app) + + login_manager.init_app(app) + + # Import and register the different asset bundles + assets_env.init_app(app) + assets_loader = PythonAssetsLoader(assets) + for name, bundle in assets_loader.load_bundles().items(): + assets_env.register(name, bundle) + + # register our blueprints + app.register_blueprint(main) + + # Load content data from the YAML file + content = {} + with open('content.yml', 'r') as content_file: + content = yaml_safe_load(content_file.read()) + + # VERSION + version = "0.0.0" + with open('VERSION', 'r') as version_file: + version = version_file.read().strip() + + # Inject it as global template var + @app.context_processor + def inject_template_global_variables(): + return dict( + content=content, + version=version, + ) + + # Markdown jinja2 filter + @app.template_filter('markdown') + def markdown_filter(text): + return markdown(text) + + return app -- libgit2 0.21.2