aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/app.py
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/app.py')
-rw-r--r--mediagoblin/app.py65
1 files changed, 13 insertions, 52 deletions
diff --git a/mediagoblin/app.py b/mediagoblin/app.py
index 9454b403..c1ee3d77 100644
--- a/mediagoblin/app.py
+++ b/mediagoblin/app.py
@@ -20,18 +20,12 @@ import urllib
import routes
from webob import Request, exc
-from mediagoblin import routing, util, storage, staticdirect
-from mediagoblin.init.config import (
- read_mediagoblin_config, generate_validation_report)
-from mediagoblin.db.open import setup_connection_and_db_from_config
+from mediagoblin import routing, util
from mediagoblin.mg_globals import setup_globals
from mediagoblin.init.celery import setup_celery_from_config
-from mediagoblin.init import get_jinja_loader
-from mediagoblin.workbench import WorkbenchManager
-
-
-class Error(Exception): pass
-class ImproperlyConfigured(Error): pass
+from mediagoblin.init import (get_jinja_loader, get_staticdirector,
+ setup_global_and_app_config, setup_workbench, setup_database,
+ setup_storage)
class MediaGoblinApp(object):
@@ -55,49 +49,27 @@ class MediaGoblinApp(object):
##############
# 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)
+ global_config, app_config = setup_global_and_app_config(config_path)
##########################################
# Setup other connections / useful objects
##########################################
# Set up the database
- self.connection, self.db = setup_connection_and_db_from_config(
- app_config)
+ self.connection, self.db = setup_database()
# Get the template environment
self.template_loader = 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')
+ self.public_store, self.queue_store = setup_storage()
# 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")
+ self.staticdirector = get_staticdirector(app_config)
# Setup celery, if appropriate
if setup_celery and not app_config.get('celery_setup_elsewhere'):
@@ -116,22 +88,11 @@ class MediaGoblinApp(object):
# 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']))
+ setup_globals(app = self)
+
+ # Workbench *currently* only used by celery, so this only
+ # matters in always eager mode :)
+ setup_workbench()
def __call__(self, environ, start_response):
request = Request(environ)