Example #1
0
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
Example #2
0
    @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):