diff options
Diffstat (limited to 'mediagoblin/init')
-rw-r--r-- | mediagoblin/init/__init__.py | 17 | ||||
-rw-r--r-- | mediagoblin/init/celery/__init__.py | 6 | ||||
-rw-r--r-- | mediagoblin/init/config.py | 47 |
3 files changed, 47 insertions, 23 deletions
diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py index e0711416..38ec1260 100644 --- a/mediagoblin/init/__init__.py +++ b/mediagoblin/init/__init__.py @@ -28,6 +28,8 @@ from mediagoblin.tools.pluginapi import hook_runall from mediagoblin.tools.workbench import WorkbenchManager from mediagoblin.storage import storage_system_from_config +from mediagoblin.tools.transition import DISABLE_GLOBALS + class Error(Exception): pass @@ -58,14 +60,16 @@ def setup_global_and_app_config(config_path): return global_config, app_config -def setup_database(run_migrations=False): - app_config = mg_globals.app_config - global_config = mg_globals.global_config +def setup_database(app): + app_config = app.app_config + global_config = app.global_config + run_migrations = app_config['run_migrations'] # Load all models for media types (plugins, ...) load_models(app_config) # Set up the database - db = setup_connection_and_db_from_config(app_config, run_migrations) + db = setup_connection_and_db_from_config( + app_config, run_migrations, app=app) if run_migrations: #Run the migrations to initialize/update the database. from mediagoblin.gmg_commands.dbupdate import run_all_migrations @@ -154,4 +158,7 @@ def setup_workbench(): workbench_manager = WorkbenchManager(app_config['workbench_path']) - setup_globals(workbench_manager=workbench_manager) + if not DISABLE_GLOBALS: + setup_globals(workbench_manager=workbench_manager) + + return workbench_manager diff --git a/mediagoblin/init/celery/__init__.py b/mediagoblin/init/celery/__init__.py index fa1749e9..780e0055 100644 --- a/mediagoblin/init/celery/__init__.py +++ b/mediagoblin/init/celery/__init__.py @@ -19,6 +19,8 @@ import sys import datetime import logging +import six + from celery import Celery from mediagoblin.tools.pluginapi import hook_runall @@ -48,7 +50,7 @@ def get_celery_settings_dict(app_config, global_config, celery_settings = {} # Add all celery settings from config - for key, value in celery_conf.iteritems(): + for key, value in six.iteritems(celery_conf): celery_settings[key] = value # TODO: use default result stuff here if it exists @@ -113,7 +115,7 @@ def setup_celery_from_config(app_config, global_config, __import__(settings_module) this_module = sys.modules[settings_module] - for key, value in celery_settings.iteritems(): + for key, value in six.iteritems(celery_settings): setattr(this_module, key, value) if set_environ: diff --git a/mediagoblin/init/config.py b/mediagoblin/init/config.py index 11a91cff..a9189e8d 100644 --- a/mediagoblin/init/config.py +++ b/mediagoblin/init/config.py @@ -14,6 +14,7 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. +import copy import logging import os import pkg_resources @@ -29,16 +30,21 @@ CONFIG_SPEC_PATH = pkg_resources.resource_filename( 'mediagoblin', 'config_spec.ini') -def _setup_defaults(config, config_path): +def _setup_defaults(config, config_path, extra_defaults=None): """ Setup DEFAULTS in a config object from an (absolute) config_path. """ + extra_defaults = extra_defaults or {} + config.setdefault('DEFAULT', {}) config['DEFAULT']['here'] = os.path.dirname(config_path) config['DEFAULT']['__file__'] = config_path + for key, value in extra_defaults.items(): + config['DEFAULT'].setdefault(key, value) + -def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH): +def read_mediagoblin_config(config_path, config_spec_path=CONFIG_SPEC_PATH): """ Read a config object from config_path. @@ -54,7 +60,7 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH): Args: - config_path: path to the config file - - config_spec: config file that provides defaults and value types + - config_spec_path: config file that provides defaults and value types for validation / conversion. Defaults to mediagoblin/config_spec.ini Returns: @@ -68,7 +74,20 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH): # we can add their plugin specs to the general config_spec. config = ConfigObj( config_path, - interpolation='ConfigParser') + interpolation="ConfigParser") + + # temporary bootstrap, just setup here and __file__... we'll do this again + _setup_defaults(config, config_path) + + # Now load the main config spec + config_spec = ConfigObj( + config_spec_path, + encoding="UTF8", list_values=False, _inspec=True) + + # Set up extra defaults that will be pushed into the rest of the + # configs. This is a combined extrapolation of defaults based on + mainconfig_defaults = copy.copy(config_spec.get("DEFAULT", {})) + mainconfig_defaults.update(config["DEFAULT"]) plugins = config.get("plugins", {}).keys() plugin_configs = {} @@ -79,11 +98,12 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH): plugin, "config_spec.ini") if not os.path.exists(plugin_config_spec_path): continue - + plugin_config_spec = ConfigObj( plugin_config_spec_path, - encoding='UTF8', list_values=False, _inspec=True) - _setup_defaults(plugin_config_spec, config_path) + encoding="UTF8", list_values=False, _inspec=True) + _setup_defaults( + plugin_config_spec, config_path, mainconfig_defaults) if not "plugin_spec" in plugin_config_spec: continue @@ -94,23 +114,18 @@ def read_mediagoblin_config(config_path, config_spec=CONFIG_SPEC_PATH): _log.warning( "When setting up config section, could not import '%s'" % plugin) - - # Now load the main config spec - config_spec = ConfigObj( - config_spec, - encoding='UTF8', list_values=False, _inspec=True) # append the plugin specific sections of the config spec - config_spec['plugins'] = plugin_configs + config_spec["plugins"] = plugin_configs - _setup_defaults(config_spec, config_path) + _setup_defaults(config_spec, config_path, mainconfig_defaults) config = ConfigObj( config_path, configspec=config_spec, - interpolation='ConfigParser') + interpolation="ConfigParser") - _setup_defaults(config, config_path) + _setup_defaults(config, config_path, mainconfig_defaults) # For now the validator just works with the default functions, # but in the future if we want to add additional validation/configuration |