##// END OF EJS Templates
cleanup: rename class name
dan -
r97:772dc32b default
parent child Browse files
Show More
@@ -1,1151 +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 JSRoutesMapper(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(JSRoutesMapper, 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(JSRoutesMapper, 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 = JSRoutesMapper(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
583
584 m.connect('/gists/{gist_id}',
584 m.connect('/gists/{gist_id}',
585 action='delete', conditions={'method': ['DELETE']})
585 action='delete', conditions={'method': ['DELETE']})
586 m.connect('edit_gist', '/gists/{gist_id}/edit',
586 m.connect('edit_gist', '/gists/{gist_id}/edit',
587 action='edit_form', conditions={'method': ['GET']})
587 action='edit_form', conditions={'method': ['GET']})
588 m.connect('edit_gist', '/gists/{gist_id}/edit',
588 m.connect('edit_gist', '/gists/{gist_id}/edit',
589 action='edit', conditions={'method': ['POST']})
589 action='edit', conditions={'method': ['POST']})
590 m.connect(
590 m.connect(
591 'edit_gist_check_revision', '/gists/{gist_id}/edit/check_revision',
591 'edit_gist_check_revision', '/gists/{gist_id}/edit/check_revision',
592 action='check_revision', conditions={'method': ['GET']})
592 action='check_revision', conditions={'method': ['GET']})
593
593
594 m.connect('gist', '/gists/{gist_id}',
594 m.connect('gist', '/gists/{gist_id}',
595 action='show', conditions={'method': ['GET']})
595 action='show', conditions={'method': ['GET']})
596 m.connect('gist_rev', '/gists/{gist_id}/{revision}',
596 m.connect('gist_rev', '/gists/{gist_id}/{revision}',
597 revision='tip',
597 revision='tip',
598 action='show', conditions={'method': ['GET']})
598 action='show', conditions={'method': ['GET']})
599 m.connect('formatted_gist', '/gists/{gist_id}/{revision}/{format}',
599 m.connect('formatted_gist', '/gists/{gist_id}/{revision}/{format}',
600 revision='tip',
600 revision='tip',
601 action='show', conditions={'method': ['GET']})
601 action='show', conditions={'method': ['GET']})
602 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}',
603 revision='tip',
603 revision='tip',
604 action='show', conditions={'method': ['GET']},
604 action='show', conditions={'method': ['GET']},
605 requirements=URL_NAME_REQUIREMENTS)
605 requirements=URL_NAME_REQUIREMENTS)
606
606
607 # ADMIN MAIN PAGES
607 # ADMIN MAIN PAGES
608 with rmap.submapper(path_prefix=ADMIN_PREFIX,
608 with rmap.submapper(path_prefix=ADMIN_PREFIX,
609 controller='admin/admin') as m:
609 controller='admin/admin') as m:
610 m.connect('admin_home', '', action='index')
610 m.connect('admin_home', '', action='index')
611 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\. _-]*}',
612 action='add_repo')
612 action='add_repo')
613 m.connect(
613 m.connect(
614 'pull_requests_global_0', '/pull_requests/{pull_request_id:[0-9]+}',
614 'pull_requests_global_0', '/pull_requests/{pull_request_id:[0-9]+}',
615 action='pull_requests')
615 action='pull_requests')
616 m.connect(
616 m.connect(
617 'pull_requests_global', '/pull-requests/{pull_request_id:[0-9]+}',
617 'pull_requests_global', '/pull-requests/{pull_request_id:[0-9]+}',
618 action='pull_requests')
618 action='pull_requests')
619
619
620
620
621 # USER JOURNAL
621 # USER JOURNAL
622 rmap.connect('journal', '%s/journal' % (ADMIN_PREFIX,),
622 rmap.connect('journal', '%s/journal' % (ADMIN_PREFIX,),
623 controller='journal', action='index')
623 controller='journal', action='index')
624 rmap.connect('journal_rss', '%s/journal/rss' % (ADMIN_PREFIX,),
624 rmap.connect('journal_rss', '%s/journal/rss' % (ADMIN_PREFIX,),
625 controller='journal', action='journal_rss')
625 controller='journal', action='journal_rss')
626 rmap.connect('journal_atom', '%s/journal/atom' % (ADMIN_PREFIX,),
626 rmap.connect('journal_atom', '%s/journal/atom' % (ADMIN_PREFIX,),
627 controller='journal', action='journal_atom')
627 controller='journal', action='journal_atom')
628
628
629 rmap.connect('public_journal', '%s/public_journal' % (ADMIN_PREFIX,),
629 rmap.connect('public_journal', '%s/public_journal' % (ADMIN_PREFIX,),
630 controller='journal', action='public_journal')
630 controller='journal', action='public_journal')
631
631
632 rmap.connect('public_journal_rss', '%s/public_journal/rss' % (ADMIN_PREFIX,),
632 rmap.connect('public_journal_rss', '%s/public_journal/rss' % (ADMIN_PREFIX,),
633 controller='journal', action='public_journal_rss')
633 controller='journal', action='public_journal_rss')
634
634
635 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,),
636 controller='journal', action='public_journal_rss')
636 controller='journal', action='public_journal_rss')
637
637
638 rmap.connect('public_journal_atom',
638 rmap.connect('public_journal_atom',
639 '%s/public_journal/atom' % (ADMIN_PREFIX,), controller='journal',
639 '%s/public_journal/atom' % (ADMIN_PREFIX,), controller='journal',
640 action='public_journal_atom')
640 action='public_journal_atom')
641
641
642 rmap.connect('public_journal_atom_old',
642 rmap.connect('public_journal_atom_old',
643 '%s/public_journal_atom' % (ADMIN_PREFIX,), controller='journal',
643 '%s/public_journal_atom' % (ADMIN_PREFIX,), controller='journal',
644 action='public_journal_atom')
644 action='public_journal_atom')
645
645
646 rmap.connect('toggle_following', '%s/toggle_following' % (ADMIN_PREFIX,),
646 rmap.connect('toggle_following', '%s/toggle_following' % (ADMIN_PREFIX,),
647 controller='journal', action='toggle_following', jsroute=True,
647 controller='journal', action='toggle_following', jsroute=True,
648 conditions={'method': ['POST']})
648 conditions={'method': ['POST']})
649
649
650 # FULL TEXT SEARCH
650 # FULL TEXT SEARCH
651 rmap.connect('search', '%s/search' % (ADMIN_PREFIX,),
651 rmap.connect('search', '%s/search' % (ADMIN_PREFIX,),
652 controller='search')
652 controller='search')
653 rmap.connect('search_repo_home', '/{repo_name}/search',
653 rmap.connect('search_repo_home', '/{repo_name}/search',
654 controller='search',
654 controller='search',
655 action='index',
655 action='index',
656 conditions={'function': check_repo},
656 conditions={'function': check_repo},
657 requirements=URL_NAME_REQUIREMENTS)
657 requirements=URL_NAME_REQUIREMENTS)
658
658
659 # FEEDS
659 # FEEDS
660 rmap.connect('rss_feed_home', '/{repo_name}/feed/rss',
660 rmap.connect('rss_feed_home', '/{repo_name}/feed/rss',
661 controller='feed', action='rss',
661 controller='feed', action='rss',
662 conditions={'function': check_repo},
662 conditions={'function': check_repo},
663 requirements=URL_NAME_REQUIREMENTS)
663 requirements=URL_NAME_REQUIREMENTS)
664
664
665 rmap.connect('atom_feed_home', '/{repo_name}/feed/atom',
665 rmap.connect('atom_feed_home', '/{repo_name}/feed/atom',
666 controller='feed', action='atom',
666 controller='feed', action='atom',
667 conditions={'function': check_repo},
667 conditions={'function': check_repo},
668 requirements=URL_NAME_REQUIREMENTS)
668 requirements=URL_NAME_REQUIREMENTS)
669
669
670 #==========================================================================
670 #==========================================================================
671 # REPOSITORY ROUTES
671 # REPOSITORY ROUTES
672 #==========================================================================
672 #==========================================================================
673
673
674 rmap.connect('repo_creating_home', '/{repo_name}/repo_creating',
674 rmap.connect('repo_creating_home', '/{repo_name}/repo_creating',
675 controller='admin/repos', action='repo_creating',
675 controller='admin/repos', action='repo_creating',
676 requirements=URL_NAME_REQUIREMENTS)
676 requirements=URL_NAME_REQUIREMENTS)
677 rmap.connect('repo_check_home', '/{repo_name}/crepo_check',
677 rmap.connect('repo_check_home', '/{repo_name}/crepo_check',
678 controller='admin/repos', action='repo_check',
678 controller='admin/repos', action='repo_check',
679 requirements=URL_NAME_REQUIREMENTS)
679 requirements=URL_NAME_REQUIREMENTS)
680
680
681 rmap.connect('repo_stats', '/{repo_name}/repo_stats/{commit_id}',
681 rmap.connect('repo_stats', '/{repo_name}/repo_stats/{commit_id}',
682 controller='summary', action='repo_stats',
682 controller='summary', action='repo_stats',
683 conditions={'function': check_repo},
683 conditions={'function': check_repo},
684 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
684 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
685
685
686 rmap.connect('repo_refs_data', '/{repo_name}/refs-data',
686 rmap.connect('repo_refs_data', '/{repo_name}/refs-data',
687 controller='summary', action='repo_refs_data', jsroute=True,
687 controller='summary', action='repo_refs_data', jsroute=True,
688 requirements=URL_NAME_REQUIREMENTS)
688 requirements=URL_NAME_REQUIREMENTS)
689 rmap.connect('repo_refs_changelog_data', '/{repo_name}/refs-data-changelog',
689 rmap.connect('repo_refs_changelog_data', '/{repo_name}/refs-data-changelog',
690 controller='summary', action='repo_refs_changelog_data',
690 controller='summary', action='repo_refs_changelog_data',
691 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
691 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
692
692
693 rmap.connect('changeset_home', '/{repo_name}/changeset/{revision}',
693 rmap.connect('changeset_home', '/{repo_name}/changeset/{revision}',
694 controller='changeset', revision='tip', jsroute=True,
694 controller='changeset', revision='tip', jsroute=True,
695 conditions={'function': check_repo},
695 conditions={'function': check_repo},
696 requirements=URL_NAME_REQUIREMENTS)
696 requirements=URL_NAME_REQUIREMENTS)
697 rmap.connect('changeset_children', '/{repo_name}/changeset_children/{revision}',
697 rmap.connect('changeset_children', '/{repo_name}/changeset_children/{revision}',
698 controller='changeset', revision='tip', action='changeset_children',
698 controller='changeset', revision='tip', action='changeset_children',
699 conditions={'function': check_repo},
699 conditions={'function': check_repo},
700 requirements=URL_NAME_REQUIREMENTS)
700 requirements=URL_NAME_REQUIREMENTS)
701 rmap.connect('changeset_parents', '/{repo_name}/changeset_parents/{revision}',
701 rmap.connect('changeset_parents', '/{repo_name}/changeset_parents/{revision}',
702 controller='changeset', revision='tip', action='changeset_parents',
702 controller='changeset', revision='tip', action='changeset_parents',
703 conditions={'function': check_repo},
703 conditions={'function': check_repo},
704 requirements=URL_NAME_REQUIREMENTS)
704 requirements=URL_NAME_REQUIREMENTS)
705
705
706 # repo edit options
706 # repo edit options
707 rmap.connect('edit_repo', '/{repo_name}/settings', jsroute=True,
707 rmap.connect('edit_repo', '/{repo_name}/settings', jsroute=True,
708 controller='admin/repos', action='edit',
708 controller='admin/repos', action='edit',
709 conditions={'method': ['GET'], 'function': check_repo},
709 conditions={'method': ['GET'], 'function': check_repo},
710 requirements=URL_NAME_REQUIREMENTS)
710 requirements=URL_NAME_REQUIREMENTS)
711
711
712 rmap.connect('edit_repo_perms', '/{repo_name}/settings/permissions',
712 rmap.connect('edit_repo_perms', '/{repo_name}/settings/permissions',
713 jsroute=True,
713 jsroute=True,
714 controller='admin/repos', action='edit_permissions',
714 controller='admin/repos', action='edit_permissions',
715 conditions={'method': ['GET'], 'function': check_repo},
715 conditions={'method': ['GET'], 'function': check_repo},
716 requirements=URL_NAME_REQUIREMENTS)
716 requirements=URL_NAME_REQUIREMENTS)
717 rmap.connect('edit_repo_perms_update', '/{repo_name}/settings/permissions',
717 rmap.connect('edit_repo_perms_update', '/{repo_name}/settings/permissions',
718 controller='admin/repos', action='edit_permissions_update',
718 controller='admin/repos', action='edit_permissions_update',
719 conditions={'method': ['PUT'], 'function': check_repo},
719 conditions={'method': ['PUT'], 'function': check_repo},
720 requirements=URL_NAME_REQUIREMENTS)
720 requirements=URL_NAME_REQUIREMENTS)
721
721
722 rmap.connect('edit_repo_fields', '/{repo_name}/settings/fields',
722 rmap.connect('edit_repo_fields', '/{repo_name}/settings/fields',
723 controller='admin/repos', action='edit_fields',
723 controller='admin/repos', action='edit_fields',
724 conditions={'method': ['GET'], 'function': check_repo},
724 conditions={'method': ['GET'], 'function': check_repo},
725 requirements=URL_NAME_REQUIREMENTS)
725 requirements=URL_NAME_REQUIREMENTS)
726 rmap.connect('create_repo_fields', '/{repo_name}/settings/fields/new',
726 rmap.connect('create_repo_fields', '/{repo_name}/settings/fields/new',
727 controller='admin/repos', action='create_repo_field',
727 controller='admin/repos', action='create_repo_field',
728 conditions={'method': ['PUT'], 'function': check_repo},
728 conditions={'method': ['PUT'], 'function': check_repo},
729 requirements=URL_NAME_REQUIREMENTS)
729 requirements=URL_NAME_REQUIREMENTS)
730 rmap.connect('delete_repo_fields', '/{repo_name}/settings/fields/{field_id}',
730 rmap.connect('delete_repo_fields', '/{repo_name}/settings/fields/{field_id}',
731 controller='admin/repos', action='delete_repo_field',
731 controller='admin/repos', action='delete_repo_field',
732 conditions={'method': ['DELETE'], 'function': check_repo},
732 conditions={'method': ['DELETE'], 'function': check_repo},
733 requirements=URL_NAME_REQUIREMENTS)
733 requirements=URL_NAME_REQUIREMENTS)
734
734
735 rmap.connect('edit_repo_advanced', '/{repo_name}/settings/advanced',
735 rmap.connect('edit_repo_advanced', '/{repo_name}/settings/advanced',
736 controller='admin/repos', action='edit_advanced',
736 controller='admin/repos', action='edit_advanced',
737 conditions={'method': ['GET'], 'function': check_repo},
737 conditions={'method': ['GET'], 'function': check_repo},
738 requirements=URL_NAME_REQUIREMENTS)
738 requirements=URL_NAME_REQUIREMENTS)
739
739
740 rmap.connect('edit_repo_advanced_locking', '/{repo_name}/settings/advanced/locking',
740 rmap.connect('edit_repo_advanced_locking', '/{repo_name}/settings/advanced/locking',
741 controller='admin/repos', action='edit_advanced_locking',
741 controller='admin/repos', action='edit_advanced_locking',
742 conditions={'method': ['PUT'], 'function': check_repo},
742 conditions={'method': ['PUT'], 'function': check_repo},
743 requirements=URL_NAME_REQUIREMENTS)
743 requirements=URL_NAME_REQUIREMENTS)
744 rmap.connect('toggle_locking', '/{repo_name}/settings/advanced/locking_toggle',
744 rmap.connect('toggle_locking', '/{repo_name}/settings/advanced/locking_toggle',
745 controller='admin/repos', action='toggle_locking',
745 controller='admin/repos', action='toggle_locking',
746 conditions={'method': ['GET'], 'function': check_repo},
746 conditions={'method': ['GET'], 'function': check_repo},
747 requirements=URL_NAME_REQUIREMENTS)
747 requirements=URL_NAME_REQUIREMENTS)
748
748
749 rmap.connect('edit_repo_advanced_journal', '/{repo_name}/settings/advanced/journal',
749 rmap.connect('edit_repo_advanced_journal', '/{repo_name}/settings/advanced/journal',
750 controller='admin/repos', action='edit_advanced_journal',
750 controller='admin/repos', action='edit_advanced_journal',
751 conditions={'method': ['PUT'], 'function': check_repo},
751 conditions={'method': ['PUT'], 'function': check_repo},
752 requirements=URL_NAME_REQUIREMENTS)
752 requirements=URL_NAME_REQUIREMENTS)
753
753
754 rmap.connect('edit_repo_advanced_fork', '/{repo_name}/settings/advanced/fork',
754 rmap.connect('edit_repo_advanced_fork', '/{repo_name}/settings/advanced/fork',
755 controller='admin/repos', action='edit_advanced_fork',
755 controller='admin/repos', action='edit_advanced_fork',
756 conditions={'method': ['PUT'], 'function': check_repo},
756 conditions={'method': ['PUT'], 'function': check_repo},
757 requirements=URL_NAME_REQUIREMENTS)
757 requirements=URL_NAME_REQUIREMENTS)
758
758
759 rmap.connect('edit_repo_caches', '/{repo_name}/settings/caches',
759 rmap.connect('edit_repo_caches', '/{repo_name}/settings/caches',
760 controller='admin/repos', action='edit_caches_form',
760 controller='admin/repos', action='edit_caches_form',
761 conditions={'method': ['GET'], 'function': check_repo},
761 conditions={'method': ['GET'], 'function': check_repo},
762 requirements=URL_NAME_REQUIREMENTS)
762 requirements=URL_NAME_REQUIREMENTS)
763 rmap.connect('edit_repo_caches', '/{repo_name}/settings/caches',
763 rmap.connect('edit_repo_caches', '/{repo_name}/settings/caches',
764 controller='admin/repos', action='edit_caches',
764 controller='admin/repos', action='edit_caches',
765 conditions={'method': ['PUT'], 'function': check_repo},
765 conditions={'method': ['PUT'], 'function': check_repo},
766 requirements=URL_NAME_REQUIREMENTS)
766 requirements=URL_NAME_REQUIREMENTS)
767
767
768 rmap.connect('edit_repo_remote', '/{repo_name}/settings/remote',
768 rmap.connect('edit_repo_remote', '/{repo_name}/settings/remote',
769 controller='admin/repos', action='edit_remote_form',
769 controller='admin/repos', action='edit_remote_form',
770 conditions={'method': ['GET'], 'function': check_repo},
770 conditions={'method': ['GET'], 'function': check_repo},
771 requirements=URL_NAME_REQUIREMENTS)
771 requirements=URL_NAME_REQUIREMENTS)
772 rmap.connect('edit_repo_remote', '/{repo_name}/settings/remote',
772 rmap.connect('edit_repo_remote', '/{repo_name}/settings/remote',
773 controller='admin/repos', action='edit_remote',
773 controller='admin/repos', action='edit_remote',
774 conditions={'method': ['PUT'], 'function': check_repo},
774 conditions={'method': ['PUT'], 'function': check_repo},
775 requirements=URL_NAME_REQUIREMENTS)
775 requirements=URL_NAME_REQUIREMENTS)
776
776
777 rmap.connect('edit_repo_statistics', '/{repo_name}/settings/statistics',
777 rmap.connect('edit_repo_statistics', '/{repo_name}/settings/statistics',
778 controller='admin/repos', action='edit_statistics_form',
778 controller='admin/repos', action='edit_statistics_form',
779 conditions={'method': ['GET'], 'function': check_repo},
779 conditions={'method': ['GET'], 'function': check_repo},
780 requirements=URL_NAME_REQUIREMENTS)
780 requirements=URL_NAME_REQUIREMENTS)
781 rmap.connect('edit_repo_statistics', '/{repo_name}/settings/statistics',
781 rmap.connect('edit_repo_statistics', '/{repo_name}/settings/statistics',
782 controller='admin/repos', action='edit_statistics',
782 controller='admin/repos', action='edit_statistics',
783 conditions={'method': ['PUT'], 'function': check_repo},
783 conditions={'method': ['PUT'], 'function': check_repo},
784 requirements=URL_NAME_REQUIREMENTS)
784 requirements=URL_NAME_REQUIREMENTS)
785 rmap.connect('repo_settings_issuetracker',
785 rmap.connect('repo_settings_issuetracker',
786 '/{repo_name}/settings/issue-tracker',
786 '/{repo_name}/settings/issue-tracker',
787 controller='admin/repos', action='repo_issuetracker',
787 controller='admin/repos', action='repo_issuetracker',
788 conditions={'method': ['GET'], 'function': check_repo},
788 conditions={'method': ['GET'], 'function': check_repo},
789 requirements=URL_NAME_REQUIREMENTS)
789 requirements=URL_NAME_REQUIREMENTS)
790 rmap.connect('repo_issuetracker_test',
790 rmap.connect('repo_issuetracker_test',
791 '/{repo_name}/settings/issue-tracker/test',
791 '/{repo_name}/settings/issue-tracker/test',
792 controller='admin/repos', action='repo_issuetracker_test',
792 controller='admin/repos', action='repo_issuetracker_test',
793 conditions={'method': ['POST'], 'function': check_repo},
793 conditions={'method': ['POST'], 'function': check_repo},
794 requirements=URL_NAME_REQUIREMENTS)
794 requirements=URL_NAME_REQUIREMENTS)
795 rmap.connect('repo_issuetracker_delete',
795 rmap.connect('repo_issuetracker_delete',
796 '/{repo_name}/settings/issue-tracker/delete',
796 '/{repo_name}/settings/issue-tracker/delete',
797 controller='admin/repos', action='repo_issuetracker_delete',
797 controller='admin/repos', action='repo_issuetracker_delete',
798 conditions={'method': ['DELETE'], 'function': check_repo},
798 conditions={'method': ['DELETE'], 'function': check_repo},
799 requirements=URL_NAME_REQUIREMENTS)
799 requirements=URL_NAME_REQUIREMENTS)
800 rmap.connect('repo_issuetracker_save',
800 rmap.connect('repo_issuetracker_save',
801 '/{repo_name}/settings/issue-tracker/save',
801 '/{repo_name}/settings/issue-tracker/save',
802 controller='admin/repos', action='repo_issuetracker_save',
802 controller='admin/repos', action='repo_issuetracker_save',
803 conditions={'method': ['POST'], 'function': check_repo},
803 conditions={'method': ['POST'], 'function': check_repo},
804 requirements=URL_NAME_REQUIREMENTS)
804 requirements=URL_NAME_REQUIREMENTS)
805 rmap.connect('repo_vcs_settings', '/{repo_name}/settings/vcs',
805 rmap.connect('repo_vcs_settings', '/{repo_name}/settings/vcs',
806 controller='admin/repos', action='repo_settings_vcs_update',
806 controller='admin/repos', action='repo_settings_vcs_update',
807 conditions={'method': ['POST'], 'function': check_repo},
807 conditions={'method': ['POST'], 'function': check_repo},
808 requirements=URL_NAME_REQUIREMENTS)
808 requirements=URL_NAME_REQUIREMENTS)
809 rmap.connect('repo_vcs_settings', '/{repo_name}/settings/vcs',
809 rmap.connect('repo_vcs_settings', '/{repo_name}/settings/vcs',
810 controller='admin/repos', action='repo_settings_vcs',
810 controller='admin/repos', action='repo_settings_vcs',
811 conditions={'method': ['GET'], 'function': check_repo},
811 conditions={'method': ['GET'], 'function': check_repo},
812 requirements=URL_NAME_REQUIREMENTS)
812 requirements=URL_NAME_REQUIREMENTS)
813 rmap.connect('repo_vcs_settings', '/{repo_name}/settings/vcs',
813 rmap.connect('repo_vcs_settings', '/{repo_name}/settings/vcs',
814 controller='admin/repos', action='repo_delete_svn_pattern',
814 controller='admin/repos', action='repo_delete_svn_pattern',
815 conditions={'method': ['DELETE'], 'function': check_repo},
815 conditions={'method': ['DELETE'], 'function': check_repo},
816 requirements=URL_NAME_REQUIREMENTS)
816 requirements=URL_NAME_REQUIREMENTS)
817
817
818 # still working url for backward compat.
818 # still working url for backward compat.
819 rmap.connect('raw_changeset_home_depraced',
819 rmap.connect('raw_changeset_home_depraced',
820 '/{repo_name}/raw-changeset/{revision}',
820 '/{repo_name}/raw-changeset/{revision}',
821 controller='changeset', action='changeset_raw',
821 controller='changeset', action='changeset_raw',
822 revision='tip', conditions={'function': check_repo},
822 revision='tip', conditions={'function': check_repo},
823 requirements=URL_NAME_REQUIREMENTS)
823 requirements=URL_NAME_REQUIREMENTS)
824
824
825 # new URLs
825 # new URLs
826 rmap.connect('changeset_raw_home',
826 rmap.connect('changeset_raw_home',
827 '/{repo_name}/changeset-diff/{revision}',
827 '/{repo_name}/changeset-diff/{revision}',
828 controller='changeset', action='changeset_raw',
828 controller='changeset', action='changeset_raw',
829 revision='tip', conditions={'function': check_repo},
829 revision='tip', conditions={'function': check_repo},
830 requirements=URL_NAME_REQUIREMENTS)
830 requirements=URL_NAME_REQUIREMENTS)
831
831
832 rmap.connect('changeset_patch_home',
832 rmap.connect('changeset_patch_home',
833 '/{repo_name}/changeset-patch/{revision}',
833 '/{repo_name}/changeset-patch/{revision}',
834 controller='changeset', action='changeset_patch',
834 controller='changeset', action='changeset_patch',
835 revision='tip', conditions={'function': check_repo},
835 revision='tip', conditions={'function': check_repo},
836 requirements=URL_NAME_REQUIREMENTS)
836 requirements=URL_NAME_REQUIREMENTS)
837
837
838 rmap.connect('changeset_download_home',
838 rmap.connect('changeset_download_home',
839 '/{repo_name}/changeset-download/{revision}',
839 '/{repo_name}/changeset-download/{revision}',
840 controller='changeset', action='changeset_download',
840 controller='changeset', action='changeset_download',
841 revision='tip', conditions={'function': check_repo},
841 revision='tip', conditions={'function': check_repo},
842 requirements=URL_NAME_REQUIREMENTS)
842 requirements=URL_NAME_REQUIREMENTS)
843
843
844 rmap.connect('changeset_comment',
844 rmap.connect('changeset_comment',
845 '/{repo_name}/changeset/{revision}/comment', jsroute=True,
845 '/{repo_name}/changeset/{revision}/comment', jsroute=True,
846 controller='changeset', revision='tip', action='comment',
846 controller='changeset', revision='tip', action='comment',
847 conditions={'function': check_repo},
847 conditions={'function': check_repo},
848 requirements=URL_NAME_REQUIREMENTS)
848 requirements=URL_NAME_REQUIREMENTS)
849
849
850 rmap.connect('changeset_comment_preview',
850 rmap.connect('changeset_comment_preview',
851 '/{repo_name}/changeset/comment/preview', jsroute=True,
851 '/{repo_name}/changeset/comment/preview', jsroute=True,
852 controller='changeset', action='preview_comment',
852 controller='changeset', action='preview_comment',
853 conditions={'function': check_repo, 'method': ['POST']},
853 conditions={'function': check_repo, 'method': ['POST']},
854 requirements=URL_NAME_REQUIREMENTS)
854 requirements=URL_NAME_REQUIREMENTS)
855
855
856 rmap.connect('changeset_comment_delete',
856 rmap.connect('changeset_comment_delete',
857 '/{repo_name}/changeset/comment/{comment_id}/delete',
857 '/{repo_name}/changeset/comment/{comment_id}/delete',
858 controller='changeset', action='delete_comment',
858 controller='changeset', action='delete_comment',
859 conditions={'function': check_repo, 'method': ['DELETE']},
859 conditions={'function': check_repo, 'method': ['DELETE']},
860 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
860 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
861
861
862 rmap.connect('changeset_info', '/changeset_info/{repo_name}/{revision}',
862 rmap.connect('changeset_info', '/changeset_info/{repo_name}/{revision}',
863 controller='changeset', action='changeset_info',
863 controller='changeset', action='changeset_info',
864 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
864 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
865
865
866 rmap.connect('compare_home',
866 rmap.connect('compare_home',
867 '/{repo_name}/compare',
867 '/{repo_name}/compare',
868 controller='compare', action='index',
868 controller='compare', action='index',
869 conditions={'function': check_repo},
869 conditions={'function': check_repo},
870 requirements=URL_NAME_REQUIREMENTS)
870 requirements=URL_NAME_REQUIREMENTS)
871
871
872 rmap.connect('compare_url',
872 rmap.connect('compare_url',
873 '/{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:.*?}',
874 controller='compare', action='compare',
874 controller='compare', action='compare',
875 conditions={'function': check_repo},
875 conditions={'function': check_repo},
876 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
876 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
877
877
878 rmap.connect('pullrequest_home',
878 rmap.connect('pullrequest_home',
879 '/{repo_name}/pull-request/new', controller='pullrequests',
879 '/{repo_name}/pull-request/new', controller='pullrequests',
880 action='index', conditions={'function': check_repo,
880 action='index', conditions={'function': check_repo,
881 'method': ['GET']},
881 'method': ['GET']},
882 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
882 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
883
883
884 rmap.connect('pullrequest',
884 rmap.connect('pullrequest',
885 '/{repo_name}/pull-request/new', controller='pullrequests',
885 '/{repo_name}/pull-request/new', controller='pullrequests',
886 action='create', conditions={'function': check_repo,
886 action='create', conditions={'function': check_repo,
887 'method': ['POST']},
887 'method': ['POST']},
888 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
888 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
889
889
890 rmap.connect('pullrequest_repo_refs',
890 rmap.connect('pullrequest_repo_refs',
891 '/{repo_name}/pull-request/refs/{target_repo_name:.*?[^/]}',
891 '/{repo_name}/pull-request/refs/{target_repo_name:.*?[^/]}',
892 controller='pullrequests',
892 controller='pullrequests',
893 action='get_repo_refs',
893 action='get_repo_refs',
894 conditions={'function': check_repo, 'method': ['GET']},
894 conditions={'function': check_repo, 'method': ['GET']},
895 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
895 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
896
896
897 rmap.connect('pullrequest_repo_destinations',
897 rmap.connect('pullrequest_repo_destinations',
898 '/{repo_name}/pull-request/repo-destinations',
898 '/{repo_name}/pull-request/repo-destinations',
899 controller='pullrequests',
899 controller='pullrequests',
900 action='get_repo_destinations',
900 action='get_repo_destinations',
901 conditions={'function': check_repo, 'method': ['GET']},
901 conditions={'function': check_repo, 'method': ['GET']},
902 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
902 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
903
903
904 rmap.connect('pullrequest_show',
904 rmap.connect('pullrequest_show',
905 '/{repo_name}/pull-request/{pull_request_id}',
905 '/{repo_name}/pull-request/{pull_request_id}',
906 controller='pullrequests',
906 controller='pullrequests',
907 action='show', conditions={'function': check_repo,
907 action='show', conditions={'function': check_repo,
908 'method': ['GET']},
908 'method': ['GET']},
909 requirements=URL_NAME_REQUIREMENTS)
909 requirements=URL_NAME_REQUIREMENTS)
910
910
911 rmap.connect('pullrequest_update',
911 rmap.connect('pullrequest_update',
912 '/{repo_name}/pull-request/{pull_request_id}',
912 '/{repo_name}/pull-request/{pull_request_id}',
913 controller='pullrequests',
913 controller='pullrequests',
914 action='update', conditions={'function': check_repo,
914 action='update', conditions={'function': check_repo,
915 'method': ['PUT']},
915 'method': ['PUT']},
916 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
916 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
917
917
918 rmap.connect('pullrequest_merge',
918 rmap.connect('pullrequest_merge',
919 '/{repo_name}/pull-request/{pull_request_id}',
919 '/{repo_name}/pull-request/{pull_request_id}',
920 controller='pullrequests',
920 controller='pullrequests',
921 action='merge', conditions={'function': check_repo,
921 action='merge', conditions={'function': check_repo,
922 'method': ['POST']},
922 'method': ['POST']},
923 requirements=URL_NAME_REQUIREMENTS)
923 requirements=URL_NAME_REQUIREMENTS)
924
924
925 rmap.connect('pullrequest_delete',
925 rmap.connect('pullrequest_delete',
926 '/{repo_name}/pull-request/{pull_request_id}',
926 '/{repo_name}/pull-request/{pull_request_id}',
927 controller='pullrequests',
927 controller='pullrequests',
928 action='delete', conditions={'function': check_repo,
928 action='delete', conditions={'function': check_repo,
929 'method': ['DELETE']},
929 'method': ['DELETE']},
930 requirements=URL_NAME_REQUIREMENTS)
930 requirements=URL_NAME_REQUIREMENTS)
931
931
932 rmap.connect('pullrequest_show_all',
932 rmap.connect('pullrequest_show_all',
933 '/{repo_name}/pull-request',
933 '/{repo_name}/pull-request',
934 controller='pullrequests',
934 controller='pullrequests',
935 action='show_all', conditions={'function': check_repo,
935 action='show_all', conditions={'function': check_repo,
936 'method': ['GET']},
936 'method': ['GET']},
937 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
937 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
938
938
939 rmap.connect('pullrequest_comment',
939 rmap.connect('pullrequest_comment',
940 '/{repo_name}/pull-request-comment/{pull_request_id}',
940 '/{repo_name}/pull-request-comment/{pull_request_id}',
941 controller='pullrequests',
941 controller='pullrequests',
942 action='comment', conditions={'function': check_repo,
942 action='comment', conditions={'function': check_repo,
943 'method': ['POST']},
943 'method': ['POST']},
944 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
944 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
945
945
946 rmap.connect('pullrequest_comment_delete',
946 rmap.connect('pullrequest_comment_delete',
947 '/{repo_name}/pull-request-comment/{comment_id}/delete',
947 '/{repo_name}/pull-request-comment/{comment_id}/delete',
948 controller='pullrequests', action='delete_comment',
948 controller='pullrequests', action='delete_comment',
949 conditions={'function': check_repo, 'method': ['DELETE']},
949 conditions={'function': check_repo, 'method': ['DELETE']},
950 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
950 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
951
951
952 rmap.connect('summary_home_explicit', '/{repo_name}/summary',
952 rmap.connect('summary_home_explicit', '/{repo_name}/summary',
953 controller='summary', conditions={'function': check_repo},
953 controller='summary', conditions={'function': check_repo},
954 requirements=URL_NAME_REQUIREMENTS)
954 requirements=URL_NAME_REQUIREMENTS)
955
955
956 rmap.connect('branches_home', '/{repo_name}/branches',
956 rmap.connect('branches_home', '/{repo_name}/branches',
957 controller='branches', conditions={'function': check_repo},
957 controller='branches', conditions={'function': check_repo},
958 requirements=URL_NAME_REQUIREMENTS)
958 requirements=URL_NAME_REQUIREMENTS)
959
959
960 rmap.connect('tags_home', '/{repo_name}/tags',
960 rmap.connect('tags_home', '/{repo_name}/tags',
961 controller='tags', conditions={'function': check_repo},
961 controller='tags', conditions={'function': check_repo},
962 requirements=URL_NAME_REQUIREMENTS)
962 requirements=URL_NAME_REQUIREMENTS)
963
963
964 rmap.connect('bookmarks_home', '/{repo_name}/bookmarks',
964 rmap.connect('bookmarks_home', '/{repo_name}/bookmarks',
965 controller='bookmarks', conditions={'function': check_repo},
965 controller='bookmarks', conditions={'function': check_repo},
966 requirements=URL_NAME_REQUIREMENTS)
966 requirements=URL_NAME_REQUIREMENTS)
967
967
968 rmap.connect('changelog_home', '/{repo_name}/changelog', jsroute=True,
968 rmap.connect('changelog_home', '/{repo_name}/changelog', jsroute=True,
969 controller='changelog', conditions={'function': check_repo},
969 controller='changelog', conditions={'function': check_repo},
970 requirements=URL_NAME_REQUIREMENTS)
970 requirements=URL_NAME_REQUIREMENTS)
971
971
972 rmap.connect('changelog_summary_home', '/{repo_name}/changelog_summary',
972 rmap.connect('changelog_summary_home', '/{repo_name}/changelog_summary',
973 controller='changelog', action='changelog_summary',
973 controller='changelog', action='changelog_summary',
974 conditions={'function': check_repo},
974 conditions={'function': check_repo},
975 requirements=URL_NAME_REQUIREMENTS)
975 requirements=URL_NAME_REQUIREMENTS)
976
976
977 rmap.connect('changelog_file_home',
977 rmap.connect('changelog_file_home',
978 '/{repo_name}/changelog/{revision}/{f_path}',
978 '/{repo_name}/changelog/{revision}/{f_path}',
979 controller='changelog', f_path=None,
979 controller='changelog', f_path=None,
980 conditions={'function': check_repo},
980 conditions={'function': check_repo},
981 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
981 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
982
982
983 rmap.connect('changelog_details', '/{repo_name}/changelog_details/{cs}',
983 rmap.connect('changelog_details', '/{repo_name}/changelog_details/{cs}',
984 controller='changelog', action='changelog_details',
984 controller='changelog', action='changelog_details',
985 conditions={'function': check_repo},
985 conditions={'function': check_repo},
986 requirements=URL_NAME_REQUIREMENTS)
986 requirements=URL_NAME_REQUIREMENTS)
987
987
988 rmap.connect('files_home', '/{repo_name}/files/{revision}/{f_path}',
988 rmap.connect('files_home', '/{repo_name}/files/{revision}/{f_path}',
989 controller='files', revision='tip', f_path='',
989 controller='files', revision='tip', f_path='',
990 conditions={'function': check_repo},
990 conditions={'function': check_repo},
991 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
991 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
992
992
993 rmap.connect('files_home_simple_catchrev',
993 rmap.connect('files_home_simple_catchrev',
994 '/{repo_name}/files/{revision}',
994 '/{repo_name}/files/{revision}',
995 controller='files', revision='tip', f_path='',
995 controller='files', revision='tip', f_path='',
996 conditions={'function': check_repo},
996 conditions={'function': check_repo},
997 requirements=URL_NAME_REQUIREMENTS)
997 requirements=URL_NAME_REQUIREMENTS)
998
998
999 rmap.connect('files_home_simple_catchall',
999 rmap.connect('files_home_simple_catchall',
1000 '/{repo_name}/files',
1000 '/{repo_name}/files',
1001 controller='files', revision='tip', f_path='',
1001 controller='files', revision='tip', f_path='',
1002 conditions={'function': check_repo},
1002 conditions={'function': check_repo},
1003 requirements=URL_NAME_REQUIREMENTS)
1003 requirements=URL_NAME_REQUIREMENTS)
1004
1004
1005 rmap.connect('files_history_home',
1005 rmap.connect('files_history_home',
1006 '/{repo_name}/history/{revision}/{f_path}',
1006 '/{repo_name}/history/{revision}/{f_path}',
1007 controller='files', action='history', revision='tip', f_path='',
1007 controller='files', action='history', revision='tip', f_path='',
1008 conditions={'function': check_repo},
1008 conditions={'function': check_repo},
1009 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1009 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1010
1010
1011 rmap.connect('files_authors_home',
1011 rmap.connect('files_authors_home',
1012 '/{repo_name}/authors/{revision}/{f_path}',
1012 '/{repo_name}/authors/{revision}/{f_path}',
1013 controller='files', action='authors', revision='tip', f_path='',
1013 controller='files', action='authors', revision='tip', f_path='',
1014 conditions={'function': check_repo},
1014 conditions={'function': check_repo},
1015 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1015 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1016
1016
1017 rmap.connect('files_diff_home', '/{repo_name}/diff/{f_path}',
1017 rmap.connect('files_diff_home', '/{repo_name}/diff/{f_path}',
1018 controller='files', action='diff', f_path='',
1018 controller='files', action='diff', f_path='',
1019 conditions={'function': check_repo},
1019 conditions={'function': check_repo},
1020 requirements=URL_NAME_REQUIREMENTS)
1020 requirements=URL_NAME_REQUIREMENTS)
1021
1021
1022 rmap.connect('files_diff_2way_home',
1022 rmap.connect('files_diff_2way_home',
1023 '/{repo_name}/diff-2way/{f_path}',
1023 '/{repo_name}/diff-2way/{f_path}',
1024 controller='files', action='diff_2way', f_path='',
1024 controller='files', action='diff_2way', f_path='',
1025 conditions={'function': check_repo},
1025 conditions={'function': check_repo},
1026 requirements=URL_NAME_REQUIREMENTS)
1026 requirements=URL_NAME_REQUIREMENTS)
1027
1027
1028 rmap.connect('files_rawfile_home',
1028 rmap.connect('files_rawfile_home',
1029 '/{repo_name}/rawfile/{revision}/{f_path}',
1029 '/{repo_name}/rawfile/{revision}/{f_path}',
1030 controller='files', action='rawfile', revision='tip',
1030 controller='files', action='rawfile', revision='tip',
1031 f_path='', conditions={'function': check_repo},
1031 f_path='', conditions={'function': check_repo},
1032 requirements=URL_NAME_REQUIREMENTS)
1032 requirements=URL_NAME_REQUIREMENTS)
1033
1033
1034 rmap.connect('files_raw_home',
1034 rmap.connect('files_raw_home',
1035 '/{repo_name}/raw/{revision}/{f_path}',
1035 '/{repo_name}/raw/{revision}/{f_path}',
1036 controller='files', action='raw', revision='tip', f_path='',
1036 controller='files', action='raw', revision='tip', f_path='',
1037 conditions={'function': check_repo},
1037 conditions={'function': check_repo},
1038 requirements=URL_NAME_REQUIREMENTS)
1038 requirements=URL_NAME_REQUIREMENTS)
1039
1039
1040 rmap.connect('files_render_home',
1040 rmap.connect('files_render_home',
1041 '/{repo_name}/render/{revision}/{f_path}',
1041 '/{repo_name}/render/{revision}/{f_path}',
1042 controller='files', action='index', revision='tip', f_path='',
1042 controller='files', action='index', revision='tip', f_path='',
1043 rendered=True, conditions={'function': check_repo},
1043 rendered=True, conditions={'function': check_repo},
1044 requirements=URL_NAME_REQUIREMENTS)
1044 requirements=URL_NAME_REQUIREMENTS)
1045
1045
1046 rmap.connect('files_annotate_home',
1046 rmap.connect('files_annotate_home',
1047 '/{repo_name}/annotate/{revision}/{f_path}',
1047 '/{repo_name}/annotate/{revision}/{f_path}',
1048 controller='files', action='index', revision='tip',
1048 controller='files', action='index', revision='tip',
1049 f_path='', annotate=True, conditions={'function': check_repo},
1049 f_path='', annotate=True, conditions={'function': check_repo},
1050 requirements=URL_NAME_REQUIREMENTS)
1050 requirements=URL_NAME_REQUIREMENTS)
1051
1051
1052 rmap.connect('files_edit',
1052 rmap.connect('files_edit',
1053 '/{repo_name}/edit/{revision}/{f_path}',
1053 '/{repo_name}/edit/{revision}/{f_path}',
1054 controller='files', action='edit', revision='tip',
1054 controller='files', action='edit', revision='tip',
1055 f_path='',
1055 f_path='',
1056 conditions={'function': check_repo, 'method': ['POST']},
1056 conditions={'function': check_repo, 'method': ['POST']},
1057 requirements=URL_NAME_REQUIREMENTS)
1057 requirements=URL_NAME_REQUIREMENTS)
1058
1058
1059 rmap.connect('files_edit_home',
1059 rmap.connect('files_edit_home',
1060 '/{repo_name}/edit/{revision}/{f_path}',
1060 '/{repo_name}/edit/{revision}/{f_path}',
1061 controller='files', action='edit_home', revision='tip',
1061 controller='files', action='edit_home', revision='tip',
1062 f_path='', conditions={'function': check_repo},
1062 f_path='', conditions={'function': check_repo},
1063 requirements=URL_NAME_REQUIREMENTS)
1063 requirements=URL_NAME_REQUIREMENTS)
1064
1064
1065 rmap.connect('files_add',
1065 rmap.connect('files_add',
1066 '/{repo_name}/add/{revision}/{f_path}',
1066 '/{repo_name}/add/{revision}/{f_path}',
1067 controller='files', action='add', revision='tip',
1067 controller='files', action='add', revision='tip',
1068 f_path='',
1068 f_path='',
1069 conditions={'function': check_repo, 'method': ['POST']},
1069 conditions={'function': check_repo, 'method': ['POST']},
1070 requirements=URL_NAME_REQUIREMENTS)
1070 requirements=URL_NAME_REQUIREMENTS)
1071
1071
1072 rmap.connect('files_add_home',
1072 rmap.connect('files_add_home',
1073 '/{repo_name}/add/{revision}/{f_path}',
1073 '/{repo_name}/add/{revision}/{f_path}',
1074 controller='files', action='add_home', revision='tip',
1074 controller='files', action='add_home', revision='tip',
1075 f_path='', conditions={'function': check_repo},
1075 f_path='', conditions={'function': check_repo},
1076 requirements=URL_NAME_REQUIREMENTS)
1076 requirements=URL_NAME_REQUIREMENTS)
1077
1077
1078 rmap.connect('files_delete',
1078 rmap.connect('files_delete',
1079 '/{repo_name}/delete/{revision}/{f_path}',
1079 '/{repo_name}/delete/{revision}/{f_path}',
1080 controller='files', action='delete', revision='tip',
1080 controller='files', action='delete', revision='tip',
1081 f_path='',
1081 f_path='',
1082 conditions={'function': check_repo, 'method': ['POST']},
1082 conditions={'function': check_repo, 'method': ['POST']},
1083 requirements=URL_NAME_REQUIREMENTS)
1083 requirements=URL_NAME_REQUIREMENTS)
1084
1084
1085 rmap.connect('files_delete_home',
1085 rmap.connect('files_delete_home',
1086 '/{repo_name}/delete/{revision}/{f_path}',
1086 '/{repo_name}/delete/{revision}/{f_path}',
1087 controller='files', action='delete_home', revision='tip',
1087 controller='files', action='delete_home', revision='tip',
1088 f_path='', conditions={'function': check_repo},
1088 f_path='', conditions={'function': check_repo},
1089 requirements=URL_NAME_REQUIREMENTS)
1089 requirements=URL_NAME_REQUIREMENTS)
1090
1090
1091 rmap.connect('files_archive_home', '/{repo_name}/archive/{fname}',
1091 rmap.connect('files_archive_home', '/{repo_name}/archive/{fname}',
1092 controller='files', action='archivefile',
1092 controller='files', action='archivefile',
1093 conditions={'function': check_repo},
1093 conditions={'function': check_repo},
1094 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1094 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1095
1095
1096 rmap.connect('files_nodelist_home',
1096 rmap.connect('files_nodelist_home',
1097 '/{repo_name}/nodelist/{revision}/{f_path}',
1097 '/{repo_name}/nodelist/{revision}/{f_path}',
1098 controller='files', action='nodelist',
1098 controller='files', action='nodelist',
1099 conditions={'function': check_repo},
1099 conditions={'function': check_repo},
1100 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1100 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1101
1101
1102 rmap.connect('files_metadata_list_home',
1102 rmap.connect('files_metadata_list_home',
1103 '/{repo_name}/metadata_list/{revision}/{f_path}',
1103 '/{repo_name}/metadata_list/{revision}/{f_path}',
1104 controller='files', action='metadata_list',
1104 controller='files', action='metadata_list',
1105 conditions={'function': check_repo},
1105 conditions={'function': check_repo},
1106 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1106 requirements=URL_NAME_REQUIREMENTS, jsroute=True)
1107
1107
1108 rmap.connect('repo_fork_create_home', '/{repo_name}/fork',
1108 rmap.connect('repo_fork_create_home', '/{repo_name}/fork',
1109 controller='forks', action='fork_create',
1109 controller='forks', action='fork_create',
1110 conditions={'function': check_repo, 'method': ['POST']},
1110 conditions={'function': check_repo, 'method': ['POST']},
1111 requirements=URL_NAME_REQUIREMENTS)
1111 requirements=URL_NAME_REQUIREMENTS)
1112
1112
1113 rmap.connect('repo_fork_home', '/{repo_name}/fork',
1113 rmap.connect('repo_fork_home', '/{repo_name}/fork',
1114 controller='forks', action='fork',
1114 controller='forks', action='fork',
1115 conditions={'function': check_repo},
1115 conditions={'function': check_repo},
1116 requirements=URL_NAME_REQUIREMENTS)
1116 requirements=URL_NAME_REQUIREMENTS)
1117
1117
1118 rmap.connect('repo_forks_home', '/{repo_name}/forks',
1118 rmap.connect('repo_forks_home', '/{repo_name}/forks',
1119 controller='forks', action='forks',
1119 controller='forks', action='forks',
1120 conditions={'function': check_repo},
1120 conditions={'function': check_repo},
1121 requirements=URL_NAME_REQUIREMENTS)
1121 requirements=URL_NAME_REQUIREMENTS)
1122
1122
1123 rmap.connect('repo_followers_home', '/{repo_name}/followers',
1123 rmap.connect('repo_followers_home', '/{repo_name}/followers',
1124 controller='followers', action='followers',
1124 controller='followers', action='followers',
1125 conditions={'function': check_repo},
1125 conditions={'function': check_repo},
1126 requirements=URL_NAME_REQUIREMENTS)
1126 requirements=URL_NAME_REQUIREMENTS)
1127
1127
1128 # must be here for proper group/repo catching pattern
1128 # must be here for proper group/repo catching pattern
1129 _connect_with_slash(
1129 _connect_with_slash(
1130 rmap, 'repo_group_home', '/{group_name}',
1130 rmap, 'repo_group_home', '/{group_name}',
1131 controller='home', action='index_repo_group',
1131 controller='home', action='index_repo_group',
1132 conditions={'function': check_group},
1132 conditions={'function': check_group},
1133 requirements=URL_NAME_REQUIREMENTS)
1133 requirements=URL_NAME_REQUIREMENTS)
1134
1134
1135 # catch all, at the end
1135 # catch all, at the end
1136 _connect_with_slash(
1136 _connect_with_slash(
1137 rmap, 'summary_home', '/{repo_name}', jsroute=True,
1137 rmap, 'summary_home', '/{repo_name}', jsroute=True,
1138 controller='summary', action='index',
1138 controller='summary', action='index',
1139 conditions={'function': check_repo},
1139 conditions={'function': check_repo},
1140 requirements=URL_NAME_REQUIREMENTS)
1140 requirements=URL_NAME_REQUIREMENTS)
1141
1141
1142 rmap.jsroutes()
1142 rmap.jsroutes()
1143 return rmap
1143 return rmap
1144
1144
1145
1145
1146 def _connect_with_slash(mapper, name, path, *args, **kwargs):
1146 def _connect_with_slash(mapper, name, path, *args, **kwargs):
1147 """
1147 """
1148 Connect a route with an optional trailing slash in `path`.
1148 Connect a route with an optional trailing slash in `path`.
1149 """
1149 """
1150 mapper.connect(name + '_slash', path + '/', *args, **kwargs)
1150 mapper.connect(name + '_slash', path + '/', *args, **kwargs)
1151 mapper.connect(name, path, *args, **kwargs)
1151 mapper.connect(name, path, *args, **kwargs)
General Comments 0
You need to be logged in to leave comments. Login now