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