diff rhodecode/config/environment.py @ 547:1e757ac98988

renamed project to rhodecode
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 06 Oct 2010 03:18:16 +0200
parents pylons_app/config/environment.py@fefffd6fd5f4
children b75b77ef649d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rhodecode/config/environment.py	Wed Oct 06 03:18:16 2010 +0200
@@ -0,0 +1,79 @@
+"""Pylons environment configuration"""
+from mako.lookup import TemplateLookup
+from pylons.configuration import PylonsConfig
+from pylons.error import handle_mako_error
+from rhodecode.config.routing import make_map
+from rhodecode.lib.auth import set_available_permissions, set_base_path
+from rhodecode.lib.utils import repo2db_mapper, make_ui, set_hg_app_config
+from rhodecode.model import init_model
+from rhodecode.model.hg_model import _get_repos_cached_initial
+from sqlalchemy import engine_from_config
+import logging
+import os
+import rhodecode.lib.app_globals as app_globals
+import rhodecode.lib.helpers
+
+log = logging.getLogger(__name__)
+
+def load_environment(global_conf, app_conf, initial=False):
+    """Configure the Pylons environment via the ``pylons.config``
+    object
+    """
+    config = PylonsConfig()
+    
+    # Pylons paths
+    root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
+    paths = dict(root=root,
+                 controllers=os.path.join(root, 'controllers'),
+                 static_files=os.path.join(root, 'public'),
+                 templates=[os.path.join(root, 'templates')])
+
+    # Initialize config with the basic options
+    config.init_app(global_conf, app_conf, package='rhodecode', paths=paths)
+
+    config['routes.map'] = make_map(config)
+    config['pylons.app_globals'] = app_globals.Globals(config)
+    config['pylons.h'] = rhodecode.lib.helpers
+    
+    # Setup cache object as early as possible
+    import pylons
+    pylons.cache._push_object(config['pylons.app_globals'].cache)
+    
+    # Create the Mako TemplateLookup, with the default auto-escaping
+    config['pylons.app_globals'].mako_lookup = TemplateLookup(
+        directories=paths['templates'],
+        error_handler=handle_mako_error,
+        module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
+        input_encoding='utf-8', default_filters=['escape'],
+        imports=['from webhelpers.html import escape'])
+
+    #sets the c attribute access when don't existing attribute are accessed
+    config['pylons.strict_tmpl_context'] = True
+    test = os.path.split(config['__file__'])[-1] == 'test.ini'
+    if test:
+        from rhodecode.lib.utils import create_test_env, create_test_index
+        create_test_env('/tmp', config)
+        create_test_index('/tmp/*', True)
+        
+    #MULTIPLE DB configs
+    # Setup the SQLAlchemy database engine
+    if config['debug'] and not test:
+        #use query time debugging.
+        from rhodecode.lib.timerproxy import TimerProxy
+        sa_engine_db1 = engine_from_config(config, 'sqlalchemy.db1.',
+                                                            proxy=TimerProxy())
+    else:
+        sa_engine_db1 = engine_from_config(config, 'sqlalchemy.db1.')
+
+    init_model(sa_engine_db1)
+    #init baseui
+    config['pylons.app_globals'].baseui = make_ui('db')
+    
+    repo2db_mapper(_get_repos_cached_initial(config['pylons.app_globals'], initial))
+    set_available_permissions(config)
+    set_base_path(config)
+    set_hg_app_config(config)
+    # CONFIGURATION OPTIONS HERE (note: all config options will override
+    # any Pylons config options)
+    
+    return config