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, 25 insertions, 40 deletions
diff --git a/mediagoblin/app.py b/mediagoblin/app.py
index b27b5761..1c38f778 100644
--- a/mediagoblin/app.py
+++ b/mediagoblin/app.py
@@ -20,17 +20,16 @@ import urllib
import routes
from webob import Request, exc
-from mediagoblin import routing, util, storage, staticdirect
-from mediagoblin.config import (
- read_mediagoblin_config, generate_validation_report)
+from mediagoblin import routing, util, storage
from mediagoblin.db.open import setup_connection_and_db_from_config
+from mediagoblin.db.util import MigrationManager
from mediagoblin.mg_globals import setup_globals
-from mediagoblin.celery_setup import setup_celery_from_config
-from mediagoblin.workbench import WorkbenchManager
+from mediagoblin.init.celery import setup_celery_from_config
+from mediagoblin.init import get_jinja_loader, get_staticdirector, \
+ setup_global_and_app_config, setup_workbench
-
-class Error(Exception): pass
-class ImproperlyConfigured(Error): pass
+# This MUST be imported so as to set up the appropriate migrations!
+from mediagoblin.db import migrations
class MediaGoblinApp(object):
@@ -54,13 +53,7 @@ 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
@@ -70,8 +63,18 @@ class MediaGoblinApp(object):
self.connection, self.db = setup_connection_and_db_from_config(
app_config)
+ # Init the migration number if necessary
+ migration_manager = MigrationManager(self.db)
+ migration_manager.install_migration_version_if_missing()
+
+ # Tiny hack to warn user if our migration is out of date
+ if not migration_manager.database_at_latest_migration():
+ print (
+ "*WARNING:* Your migrations are out of date, "
+ "maybe run ./bin/gmg migrate?")
+
# Get the template environment
- self.template_loader = util.get_jinja_loader(
+ self.template_loader = get_jinja_loader(
app_config.get('user_template_path'))
# Set up storage systems
@@ -84,19 +87,7 @@ class MediaGoblinApp(object):
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,21 +107,15 @@ class MediaGoblinApp(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']))
+ queue_store=self.queue_store)
+
+ # 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)