def create_app(config=Config()): """Flask application factory.""" app = Flask(__name__) if config is not None: app.config.from_object(config) # override settings by environment variables if 'DEBUG' in os.environ: app.config['DEBUG'] = os.environ['DEBUG'].lower() == 'true' if 'SECRET_KEY' in os.environ: app.config['SECRET_KEY'] = os.environ['SECRET_KEY'] if 'SSL_ENABLE_REDIRECTS' in os.environ: app.config['SSL_ENABLE_REDIRECTS'] = os.environ['SSL_ENABLE_REDIRECTS'].lower() == 'true' if 'DATABASE_URL' in os.environ: app.config['SQLALCHEMY_DATABASE_URI'] = os.environ['DATABASE_URL'] db.init_app(app) babel = Babel(app) login_manager.setup_app(app) oid.init_app(app) DebugToolbarExtension(app) app.register_blueprint(times) admin = Admin(app, url_prefix='/admin', title='Admin') admin.add_path_security('/', secure_admin_path) admin.add_path_security('/auth', secure_admin_auth_path) auth_node = admin.register_node('/auth', 'auth', 'Authentication') time_node = admin.register_node('/time_node', 'time_node', 'Times') admin.register_module(UserAdmin, '/users', 'users', 'Users', parent=auth_node) admin.register_module(CompanyAdmin, '/companies', 'companies', 'Companies', parent=time_node) admin.register_module(ProjectAdmin, '/projects', 'projects', 'Projects', parent=time_node) admin.register_module(TaskAdmin, '/tasks', 'tasks', 'Tasks', parent=time_node) admin.register_module(WorkingUnitAdmin, '/times', 'times', 'Working Times', parent=time_node) @login_manager.user_loader def load_user(userid): return User.query.get(int(userid)) @app.context_processor def inject_context(): version = os.environ.get('VERSION', 'devel') return dict(user=current_user, now=datetime.now(), version=version) @babel.localeselector def get_locale(): if hasattr(current_user, 'locale'): return current_user.locale return request.accept_languages.best_match(['en', 'ja', 'de']) return app
@babel.timezoneselector def get_timezone(): user = getattr(g, 'user', None) if user is not None: return user.timezone return app.config['BABEL_DEFAULT_TIMEZONE'] app = Flask(__name__) app.config.from_object(Config()) app.logger.debug('app created') admin.init_app(app) db.init_app(app) init_i18n(app) oid.init_app(app) admin.add_view(BookmarkAdmin(Bookmark, db.session, endpoint='bookmarkadmin')) admin.add_view(TagAdmin(Tag, db.session, endpoint='tagadmin')) admin.add_view(UserAdmin(User, db.session, endpoint='useradmin')) app.register_blueprint(links) @app.before_first_request def before_first_request(): db.create_all() @app.template_filter('unicode') def unicode_filter(value):