3d666facc7605f66fbef8615a8764f388cb36800
[debianmemberportfolio.git] / debianmemberportfolio / config / environment.py
1 # -*- python -*-
2 # -*- coding: utf-8 -*-
3 #
4 # DDPortfolio service environment configuration
5 # Copyright © 2009, 2010, 2011, 2012 Jan Dittberner <jan@dittberner.info>
6 #
7 # This file is part of DDPortfolio service.
8 #
9 # DDPortfolio service is free software: you can redistribute it and/or
10 # modify it under the terms of the GNU Affero General Public License
11 # as published by the Free Software Foundation, either version 3 of
12 # the License, or (at your option) any later version.
13 #
14 # DDPortfolio service is distributed in the hope that it will be
15 # useful, but WITHOUT ANY WARRANTY; without even the implied warranty
16 # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 # Affero General Public License for more details.
18 #
19 # You should have received a copy of the GNU Affero General Public
20 # License along with this program.  If not, see
21 # <http://www.gnu.org/licenses/>.
22 #
23 """Pylons environment configuration"""
24 import os
25
26 from mako.lookup import TemplateLookup
27 from pylons.configuration import PylonsConfig
28 from pylons.error import handle_mako_error
29
30 import ddportfolioservice.lib.app_globals as app_globals
31 import ddportfolioservice.lib.helpers
32 from ddportfolioservice.config.routing import make_map
33
34
35 def load_environment(global_conf, app_conf):
36     """
37     Configure the Pylons environment via the ``pylons.config`` object
38     """
39     config = PylonsConfig()
40
41     # Pylons paths
42     root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
43     paths = dict(root=root,
44                  controllers=os.path.join(root, 'controllers'),
45                  static_files=os.path.join(root, 'public'),
46                  templates=[os.path.join(root, 'templates')])
47
48     # Initialize config with the basic options
49     config.init_app(
50         global_conf, app_conf, package='ddportfolioservice', paths=paths)
51
52     config['routes.map'] = make_map(config)
53     config['pylons.app_globals'] = app_globals.Globals(config)
54     config['pylons.h'] = ddportfolioservice.lib.helpers
55
56     # Setup cache object as early as possible
57     import pylons
58     pylons.cache._push_object(config['pylons.app_globals'].cache)
59
60     # Create the Mako TemplateLookup, with the default auto-escaping
61     config['pylons.app_globals'].mako_lookup = TemplateLookup(
62         directories=paths['templates'],
63         error_handler=handle_mako_error,
64         module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
65         input_encoding='utf-8', default_filters=['escape'],
66         imports=['from webhelpers.html import escape'])
67
68     # CONFIGURATION OPTIONS HERE (note: all config options will override
69     # any Pylons config options)
70
71     return config