from flask import Flask, url_for, Markup, request from flask_login import current_user from werkzeug.routing import BaseConverter from werkzeug.middleware.proxy_fix import ProxyFix app = Flask(__name__) app.config.from_pyfile('fbin.cfg') app.wsgi_app = ProxyFix(app.wsgi_app) # Set up some custom converters. These are needed for file URLs to be properly parsed. class HashConverter(BaseConverter): regex = r'\w+' class ExtensionConverter(BaseConverter): regex = r'\.\w+' @app.context_processor def context_processors(): def nav_html(view, name=None): url = url_for(view) if not name: name = view.rsplit('.', 1)[-1].replace('_', ' ').capitalize() if view == '.logout': name += ' [{}]'.format(current_user.username) return Markup('{}'.format(' class="active"' if url == request.path else '', url, name)) return { 'nav_html': nav_html, } app.url_map.converters['hash'] = HashConverter app.url_map.converters['ext'] = ExtensionConverter with app.app_context(): from .fbin import app as fbin, db from .api import app as api from .login import login_manager app.register_blueprint(fbin) app.register_blueprint(api, url_prefix='/api') login_manager.init_app(app) db.init_app(app)