aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mediagoblin.ini10
-rw-r--r--mediagoblin/config_spec.ini12
-rw-r--r--mediagoblin/init/__init__.py11
-rw-r--r--mediagoblin/storage.py28
4 files changed, 32 insertions, 29 deletions
diff --git a/mediagoblin.ini b/mediagoblin.ini
index e889646a..c22d12d7 100644
--- a/mediagoblin.ini
+++ b/mediagoblin.ini
@@ -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
diff --git a/mediagoblin/config_spec.ini b/mediagoblin/config_spec.ini
index bbc1f7d6..6e0d52b4 100644
--- a/mediagoblin/config_spec.ini
+++ b/mediagoblin/config_spec.ini
@@ -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()
diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py
index ff005703..44f604b1 100644
--- a/mediagoblin/init/__init__.py
+++ b/mediagoblin/init/__init__.py
@@ -112,10 +112,15 @@ def get_staticdirector(app_config):
def setup_storage():
- app_config = mg_globals.app_config
+ global_config = mg_globals.global_config
+
+ key_short = 'publicstore'
+ key_long = "storage:" + key_short
+ public_store = storage_system_from_config(global_config[key_long])
- public_store = storage_system_from_config(app_config, 'publicstore')
- queue_store = storage_system_from_config(app_config, 'queuestore')
+ key_short = 'queuestore'
+ key_long = "storage:" + key_short
+ queue_store = storage_system_from_config(global_config[key_long])
setup_globals(
public_store = public_store,
diff --git a/mediagoblin/storage.py b/mediagoblin/storage.py
index 3968fa29..d484be1f 100644
--- a/mediagoblin/storage.py
+++ b/mediagoblin/storage.py
@@ -15,7 +15,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
-import re
import shutil
import urlparse
import uuid
@@ -456,41 +455,34 @@ def clean_listy_filepath(listy_filepath):
return cleaned_filepath
-def storage_system_from_config(paste_config, storage_prefix):
+def storage_system_from_config(config_section):
"""
- Utility for setting up a storage system from the paste app config.
+ Utility for setting up a storage system from a config section.
- Note that a special argument may be passed in to the paste_config
- which is "${storage_prefix}_storage_class" which will provide an
+ Note that a special argument may be passed in to
+ the config_section which is "storage_class" which will provide an
import path to a storage system. This defaults to
"mediagoblin.storage:BasicFileStorage" if otherwise undefined.
Arguments:
- - paste_config: dictionary of config parameters
- - storage_prefix: the storage system we're setting up / will be
- getting keys/arguments from. For example 'publicstore' will
- grab all arguments that are like 'publicstore_FOO'.
+ - config_section: dictionary of config parameters
Returns:
An instantiated storage system.
Example:
storage_system_from_config(
- {'publicstore_base_url': '/media/',
- 'publicstore_base_dir': '/var/whatever/media/'},
- 'publicstore')
+ {'base_url': '/media/',
+ 'base_dir': '/var/whatever/media/'})
Will return:
BasicFileStorage(
base_url='/media/',
base_dir='/var/whatever/media')
"""
- prefix_re = re.compile('^%s_(.+)$' % re.escape(storage_prefix))
-
- config_params = dict(
- [(prefix_re.match(key).groups()[0], value)
- for key, value in paste_config.iteritems()
- if prefix_re.match(key)])
+ # This construct is needed, because dict(config) does
+ # not replace the variables in the config items.
+ config_params = dict(config_section.iteritems())
if 'storage_class' in config_params:
storage_class = config_params['storage_class']