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