コード例 #1
0
 def setUp(self):
     super(TestRedisListenStore, self).setUp()
     self.log = logging.getLogger(__name__)
     self._redis = init_redis_connection(self.log, self.config.REDIS_HOST,
                                         self.config.REDIS_PORT)
     self.testuser_id = db_user.create(1, "test")
     self._create_test_data()
コード例 #2
0
 def setUp(self):
     super(RedisListenStoreTestCase, self).setUp()
     self.log = logging.getLogger()
     self._redis = init_redis_connection(self.log, self.config.REDIS_HOST,
                                         self.config.REDIS_PORT,
                                         self.config.REDIS_NAMESPACE)
     self.testuser = db_user.get_or_create(1, "test")
コード例 #3
0
 def setUp(self):
     super(RedisListenStoreTestCase, self).setUp()
     self.log = logging.getLogger()
     # TODO: Ideally this would use a config from a flask app, but this test case doesn't create an app
     self._redis = init_redis_connection(self.log, config.REDIS_HOST,
                                         config.REDIS_PORT,
                                         config.REDIS_NAMESPACE)
     self.testuser = db_user.get_or_create(1, "test")
コード例 #4
0
def create_redis(app):
    from listenbrainz.webserver.redis_connection import init_redis_connection
    init_redis_connection(app.logger, app.config['REDIS_HOST'],
                          app.config['REDIS_PORT'])
コード例 #5
0
 def setUp(self):
     super(TestRedisListenStore, self).setUp()
     self.log = logging.getLogger(__name__)
     self._redis = init_redis_connection(self.log, self.config.REDIS_HOST, self.config.REDIS_PORT)
     self.testuser_id = db_user.create(1, "test")
     self._create_test_data()
コード例 #6
0
def create_app(debug=None):
    """ Generate a Flask app for LB with all configurations done and connections established.

    In the Flask app returned, blueprints are not registered.
    """

    app = CustomFlask(
        import_name=__name__,
        use_flask_uuid=True,
    )

    load_config(app)
    if debug is not None:
        app.debug = debug
    # As early as possible, if debug is True, set the log level of our 'listenbrainz' logger to DEBUG
    # to prevent flask from creating a new log handler
    if app.debug:
        logger = logging.getLogger('listenbrainz')
        logger.setLevel(logging.DEBUG)

    # initialize Flask-DebugToolbar if the debug option is True
    if app.debug and app.config['SECRET_KEY']:
        app.init_debug_toolbar()

    sentry_config = app.config.get('LOG_SENTRY')
    if sentry_config:
        sentry.init_sentry(**sentry_config)

    # Initialize BU cache and metrics
    cache.init(host=app.config['REDIS_HOST'],
               port=app.config['REDIS_PORT'],
               namespace=app.config['REDIS_NAMESPACE'])
    metrics.init("listenbrainz")

    # Database connections
    from listenbrainz import db
    from listenbrainz.db import timescale as ts
    from listenbrainz import messybrainz as msb
    db.init_db_connection(app.config['SQLALCHEMY_DATABASE_URI'])
    ts.init_db_connection(app.config['SQLALCHEMY_TIMESCALE_URI'])
    msb.init_db_connection(app.config['MESSYBRAINZ_SQLALCHEMY_DATABASE_URI'])

    # Redis connection
    from listenbrainz.webserver.redis_connection import init_redis_connection
    init_redis_connection(app.logger)

    # Timescale connection
    from listenbrainz.webserver.timescale_connection import init_timescale_connection
    init_timescale_connection(app)

    # RabbitMQ connection
    from listenbrainz.webserver.rabbitmq_connection import init_rabbitmq_connection
    try:
        init_rabbitmq_connection(app)
    except ConnectionError:
        app.logger.critical("RabbitMQ service is not up!", exc_info=True)

    if app.config['MB_DATABASE_URI']:
        from brainzutils import musicbrainz_db
        musicbrainz_db.init_db_engine(app.config['MB_DATABASE_URI'])

    # OAuth
    from listenbrainz.webserver.login import login_manager, provider
    login_manager.init_app(app)
    provider.init(app.config['MUSICBRAINZ_CLIENT_ID'],
                  app.config['MUSICBRAINZ_CLIENT_SECRET'])

    # Error handling
    from listenbrainz.webserver.errors import init_error_handlers
    init_error_handlers(app)

    from brainzutils.ratelimit import inject_x_rate_headers, set_user_validation_function
    set_user_validation_function(check_ratelimit_token_whitelist)

    @app.after_request
    def after_request_callbacks(response):
        return inject_x_rate_headers(response)

    # Template utilities
    app.jinja_env.add_extension('jinja2.ext.do')
    from listenbrainz.webserver import utils
    app.jinja_env.filters['date'] = utils.reformat_date
    app.jinja_env.filters['datetime'] = utils.reformat_datetime

    return app