Storage Config: Use own section

Instead of configuring storage X by parameters in the main
section "X_class = backend" and "X_param = value", use a
new section in the config: "[storage:X]" and use "class =
backend" and "param = value" there.

This is the beginning, it includes a try at being backward
compatible. But that try isn't really fully useful anyway.
This commit is contained in:
Elrond 2011-07-31 13:54:07 +02:00
parent d1e67890da
commit ed7970696e
4 changed files with 36 additions and 11 deletions

View File

@ -1,7 +1,4 @@
[mediagoblin]
queuestore_base_dir = %(here)s/user_dev/media/queue
publicstore_base_dir = %(here)s/user_dev/media/public
publicstore_base_url = /mgoblin_media/
direct_remote_path = /mgoblin_static/
email_sender_address = "notice@mediagoblin.example.org"
@ -14,5 +11,12 @@ allow_registration = true
## Uncomment this to put some user-overriding templates here
#local_templates = %(here)s/user_dev/templates/
[storage:queuestore]
base_dir = %(here)s/user_dev/media/queue
[storage:publicstore]
base_dir = %(here)s/user_dev/media/public
base_url = /mgoblin_media/
[celery]
# Put celery stuff here

View File

@ -4,15 +4,10 @@ db_host = string()
db_name = string(default="mediagoblin")
db_port = integer()
#
queuestore_base_dir = string(default="%(here)s/user_dev/media/queue")
publicstore_base_dir = string(default="%(here)s/user_dev/media/public")
# Where temporary files used in processing and etc are kept
workbench_path = string(default="%(here)s/user_dev/media/workbench")
#
publicstore_base_url = string(default="/mgoblin_media/")
# Where mediagoblin-builtin static assets are kept
direct_remote_path = string(default="/mgoblin_static/")
@ -37,6 +32,13 @@ local_templates = string()
# itself)
celery_setup_elsewhere = boolean(default=False)
[storage:publicstore]
base_dir = string(default="%(here)s/user_dev/media/public")
base_url = string(default="/mgoblin_media/")
[storage:queuestore]
base_dir = string(default="%(here)s/user_dev/media/queue")
[celery]
# known booleans
celery_result_persistent = boolean()

View File

@ -113,9 +113,23 @@ def get_staticdirector(app_config):
def setup_storage():
app_config = mg_globals.app_config
global_config = mg_globals.global_config
public_store = storage_system_from_config(app_config, 'publicstore')
queue_store = storage_system_from_config(app_config, 'queuestore')
key_short = 'publicstore'
key_long = "storage:" + key_short
if global_config.has_key(key_long):
print "New style"
public_store = storage_system_from_config(global_config[key_long], None)
else:
print "old style"
public_store = storage_system_from_config(app_config, key_short)
key_short = 'queuestore'
key_long = "storage:" + key_short
if global_config.has_key(key_long):
queue_store = storage_system_from_config(global_config[key_long], None)
else:
queue_store = storage_system_from_config(app_config, key_short)
setup_globals(
public_store = public_store,

View File

@ -472,7 +472,10 @@ def storage_system_from_config(paste_config, storage_prefix):
base_url='/media/',
base_dir='/var/whatever/media')
"""
prefix_re = re.compile('^%s_(.+)$' % re.escape(storage_prefix))
if storage_prefix is not None:
prefix_re = re.compile('^%s_(.+)$' % re.escape(storage_prefix))
else:
prefix_re = re.compile('^(.+)$')
config_params = dict(
[(prefix_re.match(key).groups()[0], value)
@ -485,5 +488,7 @@ def storage_system_from_config(paste_config, storage_prefix):
else:
storage_class = "mediagoblin.storage:BasicFileStorage"
print storage_class, repr(config_params)
storage_class = util.import_component(storage_class)
return storage_class(**config_params)