def create_app(name=None): app = Flask(name) if os.environ.get('PRODUCTION'): app.config.from_object(ProductionConfig) print "running with ProductionConfig" else: app.config.from_object(DefaultConfig) print "running with DefaultConfig" # sentry if app.config.get('SENTRY_DSN'): sentry = Sentry() sentry.init_app(app) app.sentry = sentry # assets assets = Environment(app) assets.url = app.static_url_path scss_bundle = Bundle('css/*.scss', 'css/*.css', filters=['scss', 'cssmin'], depends='css/*.scss', output='css/all.css') assets.register('scss_all', scss_bundle) js_bundle = Bundle('js/*.js', filters='rjsmin', output='js/all.js') assets.register('js_all', js_bundle) Compress(app) # cache if app.config['DEBUG']: cache_type = 'null' else: cache_type = 'simple' cache = Cache(config={'CACHE_TYPE': cache_type}) cache.init_app(app) app.cache = cache # CDN cdn = CDN() cdn.init_app(app) # workaround flask-assets / flask-cdn integration if app.config.get('CDN_HTTPS'): cdn_scheme = 'https' else: cdn_scheme = 'http' if app.config.get('FLASK_ASSETS_USE_CDN') and app.config.get('CDN_DOMAIN'): app.jinja_env.globals['FLASK_CDN'] = '%s://%s' % (cdn_scheme, app.config['CDN_DOMAIN']) return app
def configure_cdn_url_for(app): u"""是的url_for智能使用cdn地址""" cdn = CDN() cdn.init_app(app)
from daimaduan.views.pastes import paste_app from daimaduan.views.tags import tag_app from daimaduan.views.bookmarks import bookmark_app app.register_blueprint(site_app) app.register_blueprint(user_app, url_prefix='/user') app.register_blueprint(paste_app, url_prefix='/paste') app.register_blueprint(tag_app, url_prefix='/tag') app.register_blueprint(bookmark_app, url_prefix='/bookmark') app.jinja_env.filters['time_passed'] = time_passed app.jinja_env.filters['time_used'] = time_used app.jinja_env.filters['ternary'] = ternary app.jinja_env.filters['datetimeformat'] = datetimeformat app.jinja_env.filters['markdown'] = md if app.config['USE_JINJA_CACHE']: app.jinja_env.bytecode_cache = MemcachedBytecodeCache(memcache.Client([app.config['MEMCACHED_URL']])) login_manager.init_app(app) assets.init_app(app) cdn.init_app(app) gravatar = Gravatar(app, size=100, rating='g', default='retro', force_default=False, force_lower=False, use_ssl=True, base_url='https://cn.gravatar.com/')