##// END OF EJS Templates
application: moved JS routes generation into pyramid....
marcink -
r1538:5bdec8f6 default
parent child Browse files
Show More
@@ -87,15 +87,6 b' def load_environment(global_conf, app_co'
87
87
88 config['routes.map'] = make_map(config)
88 config['routes.map'] = make_map(config)
89
89
90 if asbool(config.get('generate_js_files', 'false')):
91 jsroutes = config['routes.map'].jsroutes()
92 jsroutes_file_content = generate_jsroutes_content(jsroutes)
93 jsroutes_file_path = os.path.join(
94 paths['static_files'], 'js', 'rhodecode', 'routes.js')
95
96 with io.open(jsroutes_file_path, 'w', encoding='utf-8') as f:
97 f.write(jsroutes_file_content)
98
99 config['pylons.app_globals'] = app_globals.Globals(config)
90 config['pylons.app_globals'] = app_globals.Globals(config)
100 config['pylons.h'] = helpers
91 config['pylons.h'] = helpers
101 rhodecode.CONFIG = config
92 rhodecode.CONFIG = config
@@ -53,7 +53,8 b' from rhodecode.lib.middleware.vcs import'
53 from rhodecode.lib.plugins.utils import register_rhodecode_plugin
53 from rhodecode.lib.plugins.utils import register_rhodecode_plugin
54 from rhodecode.lib.utils2 import aslist as rhodecode_aslist
54 from rhodecode.lib.utils2 import aslist as rhodecode_aslist
55 from rhodecode.subscribers import (
55 from rhodecode.subscribers import (
56 scan_repositories_if_enabled, write_metadata_if_needed)
56 scan_repositories_if_enabled, write_metadata_if_needed,
57 write_js_routes_if_enabled)
57
58
58
59
59 log = logging.getLogger(__name__)
60 log = logging.getLogger(__name__)
@@ -301,6 +302,7 b' def includeme(config):'
301 # Add subscribers.
302 # Add subscribers.
302 config.add_subscriber(scan_repositories_if_enabled, ApplicationCreated)
303 config.add_subscriber(scan_repositories_if_enabled, ApplicationCreated)
303 config.add_subscriber(write_metadata_if_needed, ApplicationCreated)
304 config.add_subscriber(write_metadata_if_needed, ApplicationCreated)
305 config.add_subscriber(write_js_routes_if_enabled, ApplicationCreated)
304
306
305 # Set the authorization policy.
307 # Set the authorization policy.
306 authz_policy = ACLAuthorizationPolicy()
308 authz_policy = ACLAuthorizationPolicy()
@@ -17,7 +17,8 b''
17 # This program is dual-licensed. If you wish to learn more about the
17 # This program is dual-licensed. If you wish to learn more about the
18 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20 import io
21 import re
21 import datetime
22 import datetime
22 import logging
23 import logging
23 import pylons
24 import pylons
@@ -27,9 +28,13 b' import os'
27
28
28 from pyramid.i18n import get_localizer
29 from pyramid.i18n import get_localizer
29 from pyramid.threadlocal import get_current_request
30 from pyramid.threadlocal import get_current_request
31 from pyramid.interfaces import IRoutesMapper
32 from pyramid.settings import asbool
33 from pyramid.path import AssetResolver
30 from threading import Thread
34 from threading import Thread
31
35
32 from rhodecode.translation import _ as tsf
36 from rhodecode.translation import _ as tsf
37 from rhodecode.config.jsroutes import generate_jsroutes_content
33
38
34 import rhodecode
39 import rhodecode
35
40
@@ -173,6 +178,57 b' def write_metadata_if_needed(event):'
173 pass
178 pass
174
179
175
180
181 def write_js_routes_if_enabled(event):
182 registry = event.app.registry
183
184 mapper = registry.queryUtility(IRoutesMapper)
185 _argument_prog = re.compile('\{(.*?)\}|:\((.*)\)')
186
187 def _extract_route_information(route):
188 """
189 Convert a route into tuple(name, path, args), eg:
190 ('show_user', '/profile/%(username)s', ['username'])
191 """
192
193 routepath = route.pattern
194 pattern = route.pattern
195
196 def replace(matchobj):
197 if matchobj.group(1):
198 return "%%(%s)s" % matchobj.group(1).split(':')[0]
199 else:
200 return "%%(%s)s" % matchobj.group(2)
201
202 routepath = _argument_prog.sub(replace, routepath)
203
204 return (
205 route.name,
206 routepath,
207 [(arg[0].split(':')[0] if arg[0] != '' else arg[1])
208 for arg in _argument_prog.findall(pattern)]
209 )
210
211 def get_routes():
212 # pylons routes
213 for route in rhodecode.CONFIG['routes.map'].jsroutes():
214 yield route
215
216 # pyramid routes
217 for route in mapper.get_routes():
218 if not route.name.startswith('__'):
219 yield _extract_route_information(route)
220
221 if asbool(registry.settings.get('generate_js_files', 'false')):
222 static_path = AssetResolver().resolve('rhodecode:public').abspath()
223 jsroutes = get_routes()
224 jsroutes_file_content = generate_jsroutes_content(jsroutes)
225 jsroutes_file_path = os.path.join(
226 static_path, 'js', 'rhodecode', 'routes.js')
227
228 with io.open(jsroutes_file_path, 'w', encoding='utf-8') as f:
229 f.write(jsroutes_file_content)
230
231
176 class Subscriber(object):
232 class Subscriber(object):
177 """
233 """
178 Base class for subscribers to the pyramid event system.
234 Base class for subscribers to the pyramid event system.
General Comments 0
You need to be logged in to leave comments. Login now