Merge remote branch 'remotes/elrond/dev/init'

This commit is contained in:
Christopher Allan Webber 2011-07-09 16:57:20 -05:00
commit df01342e5e
2 changed files with 56 additions and 34 deletions

View File

@ -20,18 +20,12 @@ import urllib
import routes import routes
from webob import Request, exc from webob import Request, exc
from mediagoblin import routing, util, storage, staticdirect from mediagoblin import routing, util, storage
from mediagoblin.init.config import (
read_mediagoblin_config, generate_validation_report)
from mediagoblin.db.open import setup_connection_and_db_from_config from mediagoblin.db.open import setup_connection_and_db_from_config
from mediagoblin.mg_globals import setup_globals from mediagoblin.mg_globals import setup_globals
from mediagoblin.init.celery import setup_celery_from_config from mediagoblin.init.celery import setup_celery_from_config
from mediagoblin.init import get_jinja_loader from mediagoblin.init import get_jinja_loader, get_staticdirector, \
from mediagoblin.workbench import WorkbenchManager setup_global_and_app_config, setup_workbench
class Error(Exception): pass
class ImproperlyConfigured(Error): pass
class MediaGoblinApp(object): class MediaGoblinApp(object):
@ -55,13 +49,7 @@ class MediaGoblinApp(object):
############## ##############
# Open and setup the config # Open and setup the config
global_config, validation_result = read_mediagoblin_config(config_path) global_config, app_config = setup_global_and_app_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 other connections / useful objects # Setup other connections / useful objects
@ -85,19 +73,7 @@ class MediaGoblinApp(object):
self.routing = routing.get_mapper() self.routing = routing.get_mapper()
# set up staticdirector tool # set up staticdirector tool
if app_config.has_key('direct_remote_path'): self.staticdirector = get_staticdirector(app_config)
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")
# Setup celery, if appropriate # Setup celery, if appropriate
if setup_celery and not app_config.get('celery_setup_elsewhere'): if setup_celery and not app_config.get('celery_setup_elsewhere'):
@ -117,9 +93,6 @@ class MediaGoblinApp(object):
####################################################### #######################################################
setup_globals( setup_globals(
app_config=app_config,
global_config=global_config,
# TODO: No need to set these two up as globals, we could # TODO: No need to set these two up as globals, we could
# just read them out of mg_globals.app_config # just read them out of mg_globals.app_config
email_sender_address=app_config['email_sender_address'], email_sender_address=app_config['email_sender_address'],
@ -130,8 +103,8 @@ class MediaGoblinApp(object):
db_connection=self.connection, db_connection=self.connection,
database=self.db, database=self.db,
public_store=self.public_store, public_store=self.public_store,
queue_store=self.queue_store, queue_store=self.queue_store)
workbench_manager=WorkbenchManager(app_config['workbench_path'])) setup_workbench()
def __call__(self, environ, start_response): def __call__(self, environ, start_response):
request = Request(environ) request = Request(environ)

View File

@ -15,8 +15,33 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
import jinja2 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): def get_jinja_loader(user_template_path=None):
""" """
Set up the Jinja template loaders, possibly allowing for user 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')]) jinja2.PackageLoader('mediagoblin', 'templates')])
else: else:
return jinja2.PackageLoader('mediagoblin', 'templates') 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)