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