##// END OF EJS Templates
utils: updated request generation so ishell can run some automation scripts.
marcink -
r3224:ea959a16 default
parent child Browse files
Show More
@@ -1,59 +1,76 b''
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Copyright (C) 2016-2018 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 import os
22 22 from pyramid.compat import configparser
23 23 from pyramid.paster import bootstrap as pyramid_bootstrap, setup_logging # noqa
24 24 from pyramid.scripting import prepare
25 25
26 26 from rhodecode.lib.request import Request
27 27
28 28
29 29 def get_config(ini_path, **kwargs):
30 30 parser = configparser.ConfigParser(**kwargs)
31 31 parser.read(ini_path)
32 32 return parser
33 33
34 34
35 35 def get_app_config(ini_path):
36 36 from paste.deploy.loadwsgi import appconfig
37 37 return appconfig('config:{}'.format(ini_path), relative_to=os.getcwd())
38 38
39 39
40 class BootstrappedRequest(Request):
41 """
42 Special version of Request Which has some available methods like in pyramid.
43 Some code (used for template rendering) requires this, and we unsure it's present.
44 """
45
46 def translate(self, msg):
47 return msg
48
49 def plularize(self, singular, plural, n):
50 return singular
51
52 def get_partial_renderer(self, tmpl_name):
53 from rhodecode.lib.partial_renderer import get_partial_renderer
54 return get_partial_renderer(request=self, tmpl_name=tmpl_name)
55
56
40 57 def bootstrap(config_uri, request=None, options=None, env=None):
41 58 if env:
42 59 os.environ.update(env)
43 60
44 61 config = get_config(config_uri)
45 62 base_url = 'http://rhodecode.local'
46 63 try:
47 64 base_url = config.get('app:main', 'app.base_url')
48 65 except (configparser.NoSectionError, configparser.NoOptionError):
49 66 pass
50 67
51 request = request or Request.blank('/', base_url=base_url)
68 request = request or BootstrappedRequest.blank('/', base_url=base_url)
52 69
53 70 return pyramid_bootstrap(config_uri, request=request, options=options)
54 71
55 72
56 73 def prepare_request(environ):
57 74 request = Request.blank('/', environ=environ)
58 75 prepare(request) # set pyramid threadlocal request
59 76 return request
General Comments 0
You need to be logged in to leave comments. Login now