Make certain bits of info accessable as global variables from anywhere

This commit is contained in:
Christopher Allan Webber 2011-04-24 14:48:55 -05:00
parent 6bcab715b8
commit df9809c209
3 changed files with 63 additions and 0 deletions

View File

@ -21,6 +21,7 @@ import mongokit
from webob import Request, exc from webob import Request, exc
from mediagoblin import routing, util, models, storage, staticdirect from mediagoblin import routing, util, models, storage, staticdirect
from mediagoblin.globals import setup_globals
class Error(Exception): pass class Error(Exception): pass
@ -53,6 +54,15 @@ class MediaGoblinApp(object):
# set up staticdirector tool # set up staticdirector tool
self.staticdirector = staticdirector self.staticdirector = staticdirector
# certain properties need to be accessed globally eg from
# validators, etc, which might not access to the request
# object.
setup_globals(
db_connection=connection,
database=self.db,
public_store=self.public_store,
queue_store=self.queue_store)
def __call__(self, environ, start_response): def __call__(self, environ, start_response):
request = Request(environ) request = Request(environ)
path_info = request.path_info path_info = request.path_info

24
mediagoblin/globals.py Normal file
View File

@ -0,0 +1,24 @@
"""
In some places, we need to access the database, public_store, queue_store
"""
#############################
# General mediagoblin globals
#############################
# mongokit.Connection
db_connection = None
# mongokit.Connection
database = None
# should be the same as the
public_store = None
queue_store = None
def setup_globals(**kwargs):
from mediagoblin import globals as mg_globals
for key, value in kwargs.iteritems():
setattr(mg_globals, key, value)

View File

@ -0,0 +1,29 @@
# GNU MediaGoblin -- federated, autonomous media hosting
# Copyright (C) 2011 Free Software Foundation, Inc
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# 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/>.
from mediagoblin import globals as mg_globals
def test_setup_globals():
mg_globals.setup_globals(
db_connection='my favorite db_connection!',
database='my favorite database!',
public_store='my favorite public_store!',
queue_store='my favorite queue_store!')
assert mg_globals.db_connection == 'my favorite db_connection!'
assert mg_globals.database == 'my favorite database!'
assert mg_globals.public_store == 'my favorite public_store!'
assert mg_globals.queue_store == 'my favorite queue_store!'