aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/init/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/init/__init__.py')
-rw-r--r--mediagoblin/init/__init__.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/mediagoblin/init/__init__.py b/mediagoblin/init/__init__.py
index b8ed2456..6320d21b 100644
--- a/mediagoblin/init/__init__.py
+++ b/mediagoblin/init/__init__.py
@@ -15,8 +15,33 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import jinja2
+from mediagoblin import staticdirect
+from mediagoblin.init.config import (
+ read_mediagoblin_config, generate_validation_report)
+from mediagoblin import mg_globals
+from mediagoblin.mg_globals import setup_globals
+from mediagoblin.workbench import WorkbenchManager
+class Error(Exception): pass
+class ImproperlyConfigured(Error): pass
+
+
+def setup_global_and_app_config(config_path):
+ 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_globals(
+ app_config=app_config,
+ global_config=global_config)
+
+ return global_config, app_config
+
def get_jinja_loader(user_template_path=None):
"""
Set up the Jinja template loaders, possibly allowing for user
@@ -31,3 +56,27 @@ def get_jinja_loader(user_template_path=None):
jinja2.PackageLoader('mediagoblin', 'templates')])
else:
return jinja2.PackageLoader('mediagoblin', 'templates')
+
+
+def get_staticdirector(app_config):
+ if app_config.has_key('direct_remote_path'):
+ return 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()
+ return 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")
+
+
+def setup_workbench():
+ app_config = mg_globals.app_config
+
+ workbench_manager = WorkbenchManager(app_config['workbench_path'])
+
+ setup_globals(workbench_manager = workbench_manager)