##// END OF EJS Templates
javascript: add default value for js generate ini option
dan -
r264:1372c5bb default
parent child Browse files
Show More
@@ -1,192 +1,192 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2010-2016 RhodeCode GmbH
4 4 #
5 5 # This program is free software: you can redistribute it and/or modify
6 6 # it under the terms of the GNU Affero General Public License, version 3
7 7 # (only), as published by the Free Software Foundation.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU Affero General Public License
15 15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 16 #
17 17 # This program is dual-licensed. If you wish to learn more about the
18 18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20
21 21 """
22 22 Pylons environment configuration
23 23 """
24 24
25 25 import os
26 26 import logging
27 27 import rhodecode
28 28 import platform
29 29 import re
30 30 import io
31 31
32 32 from mako.lookup import TemplateLookup
33 33 from pylons.configuration import PylonsConfig
34 34 from pylons.error import handle_mako_error
35 35 from pyramid.settings import asbool
36 36
37 37 # don't remove this import it does magic for celery
38 38 from rhodecode.lib import celerypylons # noqa
39 39
40 40 import rhodecode.lib.app_globals as app_globals
41 41
42 42 from rhodecode.config import utils
43 43 from rhodecode.config.routing import make_map
44 44 from rhodecode.config.jsroutes import generate_jsroutes_content
45 45
46 46 from rhodecode.lib import helpers
47 47 from rhodecode.lib.auth import set_available_permissions
48 48 from rhodecode.lib.utils import (
49 49 repo2db_mapper, make_db_config, set_rhodecode_config,
50 50 load_rcextensions)
51 51 from rhodecode.lib.utils2 import str2bool, aslist
52 52 from rhodecode.lib.vcs import connect_vcs, start_vcs_server
53 53 from rhodecode.model.scm import ScmModel
54 54
55 55 log = logging.getLogger(__name__)
56 56
57 57 def load_environment(global_conf, app_conf, initial=False,
58 58 test_env=None, test_index=None):
59 59 """
60 60 Configure the Pylons environment via the ``pylons.config``
61 61 object
62 62 """
63 63 config = PylonsConfig()
64 64
65 65
66 66 # Pylons paths
67 67 root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
68 68 paths = {
69 69 'root': root,
70 70 'controllers': os.path.join(root, 'controllers'),
71 71 'static_files': os.path.join(root, 'public'),
72 72 'templates': [os.path.join(root, 'templates')],
73 73 }
74 74
75 75 # Initialize config with the basic options
76 76 config.init_app(global_conf, app_conf, package='rhodecode', paths=paths)
77 77
78 78 # store some globals into rhodecode
79 79 rhodecode.CELERY_ENABLED = str2bool(config['app_conf'].get('use_celery'))
80 80 rhodecode.CELERY_EAGER = str2bool(
81 81 config['app_conf'].get('celery.always.eager'))
82 82
83 83 config['routes.map'] = make_map(config)
84 84
85 if asbool(config['generate_js_files']):
85 if asbool(config.get('generate_js_files', 'false')):
86 86 jsroutes = config['routes.map'].jsroutes()
87 87 jsroutes_file_content = generate_jsroutes_content(jsroutes)
88 88 jsroutes_file_path = os.path.join(
89 89 paths['static_files'], 'js', 'rhodecode', 'routes.js')
90 90
91 91 with io.open(jsroutes_file_path, 'w', encoding='utf-8') as f:
92 92 f.write(jsroutes_file_content)
93 93
94 94 config['pylons.app_globals'] = app_globals.Globals(config)
95 95 config['pylons.h'] = helpers
96 96 rhodecode.CONFIG = config
97 97
98 98 load_rcextensions(root_path=config['here'])
99 99
100 100 # Setup cache object as early as possible
101 101 import pylons
102 102 pylons.cache._push_object(config['pylons.app_globals'].cache)
103 103
104 104 # Create the Mako TemplateLookup, with the default auto-escaping
105 105 config['pylons.app_globals'].mako_lookup = TemplateLookup(
106 106 directories=paths['templates'],
107 107 error_handler=handle_mako_error,
108 108 module_directory=os.path.join(app_conf['cache_dir'], 'templates'),
109 109 input_encoding='utf-8', default_filters=['escape'],
110 110 imports=['from webhelpers.html import escape'])
111 111
112 112 # sets the c attribute access when don't existing attribute are accessed
113 113 config['pylons.strict_tmpl_context'] = True
114 114
115 115 # Limit backends to "vcs.backends" from configuration
116 116 backends = config['vcs.backends'] = aslist(
117 117 config.get('vcs.backends', 'hg,git'), sep=',')
118 118 for alias in rhodecode.BACKENDS.keys():
119 119 if alias not in backends:
120 120 del rhodecode.BACKENDS[alias]
121 121 log.info("Enabled backends: %s", backends)
122 122
123 123 # initialize vcs client and optionally run the server if enabled
124 124 vcs_server_uri = config.get('vcs.server', '')
125 125 vcs_server_enabled = str2bool(config.get('vcs.server.enable', 'true'))
126 126 start_server = (
127 127 str2bool(config.get('vcs.start_server', 'false')) and
128 128 not int(os.environ.get('RC_VCSSERVER_TEST_DISABLE', '0')))
129 129 if vcs_server_enabled and start_server:
130 130 log.info("Starting vcsserver")
131 131 start_vcs_server(server_and_port=vcs_server_uri,
132 132 protocol=utils.get_vcs_server_protocol(config),
133 133 log_level=config['vcs.server.log_level'])
134 134
135 135 set_available_permissions(config)
136 136 db_cfg = make_db_config(clear_session=True)
137 137
138 138 repos_path = list(db_cfg.items('paths'))[0][1]
139 139 config['base_path'] = repos_path
140 140
141 141 config['vcs.hooks.direct_calls'] = _use_direct_hook_calls(config)
142 142 config['vcs.hooks.protocol'] = _get_vcs_hooks_protocol(config)
143 143
144 144 # store db config also in main global CONFIG
145 145 set_rhodecode_config(config)
146 146
147 147 # configure instance id
148 148 utils.set_instance_id(config)
149 149
150 150 # CONFIGURATION OPTIONS HERE (note: all config options will override
151 151 # any Pylons config options)
152 152
153 153 # store config reference into our module to skip import magic of pylons
154 154 rhodecode.CONFIG.update(config)
155 155
156 156 utils.configure_pyro4(config)
157 157 utils.configure_vcs(config)
158 158 if vcs_server_enabled:
159 159 connect_vcs(vcs_server_uri, utils.get_vcs_server_protocol(config))
160 160
161 161 import_on_startup = str2bool(config.get('startup.import_repos', False))
162 162 if vcs_server_enabled and import_on_startup:
163 163 repo2db_mapper(ScmModel().repo_scan(repos_path), remove_obsolete=False)
164 164 return config
165 165
166 166
167 167 def _use_direct_hook_calls(config):
168 168 default_direct_hook_calls = 'false'
169 169 direct_hook_calls = str2bool(
170 170 config.get('vcs.hooks.direct_calls', default_direct_hook_calls))
171 171 return direct_hook_calls
172 172
173 173
174 174 def _get_vcs_hooks_protocol(config):
175 175 protocol = config.get('vcs.hooks.protocol', 'pyro4').lower()
176 176 return protocol
177 177
178 178
179 179 def load_pyramid_environment(global_config, settings):
180 180 # Some parts of the code expect a merge of global and app settings.
181 181 settings_merged = global_config.copy()
182 182 settings_merged.update(settings)
183 183
184 184 # If this is a test run we prepare the test environment like
185 185 # creating a test database, test search index and test repositories.
186 186 # This has to be done before the database connection is initialized.
187 187 if settings['is_test']:
188 188 rhodecode.is_test = True
189 189 utils.initialize_test_environment(settings_merged)
190 190
191 191 # Initialize the database connection.
192 192 utils.initialize_database(settings_merged)
General Comments 0
You need to be logged in to leave comments. Login now