def test_storage_system_from_config():
    this_storage = storage.storage_system_from_config({
        'base_url': 'http://example.org/moodia/',
        'base_dir': '/tmp/',
        'garbage_arg': 'garbage_arg',
        'garbage_arg': 'trash'
    })
    assert this_storage.base_url == 'http://example.org/moodia/'
    assert this_storage.base_dir == '/tmp/'
    assert this_storage.__class__ is storage.filestorage.BasicFileStorage

    this_storage = storage.storage_system_from_config({
        'foobie':
        'eiboof',
        'blech':
        'hcelb',
        'garbage_arg':
        'garbage_arg',
        'storage_class':
        'mediagoblin.tests.test_storage:FakeStorageSystem'
    })
    assert this_storage.foobie == 'eiboof'
    assert this_storage.blech == 'hcelb'
    assert str(this_storage.__class__) == \
        "<class 'mediagoblin.tests.test_storage.FakeStorageSystem'>"
Example #2
0
def setup_storage():
    global_config = mg_globals.global_config

    key_short = 'publicstore'
    key_long = "storage:" + key_short
    public_store = storage_system_from_config(global_config[key_long])

    key_short = 'queuestore'
    key_long = "storage:" + key_short
    queue_store = storage_system_from_config(global_config[key_long])

    setup_globals(public_store=public_store, queue_store=queue_store)

    return public_store, queue_store
Example #3
0
def setup_storage():
    global_config = mg_globals.global_config

    key_short = "publicstore"
    key_long = "storage:" + key_short
    public_store = storage_system_from_config(global_config[key_long])

    key_short = "queuestore"
    key_long = "storage:" + key_short
    queue_store = storage_system_from_config(global_config[key_long])

    setup_globals(public_store=public_store, queue_store=queue_store)

    return public_store, queue_store
Example #4
0
def test_storage_system_from_config():
    this_storage = storage.storage_system_from_config(
        {'base_url': 'http://example.org/moodia/',
         'base_dir': '/tmp/',
         'garbage_arg': 'garbage_arg',
         'garbage_arg': 'trash'})
    assert this_storage.base_url == 'http://example.org/moodia/'
    assert this_storage.base_dir == '/tmp/'
    assert this_storage.__class__ is storage.filestorage.BasicFileStorage

    this_storage = storage.storage_system_from_config(
        {'foobie': 'eiboof',
         'blech': 'hcelb',
         'garbage_arg': 'garbage_arg',
         'storage_class':
             'mediagoblin.tests.test_storage:FakeStorageSystem'})
    assert_equal(this_storage.foobie, 'eiboof')
    assert_equal(this_storage.blech, 'hcelb')
    assert_equal(unicode(this_storage.__class__),
                 u'mediagoblin.tests.test_storage.FakeStorageSystem')
Example #5
0
def test_storage_system_from_config():
    this_storage = storage.storage_system_from_config(
        {'base_url': 'http://example.org/moodia/',
         'base_dir': '/tmp/',
         'garbage_arg': 'garbage_arg',
         'garbage_arg': 'trash'})
    assert this_storage.base_url == 'http://example.org/moodia/'
    assert this_storage.base_dir == '/tmp/'
    assert this_storage.__class__ is storage.filestorage.BasicFileStorage

    this_storage = storage.storage_system_from_config(
        {'foobie': 'eiboof',
         'blech': 'hcelb',
         'garbage_arg': 'garbage_arg',
         'storage_class':
             'mediagoblin.tests.test_storage:FakeStorageSystem'})
    assert this_storage.foobie == 'eiboof'
    assert this_storage.blech == 'hcelb'
    assert six.text_type(this_storage.__class__) == \
        u"<class 'mediagoblin.tests.test_storage.FakeStorageSystem'>"
def test_storage_system_from_config():
    this_storage = storage.storage_system_from_config(
        {'somestorage_base_url': 'http://example.org/moodia/',
         'somestorage_base_dir': '/tmp/',
         'somestorage_garbage_arg': 'garbage_arg',
         'garbage_arg': 'trash'},
        'somestorage')
    assert this_storage.base_url == 'http://example.org/moodia/'
    assert this_storage.base_dir == '/tmp/'
    assert this_storage.__class__ is storage.BasicFileStorage

    this_storage = storage.storage_system_from_config(
        {'somestorage_foobie': 'eiboof',
         'somestorage_blech': 'hcelb',
         'somestorage_garbage_arg': 'garbage_arg',
         'garbage_arg': 'trash',
         'somestorage_storage_class':
             'mediagoblin.tests.test_storage:FakeStorageSystem'},
         'somestorage')
    assert this_storage.foobie == 'eiboof'
    assert this_storage.blech == 'hcelb'
    assert this_storage.__class__ is FakeStorageSystem
Example #7
0
    def __init__(self, config_path, setup_celery=True):
        """
        Initialize the application based on a configuration file.

        Arguments:
         - config_path: path to the configuration file we're opening.
         - setup_celery: whether or not to setup celery during init.
           (Note: setting 'celery_setup_elsewhere' also disables
           setting up celery.)
        """
        ##############
        # Setup config
        ##############

        # Open and setup the config
        global_config, validation_result = read_mediagoblin_config(config_path)
        app_config = global_config['mediagoblin']
        # report errors if necessary
        validation_report = generate_validation_report(global_config,
                                                       validation_result)
        if validation_report:
            raise ImproperlyConfigured(validation_report)

        ##########################################
        # Setup other connections / useful objects
        ##########################################

        # Set up the database
        self.connection, self.db = setup_connection_and_db_from_config(
            app_config)

        # Get the template environment
        self.template_loader = util.get_jinja_loader(
            app_config.get('user_template_path'))

        # Set up storage systems
        self.public_store = storage.storage_system_from_config(
            app_config, 'publicstore')
        self.queue_store = storage.storage_system_from_config(
            app_config, 'queuestore')

        # set up routing
        self.routing = routing.get_mapper()

        # set up staticdirector tool
        if app_config.has_key('direct_remote_path'):
            self.staticdirector = staticdirect.RemoteStaticDirect(
                app_config['direct_remote_path'].strip())
        elif app_config.has_key('direct_remote_paths'):
            direct_remote_path_lines = app_config['direct_remote_paths'].strip(
            ).splitlines()
            self.staticdirector = staticdirect.MultiRemoteStaticDirect(
                dict([
                    line.strip().split(' ', 1)
                    for line in direct_remote_path_lines
                ]))
        else:
            raise ImproperlyConfigured("One of direct_remote_path or "
                                       "direct_remote_paths must be provided")

        # Setup celery, if appropriate
        if setup_celery and not app_config.get('celery_setup_elsewhere'):
            if os.environ.get('CELERY_ALWAYS_EAGER'):
                setup_celery_from_config(app_config,
                                         global_config,
                                         force_celery_always_eager=True)
            else:
                setup_celery_from_config(app_config, global_config)

        #######################################################
        # Insert appropriate things into mediagoblin.mg_globals
        #
        # certain properties need to be accessed globally eg from
        # validators, etc, which might not access to the request
        # object.
        #######################################################

        setup_globals(
            app_config=app_config,
            global_config=global_config,

            # TODO: No need to set these two up as globals, we could
            # just read them out of mg_globals.app_config
            email_sender_address=app_config['email_sender_address'],
            email_debug_mode=app_config['email_debug_mode'],

            # Actual, useful to everyone objects
            app=self,
            db_connection=self.connection,
            database=self.db,
            public_store=self.public_store,
            queue_store=self.queue_store,
            workbench_manager=WorkbenchManager(app_config['workbench_path']))
Example #8
0
    def __init__(self, config_path, setup_celery=True):
        """
        Initialize the application based on a configuration file.

        Arguments:
         - config_path: path to the configuration file we're opening.
         - setup_celery: whether or not to setup celery during init.
           (Note: setting 'celery_setup_elsewhere' also disables
           setting up celery.)
        """
        ##############
        # Setup config
        ##############

        # Open and setup the config
        global_config, validation_result = read_mediagoblin_config(config_path)
        app_config = global_config['mediagoblin']
        # report errors if necessary
        validation_report = generate_validation_report(
            global_config, validation_result)
        if validation_report:
            raise ImproperlyConfigured(validation_report)

        ##########################################
        # Setup other connections / useful objects
        ##########################################

        # Set up the database
        self.connection, self.db = setup_connection_and_db_from_config(
            app_config)

        # Get the template environment
        self.template_loader = util.get_jinja_loader(
            app_config.get('user_template_path'))
        
        # Set up storage systems
        self.public_store = storage.storage_system_from_config(
            app_config, 'publicstore')
        self.queue_store = storage.storage_system_from_config(
            app_config, 'queuestore')

        # set up routing
        self.routing = routing.get_mapper()

        # set up staticdirector tool
        if app_config.has_key('direct_remote_path'):
            self.staticdirector = staticdirect.RemoteStaticDirect(
                app_config['direct_remote_path'].strip())
        elif app_config.has_key('direct_remote_paths'):
            direct_remote_path_lines = app_config[
                'direct_remote_paths'].strip().splitlines()
            self.staticdirector = staticdirect.MultiRemoteStaticDirect(
                dict([line.strip().split(' ', 1)
                      for line in direct_remote_path_lines]))
        else:
            raise ImproperlyConfigured(
                "One of direct_remote_path or "
                "direct_remote_paths must be provided")

        # Setup celery, if appropriate
        if setup_celery and not app_config.get('celery_setup_elsewhere'):
            if os.environ.get('CELERY_ALWAYS_EAGER'):
                setup_celery_from_config(
                    app_config, global_config,
                    force_celery_always_eager=True)
            else:
                setup_celery_from_config(app_config, global_config)

        #######################################################
        # Insert appropriate things into mediagoblin.mg_globals
        #
        # certain properties need to be accessed globally eg from
        # validators, etc, which might not access to the request
        # object.
        #######################################################

        setup_globals(
            app_config=app_config,
            global_config=global_config,

            # TODO: No need to set these two up as globals, we could
            # just read them out of mg_globals.app_config
            email_sender_address=app_config['email_sender_address'],
            email_debug_mode=app_config['email_debug_mode'],

            # Actual, useful to everyone objects
            app=self,
            db_connection=self.connection,
            database=self.db,
            public_store=self.public_store,
            queue_store=self.queue_store,
            workbench_manager=WorkbenchManager(app_config['workbench_path']))