##// END OF EJS Templates
cleanup: remove duplicate route
dan -
r96:0dafa7a7 default
parent child Browse files
Show More
@@ -1,1153 +1,1151 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2
2
3 # Copyright (C) 2010-2016 RhodeCode GmbH
3 # Copyright (C) 2010-2016 RhodeCode GmbH
4 #
4 #
5 # This program is free software: you can redistribute it and/or modify
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License, version 3
6 # it under the terms of the GNU Affero General Public License, version 3
7 # (only), as published by the Free Software Foundation.
7 # (only), as published by the Free Software Foundation.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU Affero General Public License
14 # You should have received a copy of the GNU Affero General Public License
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
15 # along with this program. If not, see <http://www.gnu.org/licenses/>.
16 #
16 #
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
21 """
21 """
22 Routes configuration
22 Routes configuration
23
23
24 The more specific and detailed routes should be defined first so they
24 The more specific and detailed routes should be defined first so they
25 may take precedent over the more generic routes. For more information
25 may take precedent over the more generic routes. For more information
26 refer to the routes manual at http://routes.groovie.org/docs/
26 refer to the routes manual at http://routes.groovie.org/docs/
27
27
28 IMPORTANT: if you change any routing here, make sure to take a look at lib/base.py
28 IMPORTANT: if you change any routing here, make sure to take a look at lib/base.py
29 and _route_name variable which uses some of stored naming here to do redirects.
29 and _route_name variable which uses some of stored naming here to do redirects.
30 """
30 """
31 import os
31 import os
32 import re
32 import re
33 from routes import Mapper
33 from routes import Mapper
34
34
35 from rhodecode.config import routing_links
35 from rhodecode.config import routing_links
36
36
37 # prefix for non repository related links needs to be prefixed with `/`
37 # prefix for non repository related links needs to be prefixed with `/`
38 ADMIN_PREFIX = '/_admin'
38 ADMIN_PREFIX = '/_admin'
39
39
40 # Default requirements for URL parts
40 # Default requirements for URL parts
41 URL_NAME_REQUIREMENTS = {
41 URL_NAME_REQUIREMENTS = {
42 # group name can have a slash in them, but they must not end with a slash
42 # group name can have a slash in them, but they must not end with a slash
43 'group_name': r'.*?[^/]',
43 'group_name': r'.*?[^/]',
44 # repo names can have a slash in them, but they must not end with a slash
44 # repo names can have a slash in them, but they must not end with a slash
45 'repo_name': r'.*?[^/]',
45 'repo_name': r'.*?[^/]',
46 # file path eats up everything at the end
46 # file path eats up everything at the end
47 'f_path': r'.*',
47 'f_path': r'.*',
48 # reference types
48 # reference types
49 'source_ref_type': '(branch|book|tag|rev|\%\(source_ref_type\)s)',
49 'source_ref_type': '(branch|book|tag|rev|\%\(source_ref_type\)s)',
50 'target_ref_type': '(branch|book|tag|rev|\%\(target_ref_type\)s)',
50 'target_ref_type': '(branch|book|tag|rev|\%\(target_ref_type\)s)',
51 }
51 }
52
52
53
53
54 class JSRoutesAwareMapper(Mapper):
54 class JSRoutesAwareMapper(Mapper):
55 """
55 """
56 Wrapper for routes.Mapper to make pyroutes compatible url definitions
56 Wrapper for routes.Mapper to make pyroutes compatible url definitions
57 """
57 """
58 _named_route_regex = re.compile(r'^[a-z-_0-9A-Z]+$')
58 _named_route_regex = re.compile(r'^[a-z-_0-9A-Z]+$')
59 _argument_prog = re.compile('\{(.*?)\}|:\((.*)\)')
59 _argument_prog = re.compile('\{(.*?)\}|:\((.*)\)')
60 def __init__(self, *args, **kw):
60 def __init__(self, *args, **kw):
61 super(JSRoutesAwareMapper, self).__init__(*args, **kw)
61 super(JSRoutesAwareMapper, self).__init__(*args, **kw)
62 self._jsroutes = []
62 self._jsroutes = []
63
63
64 def connect(self, *args, **kw):
64 def connect(self, *args, **kw):
65 """
65 """
66 Wrapper for connect to take an extra argument jsroute=True
66 Wrapper for connect to take an extra argument jsroute=True
67
67
68 :param jsroute: boolean, if True will add the route to the pyroutes list
68 :param jsroute: boolean, if True will add the route to the pyroutes list
69 """
69 """
70 if kw.pop('jsroute', False):
70 if kw.pop('jsroute', False):
71 if not self._named_route_regex.match(args[0]):
71 if not self._named_route_regex.match(args[0]):
72 # import pdb;pdb.set_trace()
72 # import pdb;pdb.set_trace()
73 raise Exception('only named routes can be added to pyroutes')
73 raise Exception('only named routes can be added to pyroutes')
74 self._jsroutes.append(args[0])
74 self._jsroutes.append(args[0])
75
75
76 super(JSRoutesAwareMapper, self).connect(*args, **kw)
76 super(JSRoutesAwareMapper, self).connect(*args, **kw)
77
77
78 def _extract_route_information(self, route):
78 def _extract_route_information(self, route):
79 """
79 """
80 Convert a route into tuple(name, path, args), eg:
80 Convert a route into tuple(name, path, args), eg:
81 ('user_profile', '/profile/%(username)s', ['username'])
81 ('user_profile', '/profile/%(username)s', ['username'])
82 """
82 """
83 routepath = route.routepath
83 routepath = route.routepath
84 def replace(matchobj):
84 def replace(matchobj):
85 if matchobj.group(1):
85 if matchobj.group(1):
86 return "%%(%s)s" % matchobj.group(1).split(':')[0]
86 return "%%(%s)s" % matchobj.group(1).split(':')[0]
87 else:
87 else:
88 return "%%(%s)s" % matchobj.group(2)
88 return "%%(%s)s" % matchobj.group(2)
89
89
90 routepath = self._argument_prog.sub(replace, routepath)
90 routepath = self._argument_prog.sub(replace, routepath)
91 return (
91 return (
92 route.name,
92 route.name,
93 routepath,
93 routepath,
94 [(arg[0].split(':')[0] if arg[0] != '' else arg[1])
94 [(arg[0].split(':')[0] if arg[0] != '' else arg[1])
95 for arg in self._argument_prog.findall(route.routepath)]
95 for arg in self._argument_prog.findall(route.routepath)]
96 )
96 )
97
97
98 def jsroutes(self):
98 def jsroutes(self):
99 """
99 """
100 Return a list of pyroutes.js compatible routes
100 Return a list of pyroutes.js compatible routes
101 """
101 """
102 for route_name in self._jsroutes:
102 for route_name in self._jsroutes:
103 yield self._extract_route_information(self._routenames[route_name])
103 yield self._extract_route_information(self._routenames[route_name])
104
104
105
105
106 def make_map(config):
106 def make_map(config):
107 """Create, configure and return the routes Mapper"""
107 """Create, configure and return the routes Mapper"""
108 rmap = JSRoutesAwareMapper(directory=config['pylons.paths']['controllers'],
108 rmap = JSRoutesAwareMapper(directory=config['pylons.paths']['controllers'],
109 always_scan=config['debug'])
109 always_scan=config['debug'])
110 rmap.minimization = False
110 rmap.minimization = False
111 rmap.explicit = False
111 rmap.explicit = False
112
112
113 from rhodecode.lib.utils2 import str2bool
113 from rhodecode.lib.utils2 import str2bool
114 from rhodecode.model import repo, repo_group
114 from rhodecode.model import repo, repo_group
115
115
116 def check_repo(environ, match_dict):
116 def check_repo(environ, match_dict):
117 """
117 """
118 check for valid repository for proper 404 handling
118 check for valid repository for proper 404 handling
119
119
120 :param environ:
120 :param environ:
121 :param match_dict:
121 :param match_dict:
122 """
122 """
123 repo_name = match_dict.get('repo_name')
123 repo_name = match_dict.get('repo_name')
124
124
125 if match_dict.get('f_path'):
125 if match_dict.get('f_path'):
126 # fix for multiple initial slashes that causes errors
126 # fix for multiple initial slashes that causes errors
127 match_dict['f_path'] = match_dict['f_path'].lstrip('/')
127 match_dict['f_path'] = match_dict['f_path'].lstrip('/')
128 repo_model = repo.RepoModel()
128 repo_model = repo.RepoModel()
129 by_name_match = repo_model.get_by_repo_name(repo_name)
129 by_name_match = repo_model.get_by_repo_name(repo_name)
130 # if we match quickly from database, short circuit the operation,
130 # if we match quickly from database, short circuit the operation,
131 # and validate repo based on the type.
131 # and validate repo based on the type.
132 if by_name_match:
132 if by_name_match:
133 return True
133 return True
134
134
135 by_id_match = repo_model.get_repo_by_id(repo_name)
135 by_id_match = repo_model.get_repo_by_id(repo_name)
136 if by_id_match:
136 if by_id_match:
137 repo_name = by_id_match.repo_name
137 repo_name = by_id_match.repo_name
138 match_dict['repo_name'] = repo_name
138 match_dict['repo_name'] = repo_name
139 return True
139 return True
140
140
141 return False
141 return False
142
142
143 def check_group(environ, match_dict):
143 def check_group(environ, match_dict):
144 """
144 """
145 check for valid repository group path for proper 404 handling
145 check for valid repository group path for proper 404 handling
146
146
147 :param environ:
147 :param environ:
148 :param match_dict:
148 :param match_dict:
149 """
149 """
150 repo_group_name = match_dict.get('group_name')
150 repo_group_name = match_dict.get('group_name')
151 repo_group_model = repo_group.RepoGroupModel()
151 repo_group_model = repo_group.RepoGroupModel()
152 by_name_match = repo_group_model.get_by_group_name(repo_group_name)
152 by_name_match = repo_group_model.get_by_group_name(repo_group_name)
153 if by_name_match:
153 if by_name_match:
154 return True
154 return True
155
155
156 return False
156 return False
157
157
158 def check_user_group(environ, match_dict):
158 def check_user_group(environ, match_dict):
159 """
159 """
160 check for valid user group for proper 404 handling
160 check for valid user group for proper 404 handling
161
161
162 :param environ:
162 :param environ:
163 :param match_dict:
163 :param match_dict:
164 """
164 """
165 return True
165 return True
166
166
167 def check_int(environ, match_dict):
167 def check_int(environ, match_dict):
168 return match_dict.get('id').isdigit()
168 return match_dict.get('id').isdigit()
169
169
170 # The ErrorController route (handles 404/500 error pages); it should
170 # The ErrorController route (handles 404/500 error pages); it should
171 # likely stay at the top, ensuring it can always be resolved
171 # likely stay at the top, ensuring it can always be resolved
172 rmap.connect('/error/{action}', controller='error')
172 rmap.connect('/error/{action}', controller='error')
173 rmap.connect('/error/{action}/{id}', controller='error')
173 rmap.connect('/error/{action}/{id}', controller='error')
174
174
175 #==========================================================================
175 #==========================================================================
176 # CUSTOM ROUTES HERE
176 # CUSTOM ROUTES HERE
177 #==========================================================================
177 #==========================================================================
178
178
179 # MAIN PAGE
179 # MAIN PAGE
180 rmap.connect('home', '/', controller='home', action='index', jsroute=True)
180 rmap.connect('home', '/', controller='home', action='index', jsroute=True)
181 rmap.connect('goto_switcher_data', '/_goto_data', controller='home',
181 rmap.connect('goto_switcher_data', '/_goto_data', controller='home',
182 action='goto_switcher_data')
182 action='goto_switcher_data')
183 rmap.connect('repo_list_data', '/_repos', controller='home',
183 rmap.connect('repo_list_data', '/_repos', controller='home',
184 action='repo_list_data')
184 action='repo_list_data')
185
185
186 rmap.connect('user_autocomplete_data', '/_users', controller='home',
186 rmap.connect('user_autocomplete_data', '/_users', controller='home',
187 action='user_autocomplete_data', jsroute=True)
187 action='user_autocomplete_data', jsroute=True)
188 rmap.connect('user_group_autocomplete_data', '/_user_groups', controller='home',
188 rmap.connect('user_group_autocomplete_data', '/_user_groups', controller='home',
189 action='user_group_autocomplete_data')
189 action='user_group_autocomplete_data')
190
190
191 rmap.connect(
191 rmap.connect(
192 'user_profile', '/_profiles/{username}', controller='users',
192 'user_profile', '/_profiles/{username}', controller='users',
193 action='user_profile')
193 action='user_profile')
194
194
195 # TODO: johbo: Static links, to be replaced by our redirection mechanism
195 # TODO: johbo: Static links, to be replaced by our redirection mechanism
196 rmap.connect('rst_help',
196 rmap.connect('rst_help',
197 'http://docutils.sourceforge.net/docs/user/rst/quickref.html',
197 'http://docutils.sourceforge.net/docs/user/rst/quickref.html',
198 _static=True)
198 _static=True)
199 rmap.connect('markdown_help',
199 rmap.connect('markdown_help',
200 'http://daringfireball.net/projects/markdown/syntax',
200 'http://daringfireball.net/projects/markdown/syntax',
201 _static=True)
201 _static=True)
202 rmap.connect('rhodecode_official', 'https://rhodecode.com', _static=True)
202 rmap.connect('rhodecode_official', 'https://rhodecode.com', _static=True)
203 rmap.connect('rhodecode_support', 'https://rhodecode.com/help/', _static=True)
203 rmap.connect('rhodecode_support', 'https://rhodecode.com/help/', _static=True)
204 rmap.connect('rhodecode_translations', 'https://rhodecode.com/translate/enterprise', _static=True)
204 rmap.connect('rhodecode_translations', 'https://rhodecode.com/translate/enterprise', _static=True)
205 # TODO: anderson - making this a static link since redirect won't play
205 # TODO: anderson - making this a static link since redirect won't play
206 # nice with POST requests
206 # nice with POST requests
207 rmap.connect('enterprise_license_convert_from_old',
207 rmap.connect('enterprise_license_convert_from_old',
208 'https://rhodecode.com/u/license-upgrade',
208 'https://rhodecode.com/u/license-upgrade',
209 _static=True)
209 _static=True)
210
210
211 routing_links.connect_redirection_links(rmap)
211 routing_links.connect_redirection_links(rmap)
212
212
213 rmap.connect('ping', '%s/ping' % (ADMIN_PREFIX,), controller='home', action='ping')
213 rmap.connect('ping', '%s/ping' % (ADMIN_PREFIX,), controller='home', action='ping')
214 rmap.connect('error_test', '%s/error_test' % (ADMIN_PREFIX,), controller='home', action='error_test')
214 rmap.connect('error_test', '%s/error_test' % (ADMIN_PREFIX,), controller='home', action='error_test')
215
215
216 # ADMIN REPOSITORY ROUTES
216 # ADMIN REPOSITORY ROUTES
217 with rmap.submapper(path_prefix=ADMIN_PREFIX,
217 with rmap.submapper(path_prefix=ADMIN_PREFIX,
218 controller='admin/repos') as m:
218 controller='admin/repos') as m:
219 m.connect('repos', '/repos',
219 m.connect('repos', '/repos',
220 action='create', conditions={'method': ['POST']})
220 action='create', conditions={'method': ['POST']})
221 m.connect('repos', '/repos',
221 m.connect('repos', '/repos',
222 action='index', conditions={'method': ['GET']})
222 action='index', conditions={'method': ['GET']})
223 m.connect('new_repo', '/create_repository', jsroute=True,
223 m.connect('new_repo', '/create_repository', jsroute=True,
224 action='create_repository', conditions={'method': ['GET']})
224 action='create_repository', conditions={'method': ['GET']})
225 m.connect('/repos/{repo_name}',
225 m.connect('/repos/{repo_name}',
226 action='update', conditions={'method': ['PUT'],
226 action='update', conditions={'method': ['PUT'],
227 'function': check_repo},
227 'function': check_repo},
228 requirements=URL_NAME_REQUIREMENTS)
228 requirements=URL_NAME_REQUIREMENTS)
229 m.connect('delete_repo', '/repos/{repo_name}',
229 m.connect('delete_repo', '/repos/{repo_name}',
230 action='delete', conditions={'method': ['DELETE']},
230 action='delete', conditions={'method': ['DELETE']},
231 requirements=URL_NAME_REQUIREMENTS)
231 requirements=URL_NAME_REQUIREMENTS)
232 m.connect('repo', '/repos/{repo_name}',
232 m.connect('repo', '/repos/{repo_name}',
233 action='show', conditions={'method': ['GET'],
233 action='show', conditions={'method': ['GET'],
234 'function': check_repo},
234 'function': check_repo},
235 requirements=URL_NAME_REQUIREMENTS)
235 requirements=URL_NAME_REQUIREMENTS)
236
236
237 # ADMIN REPOSITORY GROUPS ROUTES
237 # ADMIN REPOSITORY GROUPS ROUTES
238 with rmap.submapper(path_prefix=ADMIN_PREFIX,
238 with rmap.submapper(path_prefix=ADMIN_PREFIX,
239 controller='admin/repo_groups') as m:
239 controller='admin/repo_groups') as m:
240 m.connect('repo_groups', '/repo_groups',
240 m.connect('repo_groups', '/repo_groups',
241 action='create', conditions={'method': ['POST']})
241 action='create', conditions={'method': ['POST']})
242 m.connect('repo_groups', '/repo_groups',
242 m.connect('repo_groups', '/repo_groups',
243 action='index', conditions={'method': ['GET']})
243 action='index', conditions={'method': ['GET']})
244 m.connect('new_repo_group', '/repo_groups/new',
244 m.connect('new_repo_group', '/repo_groups/new',
245 action='new', conditions={'method': ['GET']})
245 action='new', conditions={'method': ['GET']})
246 m.connect('update_repo_group', '/repo_groups/{group_name}',
246 m.connect('update_repo_group', '/repo_groups/{group_name}',
247 action='update', conditions={'method': ['PUT'],
247 action='update', conditions={'method': ['PUT'],
248 'function': check_group},
248 'function': check_group},
249 requirements=URL_NAME_REQUIREMENTS)
249 requirements=URL_NAME_REQUIREMENTS)
250
250
251 # EXTRAS REPO GROUP ROUTES
251 # EXTRAS REPO GROUP ROUTES
252 m.connect('edit_repo_group', '/repo_groups/{group_name}/edit',
252 m.connect('edit_repo_group', '/repo_groups/{group_name}/edit',
253 action='edit',
253 action='edit',
254 conditions={'method': ['GET'], 'function': check_group},
254 conditions={'method': ['GET'], 'function': check_group},
255 requirements=URL_NAME_REQUIREMENTS)
255 requirements=URL_NAME_REQUIREMENTS)
256 m.connect('edit_repo_group', '/repo_groups/{group_name}/edit',
256 m.connect('edit_repo_group', '/repo_groups/{group_name}/edit',
257 action='edit',
257 action='edit',
258 conditions={'method': ['PUT'], 'function': check_group},
258 conditions={'method': ['PUT'], 'function': check_group},
259 requirements=URL_NAME_REQUIREMENTS)
259 requirements=URL_NAME_REQUIREMENTS)
260
260
261 m.connect('edit_repo_group_advanced', '/repo_groups/{group_name}/edit/advanced',
261 m.connect('edit_repo_group_advanced', '/repo_groups/{group_name}/edit/advanced',
262 action='edit_repo_group_advanced',
262 action='edit_repo_group_advanced',
263 conditions={'method': ['GET'], 'function': check_group},
263 conditions={'method': ['GET'], 'function': check_group},
264 requirements=URL_NAME_REQUIREMENTS)
264 requirements=URL_NAME_REQUIREMENTS)
265 m.connect('edit_repo_group_advanced', '/repo_groups/{group_name}/edit/advanced',
265 m.connect('edit_repo_group_advanced', '/repo_groups/{group_name}/edit/advanced',
266 action='edit_repo_group_advanced',
266 action='edit_repo_group_advanced',
267 conditions={'method': ['PUT'], 'function': check_group},
267 conditions={'method': ['PUT'], 'function': check_group},
268 requirements=URL_NAME_REQUIREMENTS)
268 requirements=URL_NAME_REQUIREMENTS)
269
269
270 m.connect('edit_repo_group_perms', '/repo_groups/{group_name}/edit/permissions',
270 m.connect('edit_repo_group_perms', '/repo_groups/{group_name}/edit/permissions',
271 action='edit_repo_group_perms',
271 action='edit_repo_group_perms',
272 conditions={'method': ['GET'], 'function': check_group},
272 conditions={'method': ['GET'], 'function': check_group},
273 requirements=URL_NAME_REQUIREMENTS)
273 requirements=URL_NAME_REQUIREMENTS)
274 m.connect('edit_repo_group_perms', '/repo_groups/{group_name}/edit/permissions',
274 m.connect('edit_repo_group_perms', '/repo_groups/{group_name}/edit/permissions',
275 action='update_perms',
275 action='update_perms',
276 conditions={'method': ['PUT'], 'function': check_group},
276 conditions={'method': ['PUT'], 'function': check_group},
277 requirements=URL_NAME_REQUIREMENTS)
277 requirements=URL_NAME_REQUIREMENTS)
278
278
279 m.connect('delete_repo_group', '/repo_groups/{group_name}',
279 m.connect('delete_repo_group', '/repo_groups/{group_name}',
280 action='delete', conditions={'method': ['DELETE'],
280 action='delete', conditions={'method': ['DELETE'],
281 'function': check_group},
281 'function': check_group},
282 requirements=URL_NAME_REQUIREMENTS)
282 requirements=URL_NAME_REQUIREMENTS)
283
283
284 # ADMIN USER ROUTES
284 # ADMIN USER ROUTES
285 with rmap.submapper(path_prefix=ADMIN_PREFIX,
285 with rmap.submapper(path_prefix=ADMIN_PREFIX,
286 controller='admin/users') as m:
286 controller='admin/users') as m:
287 m.connect('users', '/users',
287 m.connect('users', '/users',
288 action='create', conditions={'method': ['POST']})
288 action='create', conditions={'method': ['POST']})
289 m.connect('users', '/users',
289 m.connect('users', '/users',
290 action='index', conditions={'method': ['GET']})
290 action='index', conditions={'method': ['GET']})
291 m.connect('new_user', '/users/new',
291 m.connect('new_user', '/users/new',
292 action='new', conditions={'method': ['GET']})
292 action='new', conditions={'method': ['GET']})
293 m.connect('update_user', '/users/{user_id}',
293 m.connect('update_user', '/users/{user_id}',
294 action='update', conditions={'method': ['PUT']})
294 action='update', conditions={'method': ['PUT']})
295 m.connect('delete_user', '/users/{user_id}',
295 m.connect('delete_user', '/users/{user_id}',
296 action='delete', conditions={'method': ['DELETE']})
296 action='delete', conditions={'method': ['DELETE']})
297 m.connect('edit_user', '/users/{user_id}/edit',
297 m.connect('edit_user', '/users/{user_id}/edit',
298 action='edit', conditions={'method': ['GET']})
298 action='edit', conditions={'method': ['GET']})
299 m.connect('user', '/users/{user_id}',
299 m.connect('user', '/users/{user_id}',
300 action='show', conditions={'method': ['GET']})
300 action='show', conditions={'method': ['GET']})
301 m.connect('force_password_reset_user', '/users/{user_id}/password_reset',
301 m.connect('force_password_reset_user', '/users/{user_id}/password_reset',
302 action='reset_password', conditions={'method': ['POST']})
302 action='reset_password', conditions={'method': ['POST']})
303 m.connect('create_personal_repo_group', '/users/{user_id}/create_repo_group',
303 m.connect('create_personal_repo_group', '/users/{user_id}/create_repo_group',
304 action='create_personal_repo_group', conditions={'method': ['POST']})
304 action='create_personal_repo_group', conditions={'method': ['POST']})
305
305
306 # EXTRAS USER ROUTES
306 # EXTRAS USER ROUTES
307 m.connect('edit_user_advanced', '/users/{user_id}/edit/advanced',
307 m.connect('edit_user_advanced', '/users/{user_id}/edit/advanced',
308 action='edit_advanced', conditions={'method': ['GET']})
308 action='edit_advanced', conditions={'method': ['GET']})
309 m.connect('edit_user_advanced', '/users/{user_id}/edit/advanced',
309 m.connect('edit_user_advanced', '/users/{user_id}/edit/advanced',
310 action='update_advanced', conditions={'method': ['PUT']})
310 action='update_advanced', conditions={'method': ['PUT']})
311
311
312 m.connect('edit_user_auth_tokens', '/users/{user_id}/edit/auth_tokens',
312 m.connect('edit_user_auth_tokens', '/users/{user_id}/edit/auth_tokens',
313 action='edit_auth_tokens', conditions={'method': ['GET']})
313 action='edit_auth_tokens', conditions={'method': ['GET']})
314 m.connect('edit_user_auth_tokens', '/users/{user_id}/edit/auth_tokens',
314 m.connect('edit_user_auth_tokens', '/users/{user_id}/edit/auth_tokens',
315 action='add_auth_token', conditions={'method': ['PUT']})
315 action='add_auth_token', conditions={'method': ['PUT']})
316 m.connect('edit_user_auth_tokens', '/users/{user_id}/edit/auth_tokens',
316 m.connect('edit_user_auth_tokens', '/users/{user_id}/edit/auth_tokens',
317 action='delete_auth_token', conditions={'method': ['DELETE']})
317 action='delete_auth_token', conditions={'method': ['DELETE']})
318
318
319 m.connect('edit_user_global_perms', '/users/{user_id}/edit/global_permissions',
319 m.connect('edit_user_global_perms', '/users/{user_id}/edit/global_permissions',
320 action='edit_global_perms', conditions={'method': ['GET']})
320 action='edit_global_perms', conditions={'method': ['GET']})
321 m.connect('edit_user_global_perms', '/users/{user_id}/edit/global_permissions',
321 m.connect('edit_user_global_perms', '/users/{user_id}/edit/global_permissions',
322 action='update_global_perms', conditions={'method': ['PUT']})
322 action='update_global_perms', conditions={'method': ['PUT']})
323
323
324 m.connect('edit_user_perms_summary', '/users/{user_id}/edit/permissions_summary',
324 m.connect('edit_user_perms_summary', '/users/{user_id}/edit/permissions_summary',
325 action='edit_perms_summary', conditions={'method': ['GET']})
325 action='edit_perms_summary', conditions={'method': ['GET']})
326
326
327 m.connect('edit_user_emails', '/users/{user_id}/edit/emails',
327 m.connect('edit_user_emails', '/users/{user_id}/edit/emails',
328 action='edit_emails', conditions={'method': ['GET']})
328 action='edit_emails', conditions={'method': ['GET']})
329 m.connect('edit_user_emails', '/users/{user_id}/edit/emails',
329 m.connect('edit_user_emails', '/users/{user_id}/edit/emails',
330 action='add_email', conditions={'method': ['PUT']})
330 action='add_email', conditions={'method': ['PUT']})
331 m.connect('edit_user_emails', '/users/{user_id}/edit/emails',
331 m.connect('edit_user_emails', '/users/{user_id}/edit/emails',
332 action='delete_email', conditions={'method': ['DELETE']})
332 action='delete_email', conditions={'method': ['DELETE']})
333
333
334 m.connect('edit_user_ips', '/users/{user_id}/edit/ips',
334 m.connect('edit_user_ips', '/users/{user_id}/edit/ips',
335 action='edit_ips', conditions={'method': ['GET']})
335 action='edit_ips', conditions={'method': ['GET']})
336 m.connect('edit_user_ips', '/users/{user_id}/edit/ips',
336 m.connect('edit_user_ips', '/users/{user_id}/edit/ips',
337 action='add_ip', conditions={'method': ['PUT']})
337 action='add_ip', conditions={'method': ['PUT']})
338 m.connect('edit_user_ips', '/users/{user_id}/edit/ips',
338 m.connect('edit_user_ips', '/users/{user_id}/edit/ips',
339 action='delete_ip', conditions={'method': ['DELETE']})
339 action='delete_ip', conditions={'method': ['DELETE']})
340
340
341 # ADMIN USER GROUPS REST ROUTES
341 # ADMIN USER GROUPS REST ROUTES
342 with rmap.submapper(path_prefix=ADMIN_PREFIX,
342 with rmap.submapper(path_prefix=ADMIN_PREFIX,
343 controller='admin/user_groups') as m:
343 controller='admin/user_groups') as m:
344 m.connect('users_groups', '/user_groups',
344 m.connect('users_groups', '/user_groups',
345 action='create', conditions={'method': ['POST']})
345 action='create', conditions={'method': ['POST']})
346 m.connect('users_groups', '/user_groups',
346 m.connect('users_groups', '/user_groups',
347 action='index', conditions={'method': ['GET']})
347 action='index', conditions={'method': ['GET']})
348 m.connect('new_users_group', '/user_groups/new',
348 m.connect('new_users_group', '/user_groups/new',
349 action='new', conditions={'method': ['GET']})
349 action='new', conditions={'method': ['GET']})
350 m.connect('update_users_group', '/user_groups/{user_group_id}',
350 m.connect('update_users_group', '/user_groups/{user_group_id}',
351 action='update', conditions={'method': ['PUT']})
351 action='update', conditions={'method': ['PUT']})
352 m.connect('delete_users_group', '/user_groups/{user_group_id}',
352 m.connect('delete_users_group', '/user_groups/{user_group_id}',
353 action='delete', conditions={'method': ['DELETE']})
353 action='delete', conditions={'method': ['DELETE']})
354 m.connect('edit_users_group', '/user_groups/{user_group_id}/edit',
354 m.connect('edit_users_group', '/user_groups/{user_group_id}/edit',
355 action='edit', conditions={'method': ['GET']},
355 action='edit', conditions={'method': ['GET']},
356 function=check_user_group)
356 function=check_user_group)
357
357
358 # EXTRAS USER GROUP ROUTES
358 # EXTRAS USER GROUP ROUTES
359 m.connect('edit_user_group_global_perms',
359 m.connect('edit_user_group_global_perms',
360 '/user_groups/{user_group_id}/edit/global_permissions',
360 '/user_groups/{user_group_id}/edit/global_permissions',
361 action='edit_global_perms', conditions={'method': ['GET']})
361 action='edit_global_perms', conditions={'method': ['GET']})
362 m.connect('edit_user_group_global_perms',
362 m.connect('edit_user_group_global_perms',
363 '/user_groups/{user_group_id}/edit/global_permissions',
363 '/user_groups/{user_group_id}/edit/global_permissions',
364 action='update_global_perms', conditions={'method': ['PUT']})
364 action='update_global_perms', conditions={'method': ['PUT']})
365 m.connect('edit_user_group_perms_summary',
365 m.connect('edit_user_group_perms_summary',
366 '/user_groups/{user_group_id}/edit/permissions_summary',
366 '/user_groups/{user_group_id}/edit/permissions_summary',
367 action='edit_perms_summary', conditions={'method': ['GET']})
367 action='edit_perms_summary', conditions={'method': ['GET']})
368
368
369 m.connect('edit_user_group_perms',
369 m.connect('edit_user_group_perms',
370 '/user_groups/{user_group_id}/edit/permissions',
370 '/user_groups/{user_group_id}/edit/permissions',
371 action='edit_perms', conditions={'method': ['GET']})
371 action='edit_perms', conditions={'method': ['GET']})
372 m.connect('edit_user_group_perms',
372 m.connect('edit_user_group_perms',
373 '/user_groups/{user_group_id}/edit/permissions',
373 '/user_groups/{user_group_id}/edit/permissions',
374 action='update_perms', conditions={'method': ['PUT']})
374 action='update_perms', conditions={'method': ['PUT']})
375
375
376 m.connect('edit_user_group_advanced',
376 m.connect('edit_user_group_advanced',
377 '/user_groups/{user_group_id}/edit/advanced',
377 '/user_groups/{user_group_id}/edit/advanced',
378 action='edit_advanced', conditions={'method': ['GET']})
378 action='edit_advanced', conditions={'method': ['GET']})
379
379
380 m.connect('edit_user_group_members',
380 m.connect('edit_user_group_members',
381 '/user_groups/{user_group_id}/edit/members', jsroute=True,
381 '/user_groups/{user_group_id}/edit/members', jsroute=True,
382 action='edit_members', conditions={'method': ['GET']})
382 action='edit_members', conditions={'method': ['GET']})
383
383
384 # ADMIN PERMISSIONS ROUTES
384 # ADMIN PERMISSIONS ROUTES
385 with rmap.submapper(path_prefix=ADMIN_PREFIX,
385 with rmap.submapper(path_prefix=ADMIN_PREFIX,
386 controller='admin/permissions') as m:
386 controller='admin/permissions') as m:
387 m.connect('admin_permissions_application', '/permissions/application',
387 m.connect('admin_permissions_application', '/permissions/application',
388 action='permission_application_update', conditions={'method': ['POST']})
388 action='permission_application_update', conditions={'method': ['POST']})
389 m.connect('admin_permissions_application', '/permissions/application',
389 m.connect('admin_permissions_application', '/permissions/application',
390 action='permission_application', conditions={'method': ['GET']})
390 action='permission_application', conditions={'method': ['GET']})
391
391
392 m.connect('admin_permissions_global', '/permissions/global',
392 m.connect('admin_permissions_global', '/permissions/global',
393 action='permission_global_update', conditions={'method': ['POST']})
393 action='permission_global_update', conditions={'method': ['POST']})
394 m.connect('admin_permissions_global', '/permissions/global',
394 m.connect('admin_permissions_global', '/permissions/global',
395 action='permission_global', conditions={'method': ['GET']})
395 action='permission_global', conditions={'method': ['GET']})
396
396
397 m.connect('admin_permissions_object', '/permissions/object',
397 m.connect('admin_permissions_object', '/permissions/object',
398 action='permission_objects_update', conditions={'method': ['POST']})
398 action='permission_objects_update', conditions={'method': ['POST']})
399 m.connect('admin_permissions_object', '/permissions/object',
399 m.connect('admin_permissions_object', '/permissions/object',
400 action='permission_objects', conditions={'method': ['GET']})
400 action='permission_objects', conditions={'method': ['GET']})
401
401
402 m.connect('admin_permissions_ips', '/permissions/ips',
402 m.connect('admin_permissions_ips', '/permissions/ips',
403 action='permission_ips', conditions={'method': ['POST']})
403 action='permission_ips', conditions={'method': ['POST']})
404 m.connect('admin_permissions_ips', '/permissions/ips',
404 m.connect('admin_permissions_ips', '/permissions/ips',
405 action='permission_ips', conditions={'method': ['GET']})
405 action='permission_ips', conditions={'method': ['GET']})
406
406
407 m.connect('admin_permissions_overview', '/permissions/overview',
407 m.connect('admin_permissions_overview', '/permissions/overview',
408 action='permission_perms', conditions={'method': ['GET']})
408 action='permission_perms', conditions={'method': ['GET']})
409
409
410 # ADMIN DEFAULTS REST ROUTES
410 # ADMIN DEFAULTS REST ROUTES
411 with rmap.submapper(path_prefix=ADMIN_PREFIX,
411 with rmap.submapper(path_prefix=ADMIN_PREFIX,
412 controller='admin/defaults') as m:
412 controller='admin/defaults') as m:
413 m.connect('admin_defaults_repositories', '/defaults/repositories',
413 m.connect('admin_defaults_repositories', '/defaults/repositories',
414 action='update_repository_defaults', conditions={'method': ['POST']})
414 action='update_repository_defaults', conditions={'method': ['POST']})
415 m.connect('admin_defaults_repositories', '/defaults/repositories',
415 m.connect('admin_defaults_repositories', '/defaults/repositories',
416 action='index', conditions={'method': ['GET']})
416 action='index', conditions={'method': ['GET']})
417
417
418 # ADMIN DEBUG STYLE ROUTES
418 # ADMIN DEBUG STYLE ROUTES
419 if str2bool(config.get('debug_style')):
419 if str2bool(config.get('debug_style')):
420 with rmap.submapper(path_prefix=ADMIN_PREFIX + '/debug_style',
420 with rmap.submapper(path_prefix=ADMIN_PREFIX + '/debug_style',
421 controller='debug_style') as m:
421 controller='debug_style') as m:
422 m.connect('debug_style_home', '',
422 m.connect('debug_style_home', '',
423 action='index', conditions={'method': ['GET']})
423 action='index', conditions={'method': ['GET']})
424 m.connect('debug_style_template', '/t/{t_path}',
424 m.connect('debug_style_template', '/t/{t_path}',
425 action='template', conditions={'method': ['GET']})
425 action='template', conditions={'method': ['GET']})
426
426
427 # ADMIN SETTINGS ROUTES
427 # ADMIN SETTINGS ROUTES
428 with rmap.submapper(path_prefix=ADMIN_PREFIX,
428 with rmap.submapper(path_prefix=ADMIN_PREFIX,
429 controller='admin/settings') as m:
429 controller='admin/settings') as m:
430
430
431 # default
431 # default
432 m.connect('admin_settings', '/settings',
432 m.connect('admin_settings', '/settings',
433 action='settings_global_update',
433 action='settings_global_update',
434 conditions={'method': ['POST']})
434 conditions={'method': ['POST']})
435 m.connect('admin_settings', '/settings',
435 m.connect('admin_settings', '/settings',
436 action='settings_global', conditions={'method': ['GET']})
436 action='settings_global', conditions={'method': ['GET']})
437
437
438 m.connect('admin_settings_vcs', '/settings/vcs',
438 m.connect('admin_settings_vcs', '/settings/vcs',
439 action='settings_vcs_update',
439 action='settings_vcs_update',
440 conditions={'method': ['POST']})
440 conditions={'method': ['POST']})
441 m.connect('admin_settings_vcs', '/settings/vcs',
441 m.connect('admin_settings_vcs', '/settings/vcs',
442 action='settings_vcs',
442 action='settings_vcs',
443 conditions={'method': ['GET']})
443 conditions={'method': ['GET']})
444 m.connect('admin_settings_vcs', '/settings/vcs',
444 m.connect('admin_settings_vcs', '/settings/vcs',
445 action='delete_svn_pattern',
445 action='delete_svn_pattern',
446 conditions={'method': ['DELETE']})
446 conditions={'method': ['DELETE']})
447
447
448 m.connect('admin_settings_mapping', '/settings/mapping',
448 m.connect('admin_settings_mapping', '/settings/mapping',
449 action='settings_mapping_update',
449 action='settings_mapping_update',
450 conditions={'method': ['POST']})
450 conditions={'method': ['POST']})
451 m.connect('admin_settings_mapping', '/settings/mapping',
451 m.connect('admin_settings_mapping', '/settings/mapping',
452 action='settings_mapping', conditions={'method': ['GET']})
452 action='settings_mapping', conditions={'method': ['GET']})
453
453
454 m.connect('admin_settings_global', '/settings/global',
454 m.connect('admin_settings_global', '/settings/global',
455 action='settings_global_update',
455 action='settings_global_update',
456 conditions={'method': ['POST']})
456 conditions={'method': ['POST']})
457 m.connect('admin_settings_global', '/settings/global',
457 m.connect('admin_settings_global', '/settings/global',
458 action='settings_global', conditions={'method': ['GET']})
458 action='settings_global', conditions={'method': ['GET']})
459
459
460 m.connect('admin_settings_visual', '/settings/visual',
460 m.connect('admin_settings_visual', '/settings/visual',
461 action='settings_visual_update',
461 action='settings_visual_update',
462 conditions={'method': ['POST']})
462 conditions={'method': ['POST']})
463 m.connect('admin_settings_visual', '/settings/visual',
463 m.connect('admin_settings_visual', '/settings/visual',
464 action='settings_visual', conditions={'method': ['GET']})
464 action='settings_visual', conditions={'method': ['GET']})
465
465
466 m.connect('admin_settings_issuetracker',
466 m.connect('admin_settings_issuetracker',
467 '/settings/issue-tracker', action='settings_issuetracker',
467 '/settings/issue-tracker', action='settings_issuetracker',
468 conditions={'method': ['GET']})
468 conditions={'method': ['GET']})
469 m.connect('admin_settings_issuetracker_save',
469 m.connect('admin_settings_issuetracker_save',
470 '/settings/issue-tracker/save',
470 '/settings/issue-tracker/save',
471 action='settings_issuetracker_save',
471 action='settings_issuetracker_save',
472 conditions={'method': ['POST']})
472 conditions={'method': ['POST']})
473 m.connect('admin_issuetracker_test', '/settings/issue-tracker/test',
473 m.connect('admin_issuetracker_test', '/settings/issue-tracker/test',
474 action='settings_issuetracker_test',
474 action='settings_issuetracker_test',
475 conditions={'method': ['POST']})
475 conditions={'method': ['POST']})
476 m.connect('admin_issuetracker_delete',
476 m.connect('admin_issuetracker_delete',
477 '/settings/issue-tracker/delete',
477 '/settings/issue-tracker/delete',
478 action='settings_issuetracker_delete',
478 action='settings_issuetracker_delete',
479 conditions={'method': ['DELETE']})
479 conditions={'method': ['DELETE']})
480
480
481 m.connect('admin_settings_email', '/settings/email',
481 m.connect('admin_settings_email', '/settings/email',
482 action='settings_email_update',
482 action='settings_email_update',
483 conditions={'method': ['POST']})
483 conditions={'method': ['POST']})
484 m.connect('admin_settings_email', '/settings/email',
484 m.connect('admin_settings_email', '/settings/email',
485 action='settings_email', conditions={'method': ['GET']})
485 action='settings_email', conditions={'method': ['GET']})
486
486
487 m.connect('admin_settings_hooks', '/settings/hooks',
487 m.connect('admin_settings_hooks', '/settings/hooks',
488 action='settings_hooks_update',
488 action='settings_hooks_update',
489 conditions={'method': ['POST', 'DELETE']})
489 conditions={'method': ['POST', 'DELETE']})
490 m.connect('admin_settings_hooks', '/settings/hooks',
490 m.connect('admin_settings_hooks', '/settings/hooks',
491 action='settings_hooks', conditions={'method': ['GET']})
491 action='settings_hooks', conditions={'method': ['GET']})
492
492
493 m.connect('admin_settings_search', '/settings/search',
493 m.connect('admin_settings_search', '/settings/search',
494 action='settings_search', conditions={'method': ['GET']})
494 action='settings_search', conditions={'method': ['GET']})
495
495
496 m.connect('admin_settings_system', '/settings/system',
496 m.connect('admin_settings_system', '/settings/system',
497 action='settings_system', conditions={'method': ['GET']})
497 action='settings_system', conditions={'method': ['GET']})
498
498
499 m.connect('admin_settings_system_update', '/settings/system/updates',
499 m.connect('admin_settings_system_update', '/settings/system/updates',
500 action='settings_system_update', conditions={'method': ['GET']})
500 action='settings_system_update', conditions={'method': ['GET']})
501
501
502 m.connect('admin_settings_supervisor', '/settings/supervisor',
502 m.connect('admin_settings_supervisor', '/settings/supervisor',
503 action='settings_supervisor', conditions={'method': ['GET']})
503 action='settings_supervisor', conditions={'method': ['GET']})
504 m.connect('admin_settings_supervisor_log', '/settings/supervisor/{procid}/log',
504 m.connect('admin_settings_supervisor_log', '/settings/supervisor/{procid}/log',
505 action='settings_supervisor_log', conditions={'method': ['GET']})
505 action='settings_supervisor_log', conditions={'method': ['GET']})
506
506
507 m.connect('admin_settings_labs', '/settings/labs',
507 m.connect('admin_settings_labs', '/settings/labs',
508 action='settings_labs_update',
508 action='settings_labs_update',
509 conditions={'method': ['POST']})
509 conditions={'method': ['POST']})
510 m.connect('admin_settings_labs', '/settings/labs',
510 m.connect('admin_settings_labs', '/settings/labs',
511 action='settings_labs', conditions={'method': ['GET']})
511 action='settings_labs', conditions={'method': ['GET']})
512
512
513 m.connect('admin_settings_open_source', '/settings/open_source',
513 m.connect('admin_settings_open_source', '/settings/open_source',
514 action='settings_open_source',
514 action='settings_open_source',
515 conditions={'method': ['GET']})
515 conditions={'method': ['GET']})
516
516
517 # ADMIN MY ACCOUNT
517 # ADMIN MY ACCOUNT
518 with rmap.submapper(path_prefix=ADMIN_PREFIX,
518 with rmap.submapper(path_prefix=ADMIN_PREFIX,
519 controller='admin/my_account') as m:
519 controller='admin/my_account') as m:
520
520
521 m.connect('my_account', '/my_account',
521 m.connect('my_account', '/my_account',
522 action='my_account', conditions={'method': ['GET']})
522 action='my_account', conditions={'method': ['GET']})
523 m.connect('my_account_edit', '/my_account/edit',
523 m.connect('my_account_edit', '/my_account/edit',
524 action='my_account_edit', conditions={'method': ['GET']})
524 action='my_account_edit', conditions={'method': ['GET']})
525 m.connect('my_account', '/my_account',
525 m.connect('my_account', '/my_account',
526 action='my_account_update', conditions={'method': ['POST']})
526 action='my_account_update', conditions={'method': ['POST']})
527
527
528 m.connect('my_account_password', '/my_account/password',
528 m.connect('my_account_password', '/my_account/password',
529 action='my_account_password', conditions={'method': ['GET']})
529 action='my_account_password', conditions={'method': ['GET']})
530 m.connect('my_account_password', '/my_account/password',
530 m.connect('my_account_password', '/my_account/password',
531 action='my_account_password_update', conditions={'method': ['POST']})
531 action='my_account_password_update', conditions={'method': ['POST']})
532
532
533 m.connect('my_account_repos', '/my_account/repos',
533 m.connect('my_account_repos', '/my_account/repos',
534 action='my_account_repos', conditions={'method': ['GET']})
534 action='my_account_repos', conditions={'method': ['GET']})
535
535
536 m.connect('my_account_watched', '/my_account/watched',
536 m.connect('my_account_watched', '/my_account/watched',
537 action='my_account_watched', conditions={'method': ['GET']})
537 action='my_account_watched', conditions={'method': ['GET']})
538
538
539 m.connect('my_account_pullrequests', '/my_account/pull_requests',
539 m.connect('my_account_pullrequests', '/my_account/pull_requests',
540 action='my_account_pullrequests', conditions={'method': ['GET']})
540 action='my_account_pullrequests', conditions={'method': ['GET']})
541
541
542 m.connect('my_account_perms', '/my_account/perms',
542 m.connect('my_account_perms', '/my_account/perms',
543 action='my_account_perms', conditions={'method': ['GET']})
543 action='my_account_perms', conditions={'method': ['GET']})
544
544
545 m.connect('my_account_emails', '/my_account/emails',
545 m.connect('my_account_emails', '/my_account/emails',
546 action='my_account_emails', conditions={'method': ['GET']})
546 action='my_account_emails', conditions={'method': ['GET']})
547 m.connect('my_account_emails', '/my_account/emails',
547 m.connect('my_account_emails', '/my_account/emails',
548 action='my_account_emails_add', conditions={'method': ['POST']})
548 action='my_account_emails_add', conditions={'method': ['POST']})
549 m.connect('my_account_emails', '/my_account/emails',
549 m.connect('my_account_emails', '/my_account/emails',
550 action='my_account_emails_delete', conditions={'method': ['DELETE']})
550 action='my_account_emails_delete', conditions={'method': ['DELETE']})
551
551
552 m.connect('my_account_auth_tokens', '/my_account/auth_tokens',
552 m.connect('my_account_auth_tokens', '/my_account/auth_tokens',
553 action='my_account_auth_tokens', conditions={'method': ['GET']})
553 action='my_account_auth_tokens', conditions={'method': ['GET']})
554 m.connect('my_account_auth_tokens', '/my_account/auth_tokens',
554 m.connect('my_account_auth_tokens', '/my_account/auth_tokens',
555 action='my_account_auth_tokens_add', conditions={'method': ['POST']})
555 action='my_account_auth_tokens_add', conditions={'method': ['POST']})
556 m.connect('my_account_auth_tokens', '/my_account/auth_tokens',
556 m.connect('my_account_auth_tokens', '/my_account/auth_tokens',
557 action='my_account_auth_tokens_delete', conditions={'method': ['DELETE']})
557 action='my_account_auth_tokens_delete', conditions={'method': ['DELETE']})
558
558
559 # NOTIFICATION REST ROUTES
559 # NOTIFICATION REST ROUTES
560 with rmap.submapper(path_prefix=ADMIN_PREFIX,
560 with rmap.submapper(path_prefix=ADMIN_PREFIX,
561 controller='admin/notifications') as m:
561 controller='admin/notifications') as m:
562 m.connect('notifications', '/notifications',
562 m.connect('notifications', '/notifications',
563 action='index', conditions={'method': ['GET']})
563 action='index', conditions={'method': ['GET']})
564 m.connect('notifications_mark_all_read', '/notifications/mark_all_read',
564 m.connect('notifications_mark_all_read', '/notifications/mark_all_read',
565 action='mark_all_read', conditions={'method': ['POST']})
565 action='mark_all_read', conditions={'method': ['POST']})
566
566
567 m.connect('/notifications/{notification_id}',
567 m.connect('/notifications/{notification_id}',
568 action='update', conditions={'method': ['PUT']})
568 action='update', conditions={'method': ['PUT']})
569 m.connect('/notifications/{notification_id}',
569 m.connect('/notifications/{notification_id}',
570 action='delete', conditions={'method': ['DELETE']})
570 action='delete', conditions={'method': ['DELETE']})
571 m.connect('notification', '/notifications/{notification_id}',
571 m.connect('notification', '/notifications/{notification_id}',
572 action='show', conditions={'method': ['GET']})
572 action='show', conditions={'method': ['GET']})
573
573
574 # ADMIN GIST
574 # ADMIN GIST
575 with rmap.submapper(path_prefix=ADMIN_PREFIX,
575 with rmap.submapper(path_prefix=ADMIN_PREFIX,
576 controller='admin/gists') as m:
576 controller='admin/gists') as m:
577 m.connect('gists', '/gists',
577 m.connect('gists', '/gists',
578 action='create', conditions={'method': ['POST']})
578 action='create', conditions={'method': ['POST']})
579 m.connect('gists', '/gists', jsroute=True,
579 m.connect('gists', '/gists', jsroute=True,
580 action='index', conditions={'method': ['GET']})
580 action='index', conditions={'method': ['GET']})
581 m.connect('new_gist', '/gists/new', jsroute=True,
581 m.connect('new_gist', '/gists/new', jsroute=True,
582 action='new', conditions={'method': ['GET']})
582 action='new', conditions={'method': ['GET']})
583 m.connect('gists', '/gists', jsroute=True,
584 action='index', conditions={'method': ['GET']})
585
583
586 m.connect('/gists/{gist_id}',
584 m.connect('/gists/{gist_id}',
587 action='delete', conditions={'method': ['DELETE']})
585 action='delete', conditions={'method': ['DELETE']})
588 m.connect('edit_gist', '/gists/{gist_id}/edit',
586 m.connect('edit_gist', '/gists/{gist_id}/edit',
589 action='edit_form', conditions={'method': ['GET']})
587 action='edit_form', conditions={'method': ['GET']})
590 m.connect('edit_gist', '/gists/{gist_id}/edit',
588 m.connect('edit_gist', '/gists/{gist_id}/edit',
591 action='edit', conditions={'method': ['POST']})
589 action='edit', conditions={'method': ['POST']})
592 m.connect(
590 m.connect(
593 'edit_gist_check_revision', '/gists/{gist_id}/edit/check_revision',
591 'edit_gist_check_revision', '/gists/{gist_id}/edit/check_revision',
594 action='check_revision', conditions={'method': ['GET']})
592 action='check_revision', conditions={'method': ['GET']})
595
593
596 m.connect('gist', '/gists/{gist_id}',
594 m.connect('gist', '/gists/{gist_id}',
597 action='show', conditions={'method': ['GET']})
595 action='show', conditions={'method': ['GET']})
598 m.connect('gist_rev', '/gists/{gist_id}/{revision}',
596 m.connect('gist_rev', '/gists/{gist_id}/{revision}',
599 revision='tip',
597 revision='tip',
600 action='show', conditions={'method': ['GET']})
598 action='show', conditions={'method': ['GET']})
601 m.connect('formatted_gist', '/gists/{gist_id}/{revision}/{format}',
599 m.connect('formatted_gist', '/gists/{gist_id}/{revision}/{format}',
602 revision='tip',
600 revision='tip',
603 action='show', conditions={'method': ['GET']})
601 action='show', conditions={'method': ['GET']})
604 m.connect('formatted_gist_file', '/gists/{gist_id}/{revision}/{format}/{f_path}',
602 m.connect('formatted_gist_file', '/gists/{gist_id}/{revision}/{format}/{f_path}',
605 revision='tip',
603 revision='tip',
606 action='show', conditions={'method': ['GET']},
604 action='show', conditions={'method': ['GET']},
607 requirements=URL_NAME_REQUIREMENTS)
605 requirements=URL_NAME_REQUIREMENTS)
608
606
609 # ADMIN MAIN PAGES
607 # ADMIN MAIN PAGES
610 with rmap.submapper(path_prefix=ADMIN_PREFIX,
608 with rmap.submapper(path_prefix=ADMIN_PREFIX,
611 controller='admin/admin') as m:
609 controller='admin/admin') as m:
612 m.connect('admin_home', '', action='index')
610 m.connect('admin_home', '', action='index')
613 m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}',
611 m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}',
614 action='add_repo')
612 action='add_repo')
615 m.connect(
613 m.connect(
616 'pull_requests_global_0', '/pull_requests/{pull_request_id:[0-9]+}',
614 'pull_requests_global_0', '/pull_requests/{pull_request_id:[0-9]+}',
617 action='pull_requests')
615 action='pull_requests')
618 m.connect(
616 m.connect(
619 'pull_requests_global', '/pull-requests/{pull_request_id:[0-9]+}',
617 'pull_requests_global', '/pull-requests/{pull_request_id:[0-9]+}',
620 action='pull_requests')
618 action='pull_requests')
621
619
622
620
623 # USER JOURNAL
621 # USER JOURNAL
624 rmap.connect('journal', '%s/journal' % (ADMIN_PREFIX,),
622 rmap.connect('journal', '%s/journal' % (ADMIN_PREFIX,),
625 controller='journal', action='index')
623 controller='journal', action='index')
626 rmap.connect('journal_rss', '%s/journal/rss' % (ADMIN_PREFIX,),
624 rmap.connect('journal_rss', '%s/journal/rss' % (ADMIN_PREFIX,),
627 controller='journal', action='journal_rss')
625 controller='journal', action='journal_rss')
628 rmap.connect('journal_atom', '%s/journal/atom' % (ADMIN_PREFIX,),
626 rmap.connect('journal_atom', '%s/journal/atom' % (ADMIN_PREFIX,),
629 controller='journal', action='journal_atom')
627 controller='journal', action='journal_atom')
630
628
631 rmap.connect('public_journal', '%s/public_journal' % (ADMIN_PREFIX,),
629 rmap.connect('public_journal', '%s/public_journal' % (ADMIN_PREFIX,),
632 controller='journal', action='public_journal')
630 controller='journal', action='public_journal')
633
631
634 rmap.connect('public_journal_rss', '%s/public_journal/rss' % (ADMIN_PREFIX,),
632 rmap.connect('public_journal_rss', '%s/public_journal/rss' % (ADMIN_PREFIX,),
635 controller='journal', action='public_journal_rss')
633 controller='journal', action='public_journal_rss')
636
634
637 rmap.connect('public_journal_rss_old', '%s/public_journal_rss' % (ADMIN_PREFIX,),
635 rmap.connect('public_journal_rss_old', '%s/public_journal_rss' % (ADMIN_PREFIX,),
638 controller='journal', action='public_journal_rss')
636 controller='journal', action='public_journal_rss')
639
637
640 rmap.connect('public_journal_atom',
638 rmap.connect('public_journal_atom',
641 '%s/public_journal/atom' % (ADMIN_PREFIX,), controller='journal',
639 '%s/public_journal/atom' % (ADMIN_PREFIX,), controller='journal',
642 action='public_journal_atom')
640 action='public_journal_atom')
643
641
644 rmap.connect('public_journal_atom_old',
642 rmap.connect('public_journal_atom_old',
645 '%s/public_journal_atom' % (ADMIN_PREFIX,), controller='journal',
643 '%s/public_journal_atom' % (ADMIN_PREFIX,), controller='journal',
646 action='public_journal_atom')
644 action='public_journal_atom')
647
645
648 rmap.connect('toggle_following', '%s/toggle_following' % (ADMIN_PREFIX,),
646 rmap.connect('toggle_following', '%s/toggle_following' % (ADMIN_PREFIX,),
649 controller='journal', action='toggle_following', jsroute=True,
647 controller='journal', action='toggle_following', jsroute=True,
650 conditions={'method': ['POST']})
648 conditions={'method': ['POST']})
651
649
652 # FULL TEXT SEARCH
650 # FULL TEXT SEARCH
653 rmap.connect('search', '%s/search' % (ADMIN_PREFIX,),
651 rmap.connect('search', '%s/search' % (ADMIN_PREFIX,),
654 controller='search')
652 controller='search')
655 rmap.connect('search_repo_home', '/{repo_name}/search',
653 rmap.connect('search_repo_home', '/{repo_name}/search',
656 controller='search',
654 controller='search',
657 action='index',
655 action='index',
658 conditions={'function': check_repo},
656 conditions={'function': check_repo},
659 requirements=URL_NAME_REQUIREMENTS)
657 requirements=URL_NAME_REQUIREMENTS)
660
658
661 # FEEDS
659 # FEEDS
662 rmap.connect('rss_feed_home', '/{repo_name}/feed/rss',
660 rmap.connect('rss_feed_home', '/{repo_name}/feed/rss',
663 controller='feed', action='rss',
661 controller='feed', action='rss',
664 conditions={'function': check_repo},
662 conditions={'function': check_repo},
665 requirements=URL_NAME_REQUIREMENTS)
663 requirements=URL_NAME_REQUIREMENTS)
666
664
667 rmap.connect('atom_feed_home', '/{repo_name}/feed/atom',
665 rmap.connect('atom_feed_home', '/{repo_name}/feed/atom',
668 controller='feed', action='atom',
666 controller='feed', action='atom',
669 conditions={'function': check_repo},
667 conditions={'function': check_repo},
670 requirements=URL_NAME_REQUIREMENTS)
668 requirements=URL_NAME_REQUIREMENTS)
671
669
672 #==========================================================================
670 #==========================================================================
673 # REPOSITORY ROUTES
671 # REPOSITORY ROUTES
674 #==========================================================================
672 #==========================================================================
675
673
676 rmap.connect('repo_creating_home', '/{repo_name}/repo_creating',
674 rmap.connect('repo_creating_home', '/{repo_name}/repo_creating',
677 controller='admin/repos', action='repo_creating',
675 controller='admin/repos', action='repo_creating',
678 requirements=URL_NAME_REQUIREMENTS)
676 requirements=URL_NAME_REQUIREMENTS)
679 rmap.connect('repo_check_home', '/{repo_name}/crepo_check',
677 rmap.connect('repo_check_home', '/{repo_name}/crepo_check',
680 controller='admin/repos', action='repo_check',
678 controller='admin/repos', action='repo_check',
681 requirements=URL_NAME_REQUIREMENTS)
679 requirements=URL_NAME_REQUIREMENTS)
682
680
683 rmap.connect('repo_stats', '/{repo_name}/repo_stats/{commit_id}',
681 rmap.connect('repo_stats', '/{repo_name}/repo_stats/{commit_id}',
684 controller='summary', action='repo_stats',
682 controller='summary', action='repo_stats',
685 conditions={'function': check_repo},
683 conditions={'function': check_repo},
686 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
684 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
687
685
688 rmap.connect('repo_refs_data', '/{repo_name}/refs-data',
686 rmap.connect('repo_refs_data', '/{repo_name}/refs-data',
689 controller='summary', action='repo_refs_data', jsroute=True,
687 controller='summary', action='repo_refs_data', jsroute=True,
690 requirements=URL_NAME_REQUIREMENTS)
688 requirements=URL_NAME_REQUIREMENTS)
691 rmap.connect('repo_refs_changelog_data', '/{repo_name}/refs-data-changelog',
689 rmap.connect('repo_refs_changelog_data', '/{repo_name}/refs-data-changelog',
692 controller='summary', action='repo_refs_changelog_data',
690 controller='summary', action='repo_refs_changelog_data',
693 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
691 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
694
692
695 rmap.connect('changeset_home', '/{repo_name}/changeset/{revision}',
693 rmap.connect('changeset_home', '/{repo_name}/changeset/{revision}',
696 controller='changeset', revision='tip', jsroute=True,
694 controller='changeset', revision='tip', jsroute=True,
697 conditions={'function': check_repo},
695 conditions={'function': check_repo},
698 requirements=URL_NAME_REQUIREMENTS)
696 requirements=URL_NAME_REQUIREMENTS)
699 rmap.connect('changeset_children', '/{repo_name}/changeset_children/{revision}',
697 rmap.connect('changeset_children', '/{repo_name}/changeset_children/{revision}',
700 controller='changeset', revision='tip', action='changeset_children',
698 controller='changeset', revision='tip', action='changeset_children',
701 conditions={'function': check_repo},
699 conditions={'function': check_repo},
702 requirements=URL_NAME_REQUIREMENTS)
700 requirements=URL_NAME_REQUIREMENTS)
703 rmap.connect('changeset_parents', '/{repo_name}/changeset_parents/{revision}',
701 rmap.connect('changeset_parents', '/{repo_name}/changeset_parents/{revision}',
704 controller='changeset', revision='tip', action='changeset_parents',
702 controller='changeset', revision='tip', action='changeset_parents',
705 conditions={'function': check_repo},
703 conditions={'function': check_repo},
706 requirements=URL_NAME_REQUIREMENTS)
704 requirements=URL_NAME_REQUIREMENTS)
707
705
708 # repo edit options
706 # repo edit options
709 rmap.connect('edit_repo', '/{repo_name}/settings', jsroute=True,
707 rmap.connect('edit_repo', '/{repo_name}/settings', jsroute=True,
710 controller='admin/repos', action='edit',
708 controller='admin/repos', action='edit',
711 conditions={'method': ['GET'], 'function': check_repo},
709 conditions={'method': ['GET'], 'function': check_repo},
712 requirements=URL_NAME_REQUIREMENTS)
710 requirements=URL_NAME_REQUIREMENTS)
713
711
714 rmap.connect('edit_repo_perms', '/{repo_name}/settings/permissions',
712 rmap.connect('edit_repo_perms', '/{repo_name}/settings/permissions',
715 jsroute=True,
713 jsroute=True,
716 controller='admin/repos', action='edit_permissions',
714 controller='admin/repos', action='edit_permissions',
717 conditions={'method': ['GET'], 'function': check_repo},
715 conditions={'method': ['GET'], 'function': check_repo},
718 requirements=URL_NAME_REQUIREMENTS)
716 requirements=URL_NAME_REQUIREMENTS)
719 rmap.connect('edit_repo_perms_update', '/{repo_name}/settings/permissions',
717 rmap.connect('edit_repo_perms_update', '/{repo_name}/settings/permissions',
720 controller='admin/repos', action='edit_permissions_update',
718 controller='admin/repos', action='edit_permissions_update',
721 conditions={'method': ['PUT'], 'function': check_repo},
719 conditions={'method': ['PUT'], 'function': check_repo},
722 requirements=URL_NAME_REQUIREMENTS)
720 requirements=URL_NAME_REQUIREMENTS)
723
721
724 rmap.connect('edit_repo_fields', '/{repo_name}/settings/fields',
722 rmap.connect('edit_repo_fields', '/{repo_name}/settings/fields',
725 controller='admin/repos', action='edit_fields',
723 controller='admin/repos', action='edit_fields',
726 conditions={'method': ['GET'], 'function': check_repo},
724 conditions={'method': ['GET'], 'function': check_repo},
727 requirements=URL_NAME_REQUIREMENTS)
725 requirements=URL_NAME_REQUIREMENTS)
728 rmap.connect('create_repo_fields', '/{repo_name}/settings/fields/new',
726 rmap.connect('create_repo_fields', '/{repo_name}/settings/fields/new',
729 controller='admin/repos', action='create_repo_field',
727 controller='admin/repos', action='create_repo_field',
730 conditions={'method': ['PUT'], 'function': check_repo},
728 conditions={'method': ['PUT'], 'function': check_repo},
731 requirements=URL_NAME_REQUIREMENTS)
729 requirements=URL_NAME_REQUIREMENTS)
732 rmap.connect('delete_repo_fields', '/{repo_name}/settings/fields/{field_id}',
730 rmap.connect('delete_repo_fields', '/{repo_name}/settings/fields/{field_id}',
733 controller='admin/repos', action='delete_repo_field',
731 controller='admin/repos', action='delete_repo_field',
734 conditions={'method': ['DELETE'], 'function': check_repo},
732 conditions={'method': ['DELETE'], 'function': check_repo},
735 requirements=URL_NAME_REQUIREMENTS)
733 requirements=URL_NAME_REQUIREMENTS)
736
734
737 rmap.connect('edit_repo_advanced', '/{repo_name}/settings/advanced',
735 rmap.connect('edit_repo_advanced', '/{repo_name}/settings/advanced',
738 controller='admin/repos', action='edit_advanced',
736 controller='admin/repos', action='edit_advanced',
739 conditions={'method': ['GET'], 'function': check_repo},
737 conditions={'method': ['GET'], 'function': check_repo},
740 requirements=URL_NAME_REQUIREMENTS)
738 requirements=URL_NAME_REQUIREMENTS)
741
739
742 rmap.connect('edit_repo_advanced_locking', '/{repo_name}/settings/advanced/locking',
740 rmap.connect('edit_repo_advanced_locking', '/{repo_name}/settings/advanced/locking',
743 controller='admin/repos', action='edit_advanced_locking',
741 controller='admin/repos', action='edit_advanced_locking',
744 conditions={'method': ['PUT'], 'function': check_repo},
742 conditions={'method': ['PUT'], 'function': check_repo},
745 requirements=URL_NAME_REQUIREMENTS)
743 requirements=URL_NAME_REQUIREMENTS)
746 rmap.connect('toggle_locking', '/{repo_name}/settings/advanced/locking_toggle',
744 rmap.connect('toggle_locking', '/{repo_name}/settings/advanced/locking_toggle',
747 controller='admin/repos', action='toggle_locking',
745 controller='admin/repos', action='toggle_locking',
748 conditions={'method': ['GET'], 'function': check_repo},
746 conditions={'method': ['GET'], 'function': check_repo},
749 requirements=URL_NAME_REQUIREMENTS)
747 requirements=URL_NAME_REQUIREMENTS)
750
748
751 rmap.connect('edit_repo_advanced_journal', '/{repo_name}/settings/advanced/journal',
749 rmap.connect('edit_repo_advanced_journal', '/{repo_name}/settings/advanced/journal',
752 controller='admin/repos', action='edit_advanced_journal',
750 controller='admin/repos', action='edit_advanced_journal',
753 conditions={'method': ['PUT'], 'function': check_repo},
751 conditions={'method': ['PUT'], 'function': check_repo},
754 requirements=URL_NAME_REQUIREMENTS)
752 requirements=URL_NAME_REQUIREMENTS)
755
753
756 rmap.connect('edit_repo_advanced_fork', '/{repo_name}/settings/advanced/fork',
754 rmap.connect('edit_repo_advanced_fork', '/{repo_name}/settings/advanced/fork',
757 controller='admin/repos', action='edit_advanced_fork',
755 controller='admin/repos', action='edit_advanced_fork',
758 conditions={'method': ['PUT'], 'function': check_repo},
756 conditions={'method': ['PUT'], 'function': check_repo},
759 requirements=URL_NAME_REQUIREMENTS)
757 requirements=URL_NAME_REQUIREMENTS)
760
758
761 rmap.connect('edit_repo_caches', '/{repo_name}/settings/caches',
759 rmap.connect('edit_repo_caches', '/{repo_name}/settings/caches',
762 controller='admin/repos', action='edit_caches_form',
760 controller='admin/repos', action='edit_caches_form',
763 conditions={'method': ['GET'], 'function': check_repo},
761 conditions={'method': ['GET'], 'function': check_repo},
764 requirements=URL_NAME_REQUIREMENTS)
762 requirements=URL_NAME_REQUIREMENTS)
765 rmap.connect('edit_repo_caches', '/{repo_name}/settings/caches',
763 rmap.connect('edit_repo_caches', '/{repo_name}/settings/caches',
766 controller='admin/repos', action='edit_caches',
764 controller='admin/repos', action='edit_caches',
767 conditions={'method': ['PUT'], 'function': check_repo},
765 conditions={'method': ['PUT'], 'function': check_repo},
768 requirements=URL_NAME_REQUIREMENTS)
766 requirements=URL_NAME_REQUIREMENTS)
769
767
770 rmap.connect('edit_repo_remote', '/{repo_name}/settings/remote',
768 rmap.connect('edit_repo_remote', '/{repo_name}/settings/remote',
771 controller='admin/repos', action='edit_remote_form',
769 controller='admin/repos', action='edit_remote_form',
772 conditions={'method': ['GET'], 'function': check_repo},
770 conditions={'method': ['GET'], 'function': check_repo},
773 requirements=URL_NAME_REQUIREMENTS)
771 requirements=URL_NAME_REQUIREMENTS)
774 rmap.connect('edit_repo_remote', '/{repo_name}/settings/remote',
772 rmap.connect('edit_repo_remote', '/{repo_name}/settings/remote',
775 controller='admin/repos', action='edit_remote',
773 controller='admin/repos', action='edit_remote',
776 conditions={'method': ['PUT'], 'function': check_repo},
774 conditions={'method': ['PUT'], 'function': check_repo},
777 requirements=URL_NAME_REQUIREMENTS)
775 requirements=URL_NAME_REQUIREMENTS)
778
776
779 rmap.connect('edit_repo_statistics', '/{repo_name}/settings/statistics',
777 rmap.connect('edit_repo_statistics', '/{repo_name}/settings/statistics',
780 controller='admin/repos', action='edit_statistics_form',
778 controller='admin/repos', action='edit_statistics_form',
781 conditions={'method': ['GET'], 'function': check_repo},
779 conditions={'method': ['GET'], 'function': check_repo},
782 requirements=URL_NAME_REQUIREMENTS)
780 requirements=URL_NAME_REQUIREMENTS)
783 rmap.connect('edit_repo_statistics', '/{repo_name}/settings/statistics',
781 rmap.connect('edit_repo_statistics', '/{repo_name}/settings/statistics',
784 controller='admin/repos', action='edit_statistics',
782 controller='admin/repos', action='edit_statistics',
785 conditions={'method': ['PUT'], 'function': check_repo},
783 conditions={'method': ['PUT'], 'function': check_repo},
786 requirements=URL_NAME_REQUIREMENTS)
784 requirements=URL_NAME_REQUIREMENTS)
787 rmap.connect('repo_settings_issuetracker',
785 rmap.connect('repo_settings_issuetracker',
788 '/{repo_name}/settings/issue-tracker',
786 '/{repo_name}/settings/issue-tracker',
789 controller='admin/repos', action='repo_issuetracker',
787 controller='admin/repos', action='repo_issuetracker',
790 conditions={'method': ['GET'], 'function': check_repo},
788 conditions={'method': ['GET'], 'function': check_repo},
791 requirements=URL_NAME_REQUIREMENTS)
789 requirements=URL_NAME_REQUIREMENTS)
792 rmap.connect('repo_issuetracker_test',
790 rmap.connect('repo_issuetracker_test',
793 '/{repo_name}/settings/issue-tracker/test',
791 '/{repo_name}/settings/issue-tracker/test',
794 controller='admin/repos', action='repo_issuetracker_test',
792 controller='admin/repos', action='repo_issuetracker_test',
795 conditions={'method': ['POST'], 'function': check_repo},
793 conditions={'method': ['POST'], 'function': check_repo},
796 requirements=URL_NAME_REQUIREMENTS)
794 requirements=URL_NAME_REQUIREMENTS)
797 rmap.connect('repo_issuetracker_delete',
795 rmap.connect('repo_issuetracker_delete',
798 '/{repo_name}/settings/issue-tracker/delete',
796 '/{repo_name}/settings/issue-tracker/delete',
799 controller='admin/repos', action='repo_issuetracker_delete',
797 controller='admin/repos', action='repo_issuetracker_delete',
800 conditions={'method': ['DELETE'], 'function': check_repo},
798 conditions={'method': ['DELETE'], 'function': check_repo},
801 requirements=URL_NAME_REQUIREMENTS)
799 requirements=URL_NAME_REQUIREMENTS)
802 rmap.connect('repo_issuetracker_save',
800 rmap.connect('repo_issuetracker_save',
803 '/{repo_name}/settings/issue-tracker/save',
801 '/{repo_name}/settings/issue-tracker/save',
804 controller='admin/repos', action='repo_issuetracker_save',
802 controller='admin/repos', action='repo_issuetracker_save',
805 conditions={'method': ['POST'], 'function': check_repo},
803 conditions={'method': ['POST'], 'function': check_repo},
806 requirements=URL_NAME_REQUIREMENTS)
804 requirements=URL_NAME_REQUIREMENTS)
807 rmap.connect('repo_vcs_settings', '/{repo_name}/settings/vcs',
805 rmap.connect('repo_vcs_settings', '/{repo_name}/settings/vcs',
808 controller='admin/repos', action='repo_settings_vcs_update',
806 controller='admin/repos', action='repo_settings_vcs_update',
809 conditions={'method': ['POST'], 'function': check_repo},
807 conditions={'method': ['POST'], 'function': check_repo},
810 requirements=URL_NAME_REQUIREMENTS)
808 requirements=URL_NAME_REQUIREMENTS)
811 rmap.connect('repo_vcs_settings', '/{repo_name}/settings/vcs',
809 rmap.connect('repo_vcs_settings', '/{repo_name}/settings/vcs',
812 controller='admin/repos', action='repo_settings_vcs',
810 controller='admin/repos', action='repo_settings_vcs',
813 conditions={'method': ['GET'], 'function': check_repo},
811 conditions={'method': ['GET'], 'function': check_repo},
814 requirements=URL_NAME_REQUIREMENTS)
812 requirements=URL_NAME_REQUIREMENTS)
815 rmap.connect('repo_vcs_settings', '/{repo_name}/settings/vcs',
813 rmap.connect('repo_vcs_settings', '/{repo_name}/settings/vcs',
816 controller='admin/repos', action='repo_delete_svn_pattern',
814 controller='admin/repos', action='repo_delete_svn_pattern',
817 conditions={'method': ['DELETE'], 'function': check_repo},
815 conditions={'method': ['DELETE'], 'function': check_repo},
818 requirements=URL_NAME_REQUIREMENTS)
816 requirements=URL_NAME_REQUIREMENTS)
819
817
820 # still working url for backward compat.
818 # still working url for backward compat.
821 rmap.connect('raw_changeset_home_depraced',
819 rmap.connect('raw_changeset_home_depraced',
822 '/{repo_name}/raw-changeset/{revision}',
820 '/{repo_name}/raw-changeset/{revision}',
823 controller='changeset', action='changeset_raw',
821 controller='changeset', action='changeset_raw',
824 revision='tip', conditions={'function': check_repo},
822 revision='tip', conditions={'function': check_repo},
825 requirements=URL_NAME_REQUIREMENTS)
823 requirements=URL_NAME_REQUIREMENTS)
826
824
827 # new URLs
825 # new URLs
828 rmap.connect('changeset_raw_home',
826 rmap.connect('changeset_raw_home',
829 '/{repo_name}/changeset-diff/{revision}',
827 '/{repo_name}/changeset-diff/{revision}',
830 controller='changeset', action='changeset_raw',
828 controller='changeset', action='changeset_raw',
831 revision='tip', conditions={'function': check_repo},
829 revision='tip', conditions={'function': check_repo},
832 requirements=URL_NAME_REQUIREMENTS)
830 requirements=URL_NAME_REQUIREMENTS)
833
831
834 rmap.connect('changeset_patch_home',
832 rmap.connect('changeset_patch_home',
835 '/{repo_name}/changeset-patch/{revision}',
833 '/{repo_name}/changeset-patch/{revision}',
836 controller='changeset', action='changeset_patch',
834 controller='changeset', action='changeset_patch',
837 revision='tip', conditions={'function': check_repo},
835 revision='tip', conditions={'function': check_repo},
838 requirements=URL_NAME_REQUIREMENTS)
836 requirements=URL_NAME_REQUIREMENTS)
839
837
840 rmap.connect('changeset_download_home',
838 rmap.connect('changeset_download_home',
841 '/{repo_name}/changeset-download/{revision}',
839 '/{repo_name}/changeset-download/{revision}',
842 controller='changeset', action='changeset_download',
840 controller='changeset', action='changeset_download',
843 revision='tip', conditions={'function': check_repo},
841 revision='tip', conditions={'function': check_repo},
844 requirements=URL_NAME_REQUIREMENTS)
842 requirements=URL_NAME_REQUIREMENTS)
845
843
846 rmap.connect('changeset_comment',
844 rmap.connect('changeset_comment',
847 '/{repo_name}/changeset/{revision}/comment', jsroute=True,
845 '/{repo_name}/changeset/{revision}/comment', jsroute=True,
848 controller='changeset', revision='tip', action='comment',
846 controller='changeset', revision='tip', action='comment',
849 conditions={'function': check_repo},
847 conditions={'function': check_repo},
850 requirements=URL_NAME_REQUIREMENTS)
848 requirements=URL_NAME_REQUIREMENTS)
851
849
852 rmap.connect('changeset_comment_preview',
850 rmap.connect('changeset_comment_preview',
853 '/{repo_name}/changeset/comment/preview', jsroute=True,
851 '/{repo_name}/changeset/comment/preview', jsroute=True,
854 controller='changeset', action='preview_comment',
852 controller='changeset', action='preview_comment',
855 conditions={'function': check_repo, 'method': ['POST']},
853 conditions={'function': check_repo, 'method': ['POST']},
856 requirements=URL_NAME_REQUIREMENTS)
854 requirements=URL_NAME_REQUIREMENTS)
857
855
858 rmap.connect('changeset_comment_delete',
856 rmap.connect('changeset_comment_delete',
859 '/{repo_name}/changeset/comment/{comment_id}/delete',
857 '/{repo_name}/changeset/comment/{comment_id}/delete',
860 controller='changeset', action='delete_comment',
858 controller='changeset', action='delete_comment',
861 conditions={'function': check_repo, 'method': ['DELETE']},
859 conditions={'function': check_repo, 'method': ['DELETE']},
862 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
860 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
863
861
864 rmap.connect('changeset_info', '/changeset_info/{repo_name}/{revision}',
862 rmap.connect('changeset_info', '/changeset_info/{repo_name}/{revision}',
865 controller='changeset', action='changeset_info',
863 controller='changeset', action='changeset_info',
866 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
864 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
867
865
868 rmap.connect('compare_home',
866 rmap.connect('compare_home',
869 '/{repo_name}/compare',
867 '/{repo_name}/compare',
870 controller='compare', action='index',
868 controller='compare', action='index',
871 conditions={'function': check_repo},
869 conditions={'function': check_repo},
872 requirements=URL_NAME_REQUIREMENTS)
870 requirements=URL_NAME_REQUIREMENTS)
873
871
874 rmap.connect('compare_url',
872 rmap.connect('compare_url',
875 '/{repo_name}/compare/{source_ref_type}@{source_ref:.*?}...{target_ref_type}@{target_ref:.*?}',
873 '/{repo_name}/compare/{source_ref_type}@{source_ref:.*?}...{target_ref_type}@{target_ref:.*?}',
876 controller='compare', action='compare',
874 controller='compare', action='compare',
877 conditions={'function': check_repo},
875 conditions={'function': check_repo},
878 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
876 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
879
877
880 rmap.connect('pullrequest_home',
878 rmap.connect('pullrequest_home',
881 '/{repo_name}/pull-request/new', controller='pullrequests',
879 '/{repo_name}/pull-request/new', controller='pullrequests',
882 action='index', conditions={'function': check_repo,
880 action='index', conditions={'function': check_repo,
883 'method': ['GET']},
881 'method': ['GET']},
884 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
882 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
885
883
886 rmap.connect('pullrequest',
884 rmap.connect('pullrequest',
887 '/{repo_name}/pull-request/new', controller='pullrequests',
885 '/{repo_name}/pull-request/new', controller='pullrequests',
888 action='create', conditions={'function': check_repo,
886 action='create', conditions={'function': check_repo,
889 'method': ['POST']},
887 'method': ['POST']},
890 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
888 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
891
889
892 rmap.connect('pullrequest_repo_refs',
890 rmap.connect('pullrequest_repo_refs',
893 '/{repo_name}/pull-request/refs/{target_repo_name:.*?[^/]}',
891 '/{repo_name}/pull-request/refs/{target_repo_name:.*?[^/]}',
894 controller='pullrequests',
892 controller='pullrequests',
895 action='get_repo_refs',
893 action='get_repo_refs',
896 conditions={'function': check_repo, 'method': ['GET']},
894 conditions={'function': check_repo, 'method': ['GET']},
897 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
895 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
898
896
899 rmap.connect('pullrequest_repo_destinations',
897 rmap.connect('pullrequest_repo_destinations',
900 '/{repo_name}/pull-request/repo-destinations',
898 '/{repo_name}/pull-request/repo-destinations',
901 controller='pullrequests',
899 controller='pullrequests',
902 action='get_repo_destinations',
900 action='get_repo_destinations',
903 conditions={'function': check_repo, 'method': ['GET']},
901 conditions={'function': check_repo, 'method': ['GET']},
904 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
902 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
905
903
906 rmap.connect('pullrequest_show',
904 rmap.connect('pullrequest_show',
907 '/{repo_name}/pull-request/{pull_request_id}',
905 '/{repo_name}/pull-request/{pull_request_id}',
908 controller='pullrequests',
906 controller='pullrequests',
909 action='show', conditions={'function': check_repo,
907 action='show', conditions={'function': check_repo,
910 'method': ['GET']},
908 'method': ['GET']},
911 requirements=URL_NAME_REQUIREMENTS)
909 requirements=URL_NAME_REQUIREMENTS)
912
910
913 rmap.connect('pullrequest_update',
911 rmap.connect('pullrequest_update',
914 '/{repo_name}/pull-request/{pull_request_id}',
912 '/{repo_name}/pull-request/{pull_request_id}',
915 controller='pullrequests',
913 controller='pullrequests',
916 action='update', conditions={'function': check_repo,
914 action='update', conditions={'function': check_repo,
917 'method': ['PUT']},
915 'method': ['PUT']},
918 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
916 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
919
917
920 rmap.connect('pullrequest_merge',
918 rmap.connect('pullrequest_merge',
921 '/{repo_name}/pull-request/{pull_request_id}',
919 '/{repo_name}/pull-request/{pull_request_id}',
922 controller='pullrequests',
920 controller='pullrequests',
923 action='merge', conditions={'function': check_repo,
921 action='merge', conditions={'function': check_repo,
924 'method': ['POST']},
922 'method': ['POST']},
925 requirements=URL_NAME_REQUIREMENTS)
923 requirements=URL_NAME_REQUIREMENTS)
926
924
927 rmap.connect('pullrequest_delete',
925 rmap.connect('pullrequest_delete',
928 '/{repo_name}/pull-request/{pull_request_id}',
926 '/{repo_name}/pull-request/{pull_request_id}',
929 controller='pullrequests',
927 controller='pullrequests',
930 action='delete', conditions={'function': check_repo,
928 action='delete', conditions={'function': check_repo,
931 'method': ['DELETE']},
929 'method': ['DELETE']},
932 requirements=URL_NAME_REQUIREMENTS)
930 requirements=URL_NAME_REQUIREMENTS)
933
931
934 rmap.connect('pullrequest_show_all',
932 rmap.connect('pullrequest_show_all',
935 '/{repo_name}/pull-request',
933 '/{repo_name}/pull-request',
936 controller='pullrequests',
934 controller='pullrequests',
937 action='show_all', conditions={'function': check_repo,
935 action='show_all', conditions={'function': check_repo,
938 'method': ['GET']},
936 'method': ['GET']},
939 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
937 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
940
938
941 rmap.connect('pullrequest_comment',
939 rmap.connect('pullrequest_comment',
942 '/{repo_name}/pull-request-comment/{pull_request_id}',
940 '/{repo_name}/pull-request-comment/{pull_request_id}',
943 controller='pullrequests',
941 controller='pullrequests',
944 action='comment', conditions={'function': check_repo,
942 action='comment', conditions={'function': check_repo,
945 'method': ['POST']},
943 'method': ['POST']},
946 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
944 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
947
945
948 rmap.connect('pullrequest_comment_delete',
946 rmap.connect('pullrequest_comment_delete',
949 '/{repo_name}/pull-request-comment/{comment_id}/delete',
947 '/{repo_name}/pull-request-comment/{comment_id}/delete',
950 controller='pullrequests', action='delete_comment',
948 controller='pullrequests', action='delete_comment',
951 conditions={'function': check_repo, 'method': ['DELETE']},
949 conditions={'function': check_repo, 'method': ['DELETE']},
952 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
950 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
953
951
954 rmap.connect('summary_home_explicit', '/{repo_name}/summary',
952 rmap.connect('summary_home_explicit', '/{repo_name}/summary',
955 controller='summary', conditions={'function': check_repo},
953 controller='summary', conditions={'function': check_repo},
956 requirements=URL_NAME_REQUIREMENTS)
954 requirements=URL_NAME_REQUIREMENTS)
957
955
958 rmap.connect('branches_home', '/{repo_name}/branches',
956 rmap.connect('branches_home', '/{repo_name}/branches',
959 controller='branches', conditions={'function': check_repo},
957 controller='branches', conditions={'function': check_repo},
960 requirements=URL_NAME_REQUIREMENTS)
958 requirements=URL_NAME_REQUIREMENTS)
961
959
962 rmap.connect('tags_home', '/{repo_name}/tags',
960 rmap.connect('tags_home', '/{repo_name}/tags',
963 controller='tags', conditions={'function': check_repo},
961 controller='tags', conditions={'function': check_repo},
964 requirements=URL_NAME_REQUIREMENTS)
962 requirements=URL_NAME_REQUIREMENTS)
965
963
966 rmap.connect('bookmarks_home', '/{repo_name}/bookmarks',
964 rmap.connect('bookmarks_home', '/{repo_name}/bookmarks',
967 controller='bookmarks', conditions={'function': check_repo},
965 controller='bookmarks', conditions={'function': check_repo},
968 requirements=URL_NAME_REQUIREMENTS)
966 requirements=URL_NAME_REQUIREMENTS)
969
967
970 rmap.connect('changelog_home', '/{repo_name}/changelog', jsroute=True,
968 rmap.connect('changelog_home', '/{repo_name}/changelog', jsroute=True,
971 controller='changelog', conditions={'function': check_repo},
969 controller='changelog', conditions={'function': check_repo},
972 requirements=URL_NAME_REQUIREMENTS)
970 requirements=URL_NAME_REQUIREMENTS)
973
971
974 rmap.connect('changelog_summary_home', '/{repo_name}/changelog_summary',
972 rmap.connect('changelog_summary_home', '/{repo_name}/changelog_summary',
975 controller='changelog', action='changelog_summary',
973 controller='changelog', action='changelog_summary',
976 conditions={'function': check_repo},
974 conditions={'function': check_repo},
977 requirements=URL_NAME_REQUIREMENTS)
975 requirements=URL_NAME_REQUIREMENTS)
978
976
979 rmap.connect('changelog_file_home',
977 rmap.connect('changelog_file_home',
980 '/{repo_name}/changelog/{revision}/{f_path}',
978 '/{repo_name}/changelog/{revision}/{f_path}',
981 controller='changelog', f_path=None,
979 controller='changelog', f_path=None,
982 conditions={'function': check_repo},
980 conditions={'function': check_repo},
983 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
981 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
984
982
985 rmap.connect('changelog_details', '/{repo_name}/changelog_details/{cs}',
983 rmap.connect('changelog_details', '/{repo_name}/changelog_details/{cs}',
986 controller='changelog', action='changelog_details',
984 controller='changelog', action='changelog_details',
987 conditions={'function': check_repo},
985 conditions={'function': check_repo},
988 requirements=URL_NAME_REQUIREMENTS)
986 requirements=URL_NAME_REQUIREMENTS)
989
987
990 rmap.connect('files_home', '/{repo_name}/files/{revision}/{f_path}',
988 rmap.connect('files_home', '/{repo_name}/files/{revision}/{f_path}',
991 controller='files', revision='tip', f_path='',
989 controller='files', revision='tip', f_path='',
992 conditions={'function': check_repo},
990 conditions={'function': check_repo},
993 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
991 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
994
992
995 rmap.connect('files_home_simple_catchrev',
993 rmap.connect('files_home_simple_catchrev',
996 '/{repo_name}/files/{revision}',
994 '/{repo_name}/files/{revision}',
997 controller='files', revision='tip', f_path='',
995 controller='files', revision='tip', f_path='',
998 conditions={'function': check_repo},
996 conditions={'function': check_repo},
999 requirements=URL_NAME_REQUIREMENTS)
997 requirements=URL_NAME_REQUIREMENTS)
1000
998
1001 rmap.connect('files_home_simple_catchall',
999 rmap.connect('files_home_simple_catchall',
1002 '/{repo_name}/files',
1000 '/{repo_name}/files',
1003 controller='files', revision='tip', f_path='',
1001 controller='files', revision='tip', f_path='',
1004 conditions={'function': check_repo},
1002 conditions={'function': check_repo},
1005 requirements=URL_NAME_REQUIREMENTS)
1003 requirements=URL_NAME_REQUIREMENTS)
1006
1004
1007 rmap.connect('files_history_home',
1005 rmap.connect('files_history_home',
1008 '/{repo_name}/history/{revision}/{f_path}',
1006 '/{repo_name}/history/{revision}/{f_path}',
1009 controller='files', action='history', revision='tip', f_path='',
1007 controller='files', action='history', revision='tip', f_path='',
1010 conditions={'function': check_repo},
1008 conditions={'function': check_repo},
1011 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1009 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1012
1010
1013 rmap.connect('files_authors_home',
1011 rmap.connect('files_authors_home',
1014 '/{repo_name}/authors/{revision}/{f_path}',
1012 '/{repo_name}/authors/{revision}/{f_path}',
1015 controller='files', action='authors', revision='tip', f_path='',
1013 controller='files', action='authors', revision='tip', f_path='',
1016 conditions={'function': check_repo},
1014 conditions={'function': check_repo},
1017 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1015 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1018
1016
1019 rmap.connect('files_diff_home', '/{repo_name}/diff/{f_path}',
1017 rmap.connect('files_diff_home', '/{repo_name}/diff/{f_path}',
1020 controller='files', action='diff', f_path='',
1018 controller='files', action='diff', f_path='',
1021 conditions={'function': check_repo},
1019 conditions={'function': check_repo},
1022 requirements=URL_NAME_REQUIREMENTS)
1020 requirements=URL_NAME_REQUIREMENTS)
1023
1021
1024 rmap.connect('files_diff_2way_home',
1022 rmap.connect('files_diff_2way_home',
1025 '/{repo_name}/diff-2way/{f_path}',
1023 '/{repo_name}/diff-2way/{f_path}',
1026 controller='files', action='diff_2way', f_path='',
1024 controller='files', action='diff_2way', f_path='',
1027 conditions={'function': check_repo},
1025 conditions={'function': check_repo},
1028 requirements=URL_NAME_REQUIREMENTS)
1026 requirements=URL_NAME_REQUIREMENTS)
1029
1027
1030 rmap.connect('files_rawfile_home',
1028 rmap.connect('files_rawfile_home',
1031 '/{repo_name}/rawfile/{revision}/{f_path}',
1029 '/{repo_name}/rawfile/{revision}/{f_path}',
1032 controller='files', action='rawfile', revision='tip',
1030 controller='files', action='rawfile', revision='tip',
1033 f_path='', conditions={'function': check_repo},
1031 f_path='', conditions={'function': check_repo},
1034 requirements=URL_NAME_REQUIREMENTS)
1032 requirements=URL_NAME_REQUIREMENTS)
1035
1033
1036 rmap.connect('files_raw_home',
1034 rmap.connect('files_raw_home',
1037 '/{repo_name}/raw/{revision}/{f_path}',
1035 '/{repo_name}/raw/{revision}/{f_path}',
1038 controller='files', action='raw', revision='tip', f_path='',
1036 controller='files', action='raw', revision='tip', f_path='',
1039 conditions={'function': check_repo},
1037 conditions={'function': check_repo},
1040 requirements=URL_NAME_REQUIREMENTS)
1038 requirements=URL_NAME_REQUIREMENTS)
1041
1039
1042 rmap.connect('files_render_home',
1040 rmap.connect('files_render_home',
1043 '/{repo_name}/render/{revision}/{f_path}',
1041 '/{repo_name}/render/{revision}/{f_path}',
1044 controller='files', action='index', revision='tip', f_path='',
1042 controller='files', action='index', revision='tip', f_path='',
1045 rendered=True, conditions={'function': check_repo},
1043 rendered=True, conditions={'function': check_repo},
1046 requirements=URL_NAME_REQUIREMENTS)
1044 requirements=URL_NAME_REQUIREMENTS)
1047
1045
1048 rmap.connect('files_annotate_home',
1046 rmap.connect('files_annotate_home',
1049 '/{repo_name}/annotate/{revision}/{f_path}',
1047 '/{repo_name}/annotate/{revision}/{f_path}',
1050 controller='files', action='index', revision='tip',
1048 controller='files', action='index', revision='tip',
1051 f_path='', annotate=True, conditions={'function': check_repo},
1049 f_path='', annotate=True, conditions={'function': check_repo},
1052 requirements=URL_NAME_REQUIREMENTS)
1050 requirements=URL_NAME_REQUIREMENTS)
1053
1051
1054 rmap.connect('files_edit',
1052 rmap.connect('files_edit',
1055 '/{repo_name}/edit/{revision}/{f_path}',
1053 '/{repo_name}/edit/{revision}/{f_path}',
1056 controller='files', action='edit', revision='tip',
1054 controller='files', action='edit', revision='tip',
1057 f_path='',
1055 f_path='',
1058 conditions={'function': check_repo, 'method': ['POST']},
1056 conditions={'function': check_repo, 'method': ['POST']},
1059 requirements=URL_NAME_REQUIREMENTS)
1057 requirements=URL_NAME_REQUIREMENTS)
1060
1058
1061 rmap.connect('files_edit_home',
1059 rmap.connect('files_edit_home',
1062 '/{repo_name}/edit/{revision}/{f_path}',
1060 '/{repo_name}/edit/{revision}/{f_path}',
1063 controller='files', action='edit_home', revision='tip',
1061 controller='files', action='edit_home', revision='tip',
1064 f_path='', conditions={'function': check_repo},
1062 f_path='', conditions={'function': check_repo},
1065 requirements=URL_NAME_REQUIREMENTS)
1063 requirements=URL_NAME_REQUIREMENTS)
1066
1064
1067 rmap.connect('files_add',
1065 rmap.connect('files_add',
1068 '/{repo_name}/add/{revision}/{f_path}',
1066 '/{repo_name}/add/{revision}/{f_path}',
1069 controller='files', action='add', revision='tip',
1067 controller='files', action='add', revision='tip',
1070 f_path='',
1068 f_path='',
1071 conditions={'function': check_repo, 'method': ['POST']},
1069 conditions={'function': check_repo, 'method': ['POST']},
1072 requirements=URL_NAME_REQUIREMENTS)
1070 requirements=URL_NAME_REQUIREMENTS)
1073
1071
1074 rmap.connect('files_add_home',
1072 rmap.connect('files_add_home',
1075 '/{repo_name}/add/{revision}/{f_path}',
1073 '/{repo_name}/add/{revision}/{f_path}',
1076 controller='files', action='add_home', revision='tip',
1074 controller='files', action='add_home', revision='tip',
1077 f_path='', conditions={'function': check_repo},
1075 f_path='', conditions={'function': check_repo},
1078 requirements=URL_NAME_REQUIREMENTS)
1076 requirements=URL_NAME_REQUIREMENTS)
1079
1077
1080 rmap.connect('files_delete',
1078 rmap.connect('files_delete',
1081 '/{repo_name}/delete/{revision}/{f_path}',
1079 '/{repo_name}/delete/{revision}/{f_path}',
1082 controller='files', action='delete', revision='tip',
1080 controller='files', action='delete', revision='tip',
1083 f_path='',
1081 f_path='',
1084 conditions={'function': check_repo, 'method': ['POST']},
1082 conditions={'function': check_repo, 'method': ['POST']},
1085 requirements=URL_NAME_REQUIREMENTS)
1083 requirements=URL_NAME_REQUIREMENTS)
1086
1084
1087 rmap.connect('files_delete_home',
1085 rmap.connect('files_delete_home',
1088 '/{repo_name}/delete/{revision}/{f_path}',
1086 '/{repo_name}/delete/{revision}/{f_path}',
1089 controller='files', action='delete_home', revision='tip',
1087 controller='files', action='delete_home', revision='tip',
1090 f_path='', conditions={'function': check_repo},
1088 f_path='', conditions={'function': check_repo},
1091 requirements=URL_NAME_REQUIREMENTS)
1089 requirements=URL_NAME_REQUIREMENTS)
1092
1090
1093 rmap.connect('files_archive_home', '/{repo_name}/archive/{fname}',
1091 rmap.connect('files_archive_home', '/{repo_name}/archive/{fname}',
1094 controller='files', action='archivefile',
1092 controller='files', action='archivefile',
1095 conditions={'function': check_repo},
1093 conditions={'function': check_repo},
1096 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1094 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1097
1095
1098 rmap.connect('files_nodelist_home',
1096 rmap.connect('files_nodelist_home',
1099 '/{repo_name}/nodelist/{revision}/{f_path}',
1097 '/{repo_name}/nodelist/{revision}/{f_path}',
1100 controller='files', action='nodelist',
1098 controller='files', action='nodelist',
1101 conditions={'function': check_repo},
1099 conditions={'function': check_repo},
1102 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1100 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1103
1101
1104 rmap.connect('files_metadata_list_home',
1102 rmap.connect('files_metadata_list_home',
1105 '/{repo_name}/metadata_list/{revision}/{f_path}',
1103 '/{repo_name}/metadata_list/{revision}/{f_path}',
1106 controller='files', action='metadata_list',
1104 controller='files', action='metadata_list',
1107 conditions={'function': check_repo},
1105 conditions={'function': check_repo},
1108 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1106 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1109
1107
1110 rmap.connect('repo_fork_create_home', '/{repo_name}/fork',
1108 rmap.connect('repo_fork_create_home', '/{repo_name}/fork',
1111 controller='forks', action='fork_create',
1109 controller='forks', action='fork_create',
1112 conditions={'function': check_repo, 'method': ['POST']},
1110 conditions={'function': check_repo, 'method': ['POST']},
1113 requirements=URL_NAME_REQUIREMENTS)
1111 requirements=URL_NAME_REQUIREMENTS)
1114
1112
1115 rmap.connect('repo_fork_home', '/{repo_name}/fork',
1113 rmap.connect('repo_fork_home', '/{repo_name}/fork',
1116 controller='forks', action='fork',
1114 controller='forks', action='fork',
1117 conditions={'function': check_repo},
1115 conditions={'function': check_repo},
1118 requirements=URL_NAME_REQUIREMENTS)
1116 requirements=URL_NAME_REQUIREMENTS)
1119
1117
1120 rmap.connect('repo_forks_home', '/{repo_name}/forks',
1118 rmap.connect('repo_forks_home', '/{repo_name}/forks',
1121 controller='forks', action='forks',
1119 controller='forks', action='forks',
1122 conditions={'function': check_repo},
1120 conditions={'function': check_repo},
1123 requirements=URL_NAME_REQUIREMENTS)
1121 requirements=URL_NAME_REQUIREMENTS)
1124
1122
1125 rmap.connect('repo_followers_home', '/{repo_name}/followers',
1123 rmap.connect('repo_followers_home', '/{repo_name}/followers',
1126 controller='followers', action='followers',
1124 controller='followers', action='followers',
1127 conditions={'function': check_repo},
1125 conditions={'function': check_repo},
1128 requirements=URL_NAME_REQUIREMENTS)
1126 requirements=URL_NAME_REQUIREMENTS)
1129
1127
1130 # must be here for proper group/repo catching pattern
1128 # must be here for proper group/repo catching pattern
1131 _connect_with_slash(
1129 _connect_with_slash(
1132 rmap, 'repo_group_home', '/{group_name}',
1130 rmap, 'repo_group_home', '/{group_name}',
1133 controller='home', action='index_repo_group',
1131 controller='home', action='index_repo_group',
1134 conditions={'function': check_group},
1132 conditions={'function': check_group},
1135 requirements=URL_NAME_REQUIREMENTS)
1133 requirements=URL_NAME_REQUIREMENTS)
1136
1134
1137 # catch all, at the end
1135 # catch all, at the end
1138 _connect_with_slash(
1136 _connect_with_slash(
1139 rmap, 'summary_home', '/{repo_name}', jsroute=True,
1137 rmap, 'summary_home', '/{repo_name}', jsroute=True,
1140 controller='summary', action='index',
1138 controller='summary', action='index',
1141 conditions={'function': check_repo},
1139 conditions={'function': check_repo},
1142 requirements=URL_NAME_REQUIREMENTS)
1140 requirements=URL_NAME_REQUIREMENTS)
1143
1141
1144 rmap.jsroutes()
1142 rmap.jsroutes()
1145 return rmap
1143 return rmap
1146
1144
1147
1145
1148 def _connect_with_slash(mapper, name, path, *args, **kwargs):
1146 def _connect_with_slash(mapper, name, path, *args, **kwargs):
1149 """
1147 """
1150 Connect a route with an optional trailing slash in `path`.
1148 Connect a route with an optional trailing slash in `path`.
1151 """
1149 """
1152 mapper.connect(name + '_slash', path + '/', *args, **kwargs)
1150 mapper.connect(name + '_slash', path + '/', *args, **kwargs)
1153 mapper.connect(name, path, *args, **kwargs)
1151 mapper.connect(name, path, *args, **kwargs)
@@ -1,51 +1,50 b''
1
1
2 /******************************************************************************
2 /******************************************************************************
3 * *
3 * *
4 * DO NOT CHANGE THIS FILE MANUALLY *
4 * DO NOT CHANGE THIS FILE MANUALLY *
5 * *
5 * *
6 * *
6 * *
7 * This file is automatically generated when the app starts up. *
7 * This file is automatically generated when the app starts up. *
8 * *
8 * *
9 * To add a route here pass jsroute=True to the route definition in the app *
9 * To add a route here pass jsroute=True to the route definition in the app *
10 * *
10 * *
11 ******************************************************************************/
11 ******************************************************************************/
12 function registerRCRoutes() {
12 function registerRCRoutes() {
13 // routes registration
13 // routes registration
14 pyroutes.register('home', '/', []);
14 pyroutes.register('home', '/', []);
15 pyroutes.register('user_autocomplete_data', '/_users', []);
15 pyroutes.register('user_autocomplete_data', '/_users', []);
16 pyroutes.register('new_repo', '/_admin/create_repository', []);
16 pyroutes.register('new_repo', '/_admin/create_repository', []);
17 pyroutes.register('edit_user_group_members', '/_admin/user_groups/%(user_group_id)s/edit/members', ['user_group_id']);
17 pyroutes.register('edit_user_group_members', '/_admin/user_groups/%(user_group_id)s/edit/members', ['user_group_id']);
18 pyroutes.register('gists', '/_admin/gists', []);
18 pyroutes.register('gists', '/_admin/gists', []);
19 pyroutes.register('new_gist', '/_admin/gists/new', []);
19 pyroutes.register('new_gist', '/_admin/gists/new', []);
20 pyroutes.register('gists', '/_admin/gists', []);
21 pyroutes.register('toggle_following', '/_admin/toggle_following', []);
20 pyroutes.register('toggle_following', '/_admin/toggle_following', []);
22 pyroutes.register('repo_stats', '/%(repo_name)s/repo_stats/%(commit_id)s', ['repo_name', 'commit_id']);
21 pyroutes.register('repo_stats', '/%(repo_name)s/repo_stats/%(commit_id)s', ['repo_name', 'commit_id']);
23 pyroutes.register('repo_refs_data', '/%(repo_name)s/refs-data', ['repo_name']);
22 pyroutes.register('repo_refs_data', '/%(repo_name)s/refs-data', ['repo_name']);
24 pyroutes.register('repo_refs_changelog_data', '/%(repo_name)s/refs-data-changelog', ['repo_name']);
23 pyroutes.register('repo_refs_changelog_data', '/%(repo_name)s/refs-data-changelog', ['repo_name']);
25 pyroutes.register('changeset_home', '/%(repo_name)s/changeset/%(revision)s', ['repo_name', 'revision']);
24 pyroutes.register('changeset_home', '/%(repo_name)s/changeset/%(revision)s', ['repo_name', 'revision']);
26 pyroutes.register('edit_repo', '/%(repo_name)s/settings', ['repo_name']);
25 pyroutes.register('edit_repo', '/%(repo_name)s/settings', ['repo_name']);
27 pyroutes.register('edit_repo_perms', '/%(repo_name)s/settings/permissions', ['repo_name']);
26 pyroutes.register('edit_repo_perms', '/%(repo_name)s/settings/permissions', ['repo_name']);
28 pyroutes.register('changeset_comment', '/%(repo_name)s/changeset/%(revision)s/comment', ['repo_name', 'revision']);
27 pyroutes.register('changeset_comment', '/%(repo_name)s/changeset/%(revision)s/comment', ['repo_name', 'revision']);
29 pyroutes.register('changeset_comment_preview', '/%(repo_name)s/changeset/comment/preview', ['repo_name']);
28 pyroutes.register('changeset_comment_preview', '/%(repo_name)s/changeset/comment/preview', ['repo_name']);
30 pyroutes.register('changeset_comment_delete', '/%(repo_name)s/changeset/comment/%(comment_id)s/delete', ['repo_name', 'comment_id']);
29 pyroutes.register('changeset_comment_delete', '/%(repo_name)s/changeset/comment/%(comment_id)s/delete', ['repo_name', 'comment_id']);
31 pyroutes.register('changeset_info', '/changeset_info/%(repo_name)s/%(revision)s', ['repo_name', 'revision']);
30 pyroutes.register('changeset_info', '/changeset_info/%(repo_name)s/%(revision)s', ['repo_name', 'revision']);
32 pyroutes.register('compare_url', '/%(repo_name)s/compare/%(source_ref_type)s@%(source_ref)s...%(target_ref_type)s@%(target_ref)s', ['repo_name', 'source_ref_type', 'source_ref', 'target_ref_type', 'target_ref']);
31 pyroutes.register('compare_url', '/%(repo_name)s/compare/%(source_ref_type)s@%(source_ref)s...%(target_ref_type)s@%(target_ref)s', ['repo_name', 'source_ref_type', 'source_ref', 'target_ref_type', 'target_ref']);
33 pyroutes.register('pullrequest_home', '/%(repo_name)s/pull-request/new', ['repo_name']);
32 pyroutes.register('pullrequest_home', '/%(repo_name)s/pull-request/new', ['repo_name']);
34 pyroutes.register('pullrequest', '/%(repo_name)s/pull-request/new', ['repo_name']);
33 pyroutes.register('pullrequest', '/%(repo_name)s/pull-request/new', ['repo_name']);
35 pyroutes.register('pullrequest_repo_refs', '/%(repo_name)s/pull-request/refs/%(target_repo_name)s', ['repo_name', 'target_repo_name']);
34 pyroutes.register('pullrequest_repo_refs', '/%(repo_name)s/pull-request/refs/%(target_repo_name)s', ['repo_name', 'target_repo_name']);
36 pyroutes.register('pullrequest_repo_destinations', '/%(repo_name)s/pull-request/repo-destinations', ['repo_name']);
35 pyroutes.register('pullrequest_repo_destinations', '/%(repo_name)s/pull-request/repo-destinations', ['repo_name']);
37 pyroutes.register('pullrequest_update', '/%(repo_name)s/pull-request/%(pull_request_id)s', ['repo_name', 'pull_request_id']);
36 pyroutes.register('pullrequest_update', '/%(repo_name)s/pull-request/%(pull_request_id)s', ['repo_name', 'pull_request_id']);
38 pyroutes.register('pullrequest_show_all', '/%(repo_name)s/pull-request', ['repo_name']);
37 pyroutes.register('pullrequest_show_all', '/%(repo_name)s/pull-request', ['repo_name']);
39 pyroutes.register('pullrequest_comment', '/%(repo_name)s/pull-request-comment/%(pull_request_id)s', ['repo_name', 'pull_request_id']);
38 pyroutes.register('pullrequest_comment', '/%(repo_name)s/pull-request-comment/%(pull_request_id)s', ['repo_name', 'pull_request_id']);
40 pyroutes.register('pullrequest_comment_delete', '/%(repo_name)s/pull-request-comment/%(comment_id)s/delete', ['repo_name', 'comment_id']);
39 pyroutes.register('pullrequest_comment_delete', '/%(repo_name)s/pull-request-comment/%(comment_id)s/delete', ['repo_name', 'comment_id']);
41 pyroutes.register('changelog_home', '/%(repo_name)s/changelog', ['repo_name']);
40 pyroutes.register('changelog_home', '/%(repo_name)s/changelog', ['repo_name']);
42 pyroutes.register('changelog_file_home', '/%(repo_name)s/changelog/%(revision)s/%(f_path)s', ['repo_name', 'revision', 'f_path']);
41 pyroutes.register('changelog_file_home', '/%(repo_name)s/changelog/%(revision)s/%(f_path)s', ['repo_name', 'revision', 'f_path']);
43 pyroutes.register('files_home', '/%(repo_name)s/files/%(revision)s/%(f_path)s', ['repo_name', 'revision', 'f_path']);
42 pyroutes.register('files_home', '/%(repo_name)s/files/%(revision)s/%(f_path)s', ['repo_name', 'revision', 'f_path']);
44 pyroutes.register('files_history_home', '/%(repo_name)s/history/%(revision)s/%(f_path)s', ['repo_name', 'revision', 'f_path']);
43 pyroutes.register('files_history_home', '/%(repo_name)s/history/%(revision)s/%(f_path)s', ['repo_name', 'revision', 'f_path']);
45 pyroutes.register('files_authors_home', '/%(repo_name)s/authors/%(revision)s/%(f_path)s', ['repo_name', 'revision', 'f_path']);
44 pyroutes.register('files_authors_home', '/%(repo_name)s/authors/%(revision)s/%(f_path)s', ['repo_name', 'revision', 'f_path']);
46 pyroutes.register('files_archive_home', '/%(repo_name)s/archive/%(fname)s', ['repo_name', 'fname']);
45 pyroutes.register('files_archive_home', '/%(repo_name)s/archive/%(fname)s', ['repo_name', 'fname']);
47 pyroutes.register('files_nodelist_home', '/%(repo_name)s/nodelist/%(revision)s/%(f_path)s', ['repo_name', 'revision', 'f_path']);
46 pyroutes.register('files_nodelist_home', '/%(repo_name)s/nodelist/%(revision)s/%(f_path)s', ['repo_name', 'revision', 'f_path']);
48 pyroutes.register('files_metadata_list_home', '/%(repo_name)s/metadata_list/%(revision)s/%(f_path)s', ['repo_name', 'revision', 'f_path']);
47 pyroutes.register('files_metadata_list_home', '/%(repo_name)s/metadata_list/%(revision)s/%(f_path)s', ['repo_name', 'revision', 'f_path']);
49 pyroutes.register('summary_home_slash', '/%(repo_name)s/', ['repo_name']);
48 pyroutes.register('summary_home_slash', '/%(repo_name)s/', ['repo_name']);
50 pyroutes.register('summary_home', '/%(repo_name)s', ['repo_name']);
49 pyroutes.register('summary_home', '/%(repo_name)s', ['repo_name']);
51 }
50 }
General Comments 0
You need to be logged in to leave comments. Login now