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 mediagoblin import routing, util, models, storage, staticdirect
from mediagoblin.globals import setup_globals
class Error(Exception): pass
@ -53,6 +54,15 @@ class MediaGoblinApp(object):
# set up staticdirector tool
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):
request = Request(environ)
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!'