##// END OF EJS Templates
repo-forks: security, check for access to fork_id parameter to prevent...
marcink -
r2173:d100eea4 default
parent child Browse files
Show More
@@ -1,223 +1,233 b''
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2
2
3 # Copyright (C) 2011-2017 RhodeCode GmbH
3 # Copyright (C) 2011-2017 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 import logging
21 import logging
22
22
23 from pyramid.view import view_config
23 from pyramid.view import view_config
24 from pyramid.httpexceptions import HTTPFound
24 from pyramid.httpexceptions import HTTPFound
25
25
26 from rhodecode.apps._base import RepoAppView
26 from rhodecode.apps._base import RepoAppView
27 from rhodecode.lib import helpers as h
27 from rhodecode.lib import helpers as h
28 from rhodecode.lib import audit_logger
28 from rhodecode.lib import audit_logger
29 from rhodecode.lib.auth import (
29 from rhodecode.lib.auth import (
30 LoginRequired, HasRepoPermissionAnyDecorator, CSRFRequired)
30 LoginRequired, HasRepoPermissionAnyDecorator, CSRFRequired,
31 HasRepoPermissionAny)
31 from rhodecode.lib.exceptions import AttachedForksError
32 from rhodecode.lib.exceptions import AttachedForksError
32 from rhodecode.lib.utils2 import safe_int
33 from rhodecode.lib.utils2 import safe_int
33 from rhodecode.lib.vcs import RepositoryError
34 from rhodecode.lib.vcs import RepositoryError
34 from rhodecode.model.db import Session, UserFollowing, User, Repository
35 from rhodecode.model.db import Session, UserFollowing, User, Repository
35 from rhodecode.model.repo import RepoModel
36 from rhodecode.model.repo import RepoModel
36 from rhodecode.model.scm import ScmModel
37 from rhodecode.model.scm import ScmModel
37
38
38 log = logging.getLogger(__name__)
39 log = logging.getLogger(__name__)
39
40
40
41
41 class RepoSettingsView(RepoAppView):
42 class RepoSettingsView(RepoAppView):
42
43
43 def load_default_context(self):
44 def load_default_context(self):
44 c = self._get_local_tmpl_context()
45 c = self._get_local_tmpl_context()
45
46
46 self._register_global_c(c)
47 self._register_global_c(c)
47 return c
48 return c
48
49
49 @LoginRequired()
50 @LoginRequired()
50 @HasRepoPermissionAnyDecorator('repository.admin')
51 @HasRepoPermissionAnyDecorator('repository.admin')
51 @view_config(
52 @view_config(
52 route_name='edit_repo_advanced', request_method='GET',
53 route_name='edit_repo_advanced', request_method='GET',
53 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
54 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
54 def edit_advanced(self):
55 def edit_advanced(self):
55 c = self.load_default_context()
56 c = self.load_default_context()
56 c.active = 'advanced'
57 c.active = 'advanced'
57
58
58 c.default_user_id = User.get_default_user().user_id
59 c.default_user_id = User.get_default_user().user_id
59 c.in_public_journal = UserFollowing.query() \
60 c.in_public_journal = UserFollowing.query() \
60 .filter(UserFollowing.user_id == c.default_user_id) \
61 .filter(UserFollowing.user_id == c.default_user_id) \
61 .filter(UserFollowing.follows_repository == self.db_repo).scalar()
62 .filter(UserFollowing.follows_repository == self.db_repo).scalar()
62
63
63 c.has_origin_repo_read_perm = False
64 c.has_origin_repo_read_perm = False
64 if self.db_repo.fork:
65 if self.db_repo.fork:
65 c.has_origin_repo_read_perm = h.HasRepoPermissionAny(
66 c.has_origin_repo_read_perm = h.HasRepoPermissionAny(
66 'repository.write', 'repository.read', 'repository.admin')(
67 'repository.write', 'repository.read', 'repository.admin')(
67 self.db_repo.fork.repo_name, 'repo set as fork page')
68 self.db_repo.fork.repo_name, 'repo set as fork page')
68
69
69 return self._get_template_context(c)
70 return self._get_template_context(c)
70
71
71 @LoginRequired()
72 @LoginRequired()
72 @HasRepoPermissionAnyDecorator('repository.admin')
73 @HasRepoPermissionAnyDecorator('repository.admin')
73 @CSRFRequired()
74 @CSRFRequired()
74 @view_config(
75 @view_config(
75 route_name='edit_repo_advanced_delete', request_method='POST',
76 route_name='edit_repo_advanced_delete', request_method='POST',
76 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
77 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
77 def edit_advanced_delete(self):
78 def edit_advanced_delete(self):
78 """
79 """
79 Deletes the repository, or shows warnings if deletion is not possible
80 Deletes the repository, or shows warnings if deletion is not possible
80 because of attached forks or other errors.
81 because of attached forks or other errors.
81 """
82 """
82 _ = self.request.translate
83 _ = self.request.translate
83 handle_forks = self.request.POST.get('forks', None)
84 handle_forks = self.request.POST.get('forks', None)
84
85
85 try:
86 try:
86 _forks = self.db_repo.forks.count()
87 _forks = self.db_repo.forks.count()
87 if _forks and handle_forks:
88 if _forks and handle_forks:
88 if handle_forks == 'detach_forks':
89 if handle_forks == 'detach_forks':
89 handle_forks = 'detach'
90 handle_forks = 'detach'
90 h.flash(_('Detached %s forks') % _forks, category='success')
91 h.flash(_('Detached %s forks') % _forks, category='success')
91 elif handle_forks == 'delete_forks':
92 elif handle_forks == 'delete_forks':
92 handle_forks = 'delete'
93 handle_forks = 'delete'
93 h.flash(_('Deleted %s forks') % _forks, category='success')
94 h.flash(_('Deleted %s forks') % _forks, category='success')
94
95
95 old_data = self.db_repo.get_api_data()
96 old_data = self.db_repo.get_api_data()
96 RepoModel().delete(self.db_repo, forks=handle_forks)
97 RepoModel().delete(self.db_repo, forks=handle_forks)
97
98
98 repo = audit_logger.RepoWrap(repo_id=None,
99 repo = audit_logger.RepoWrap(repo_id=None,
99 repo_name=self.db_repo.repo_name)
100 repo_name=self.db_repo.repo_name)
100 audit_logger.store_web(
101 audit_logger.store_web(
101 'repo.delete', action_data={'old_data': old_data},
102 'repo.delete', action_data={'old_data': old_data},
102 user=self._rhodecode_user, repo=repo)
103 user=self._rhodecode_user, repo=repo)
103
104
104 ScmModel().mark_for_invalidation(self.db_repo_name, delete=True)
105 ScmModel().mark_for_invalidation(self.db_repo_name, delete=True)
105 h.flash(
106 h.flash(
106 _('Deleted repository `%s`') % self.db_repo_name,
107 _('Deleted repository `%s`') % self.db_repo_name,
107 category='success')
108 category='success')
108 Session().commit()
109 Session().commit()
109 except AttachedForksError:
110 except AttachedForksError:
110 repo_advanced_url = h.route_path(
111 repo_advanced_url = h.route_path(
111 'edit_repo_advanced', repo_name=self.db_repo_name,
112 'edit_repo_advanced', repo_name=self.db_repo_name,
112 _anchor='advanced-delete')
113 _anchor='advanced-delete')
113 delete_anchor = h.link_to(_('detach or delete'), repo_advanced_url)
114 delete_anchor = h.link_to(_('detach or delete'), repo_advanced_url)
114 h.flash(_('Cannot delete `{repo}` it still contains attached forks. '
115 h.flash(_('Cannot delete `{repo}` it still contains attached forks. '
115 'Try using {delete_or_detach} option.')
116 'Try using {delete_or_detach} option.')
116 .format(repo=self.db_repo_name, delete_or_detach=delete_anchor),
117 .format(repo=self.db_repo_name, delete_or_detach=delete_anchor),
117 category='warning')
118 category='warning')
118
119
119 # redirect to advanced for forks handle action ?
120 # redirect to advanced for forks handle action ?
120 raise HTTPFound(repo_advanced_url)
121 raise HTTPFound(repo_advanced_url)
121
122
122 except Exception:
123 except Exception:
123 log.exception("Exception during deletion of repository")
124 log.exception("Exception during deletion of repository")
124 h.flash(_('An error occurred during deletion of `%s`')
125 h.flash(_('An error occurred during deletion of `%s`')
125 % self.db_repo_name, category='error')
126 % self.db_repo_name, category='error')
126 # redirect to advanced for more deletion options
127 # redirect to advanced for more deletion options
127 raise HTTPFound(
128 raise HTTPFound(
128 h.route_path('edit_repo_advanced', repo_name=self.db_repo_name,
129 h.route_path('edit_repo_advanced', repo_name=self.db_repo_name,
129 _anchor='advanced-delete'))
130 _anchor='advanced-delete'))
130
131
131 raise HTTPFound(h.route_path('home'))
132 raise HTTPFound(h.route_path('home'))
132
133
133 @LoginRequired()
134 @LoginRequired()
134 @HasRepoPermissionAnyDecorator('repository.admin')
135 @HasRepoPermissionAnyDecorator('repository.admin')
135 @CSRFRequired()
136 @CSRFRequired()
136 @view_config(
137 @view_config(
137 route_name='edit_repo_advanced_journal', request_method='POST',
138 route_name='edit_repo_advanced_journal', request_method='POST',
138 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
139 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
139 def edit_advanced_journal(self):
140 def edit_advanced_journal(self):
140 """
141 """
141 Set's this repository to be visible in public journal,
142 Set's this repository to be visible in public journal,
142 in other words making default user to follow this repo
143 in other words making default user to follow this repo
143 """
144 """
144 _ = self.request.translate
145 _ = self.request.translate
145
146
146 try:
147 try:
147 user_id = User.get_default_user().user_id
148 user_id = User.get_default_user().user_id
148 ScmModel().toggle_following_repo(self.db_repo.repo_id, user_id)
149 ScmModel().toggle_following_repo(self.db_repo.repo_id, user_id)
149 h.flash(_('Updated repository visibility in public journal'),
150 h.flash(_('Updated repository visibility in public journal'),
150 category='success')
151 category='success')
151 Session().commit()
152 Session().commit()
152 except Exception:
153 except Exception:
153 h.flash(_('An error occurred during setting this '
154 h.flash(_('An error occurred during setting this '
154 'repository in public journal'),
155 'repository in public journal'),
155 category='error')
156 category='error')
156
157
157 raise HTTPFound(
158 raise HTTPFound(
158 h.route_path('edit_repo_advanced', repo_name=self.db_repo_name))
159 h.route_path('edit_repo_advanced', repo_name=self.db_repo_name))
159
160
160 @LoginRequired()
161 @LoginRequired()
161 @HasRepoPermissionAnyDecorator('repository.admin')
162 @HasRepoPermissionAnyDecorator('repository.admin')
162 @CSRFRequired()
163 @CSRFRequired()
163 @view_config(
164 @view_config(
164 route_name='edit_repo_advanced_fork', request_method='POST',
165 route_name='edit_repo_advanced_fork', request_method='POST',
165 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
166 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
166 def edit_advanced_fork(self):
167 def edit_advanced_fork(self):
167 """
168 """
168 Mark given repository as a fork of another
169 Mark given repository as a fork of another
169 """
170 """
170 _ = self.request.translate
171 _ = self.request.translate
171
172
172 new_fork_id = self.request.POST.get('id_fork_of')
173 new_fork_id = safe_int(self.request.POST.get('id_fork_of'))
173 try:
174
175 # valid repo, re-check permissions
176 if new_fork_id:
177 repo = Repository.get(new_fork_id)
178 # ensure we have at least read access to the repo we mark
179 perm_check = HasRepoPermissionAny(
180 'repository.read', 'repository.write', 'repository.admin')
174
181
175 if new_fork_id and not new_fork_id.isdigit():
182 if repo and perm_check(repo_name=repo.repo_name):
176 log.error('Given fork id %s is not an INT', new_fork_id)
183 new_fork_id = repo.repo_id
184 else:
185 new_fork_id = None
177
186
178 fork_id = safe_int(new_fork_id)
187 try:
179 repo = ScmModel().mark_as_fork(
188 repo = ScmModel().mark_as_fork(
180 self.db_repo_name, fork_id, self._rhodecode_user.user_id)
189 self.db_repo_name, new_fork_id, self._rhodecode_user.user_id)
181 fork = repo.fork.repo_name if repo.fork else _('Nothing')
190 fork = repo.fork.repo_name if repo.fork else _('Nothing')
182 Session().commit()
191 Session().commit()
183 h.flash(_('Marked repo %s as fork of %s') % (self.db_repo_name, fork),
192 h.flash(
184 category='success')
193 _('Marked repo %s as fork of %s') % (self.db_repo_name, fork),
194 category='success')
185 except RepositoryError as e:
195 except RepositoryError as e:
186 log.exception("Repository Error occurred")
196 log.exception("Repository Error occurred")
187 h.flash(str(e), category='error')
197 h.flash(str(e), category='error')
188 except Exception as e:
198 except Exception:
189 log.exception("Exception while editing fork")
199 log.exception("Exception while editing fork")
190 h.flash(_('An error occurred during this operation'),
200 h.flash(_('An error occurred during this operation'),
191 category='error')
201 category='error')
192
202
193 raise HTTPFound(
203 raise HTTPFound(
194 h.route_path('edit_repo_advanced', repo_name=self.db_repo_name))
204 h.route_path('edit_repo_advanced', repo_name=self.db_repo_name))
195
205
196 @LoginRequired()
206 @LoginRequired()
197 @HasRepoPermissionAnyDecorator('repository.admin')
207 @HasRepoPermissionAnyDecorator('repository.admin')
198 @CSRFRequired()
208 @CSRFRequired()
199 @view_config(
209 @view_config(
200 route_name='edit_repo_advanced_locking', request_method='POST',
210 route_name='edit_repo_advanced_locking', request_method='POST',
201 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
211 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
202 def edit_advanced_locking(self):
212 def edit_advanced_locking(self):
203 """
213 """
204 Toggle locking of repository
214 Toggle locking of repository
205 """
215 """
206 _ = self.request.translate
216 _ = self.request.translate
207 set_lock = self.request.POST.get('set_lock')
217 set_lock = self.request.POST.get('set_lock')
208 set_unlock = self.request.POST.get('set_unlock')
218 set_unlock = self.request.POST.get('set_unlock')
209
219
210 try:
220 try:
211 if set_lock:
221 if set_lock:
212 Repository.lock(self.db_repo, self._rhodecode_user.user_id,
222 Repository.lock(self.db_repo, self._rhodecode_user.user_id,
213 lock_reason=Repository.LOCK_WEB)
223 lock_reason=Repository.LOCK_WEB)
214 h.flash(_('Locked repository'), category='success')
224 h.flash(_('Locked repository'), category='success')
215 elif set_unlock:
225 elif set_unlock:
216 Repository.unlock(self.db_repo)
226 Repository.unlock(self.db_repo)
217 h.flash(_('Unlocked repository'), category='success')
227 h.flash(_('Unlocked repository'), category='success')
218 except Exception as e:
228 except Exception as e:
219 log.exception("Exception during unlocking")
229 log.exception("Exception during unlocking")
220 h.flash(_('An error occurred during unlocking'), category='error')
230 h.flash(_('An error occurred during unlocking'), category='error')
221
231
222 raise HTTPFound(
232 raise HTTPFound(
223 h.route_path('edit_repo_advanced', repo_name=self.db_repo_name))
233 h.route_path('edit_repo_advanced', repo_name=self.db_repo_name))
@@ -1,284 +1,285 b''
1
1
2 /******************************************************************************
2 /******************************************************************************
3 * *
3 * *
4 * DO NOT CHANGE THIS FILE MANUALLY *
4 * DO NOT CHANGE THIS FILE MANUALLY *
5 * *
5 * *
6 * *
6 * *
7 * This file is automatically generated when the app starts up with *
7 * This file is automatically generated when the app starts up with *
8 * generate_js_files = true *
8 * generate_js_files = true *
9 * *
9 * *
10 * To add a route here pass jsroute=True to the route definition in the app *
10 * To add a route here pass jsroute=True to the route definition in the app *
11 * *
11 * *
12 ******************************************************************************/
12 ******************************************************************************/
13 function registerRCRoutes() {
13 function registerRCRoutes() {
14 // routes registration
14 // routes registration
15 pyroutes.register('favicon', '/favicon.ico', []);
15 pyroutes.register('favicon', '/favicon.ico', []);
16 pyroutes.register('robots', '/robots.txt', []);
16 pyroutes.register('robots', '/robots.txt', []);
17 pyroutes.register('auth_home', '/_admin/auth*traverse', []);
17 pyroutes.register('auth_home', '/_admin/auth*traverse', []);
18 pyroutes.register('global_integrations_new', '/_admin/integrations/new', []);
18 pyroutes.register('global_integrations_new', '/_admin/integrations/new', []);
19 pyroutes.register('global_integrations_home', '/_admin/integrations', []);
19 pyroutes.register('global_integrations_home', '/_admin/integrations', []);
20 pyroutes.register('global_integrations_list', '/_admin/integrations/%(integration)s', ['integration']);
20 pyroutes.register('global_integrations_list', '/_admin/integrations/%(integration)s', ['integration']);
21 pyroutes.register('global_integrations_create', '/_admin/integrations/%(integration)s/new', ['integration']);
21 pyroutes.register('global_integrations_create', '/_admin/integrations/%(integration)s/new', ['integration']);
22 pyroutes.register('global_integrations_edit', '/_admin/integrations/%(integration)s/%(integration_id)s', ['integration', 'integration_id']);
22 pyroutes.register('global_integrations_edit', '/_admin/integrations/%(integration)s/%(integration_id)s', ['integration', 'integration_id']);
23 pyroutes.register('repo_group_integrations_home', '/%(repo_group_name)s/settings/integrations', ['repo_group_name']);
23 pyroutes.register('repo_group_integrations_home', '/%(repo_group_name)s/settings/integrations', ['repo_group_name']);
24 pyroutes.register('repo_group_integrations_new', '/%(repo_group_name)s/settings/integrations/new', ['repo_group_name']);
24 pyroutes.register('repo_group_integrations_new', '/%(repo_group_name)s/settings/integrations/new', ['repo_group_name']);
25 pyroutes.register('repo_group_integrations_list', '/%(repo_group_name)s/settings/integrations/%(integration)s', ['repo_group_name', 'integration']);
25 pyroutes.register('repo_group_integrations_list', '/%(repo_group_name)s/settings/integrations/%(integration)s', ['repo_group_name', 'integration']);
26 pyroutes.register('repo_group_integrations_create', '/%(repo_group_name)s/settings/integrations/%(integration)s/new', ['repo_group_name', 'integration']);
26 pyroutes.register('repo_group_integrations_create', '/%(repo_group_name)s/settings/integrations/%(integration)s/new', ['repo_group_name', 'integration']);
27 pyroutes.register('repo_group_integrations_edit', '/%(repo_group_name)s/settings/integrations/%(integration)s/%(integration_id)s', ['repo_group_name', 'integration', 'integration_id']);
27 pyroutes.register('repo_group_integrations_edit', '/%(repo_group_name)s/settings/integrations/%(integration)s/%(integration_id)s', ['repo_group_name', 'integration', 'integration_id']);
28 pyroutes.register('repo_integrations_home', '/%(repo_name)s/settings/integrations', ['repo_name']);
28 pyroutes.register('repo_integrations_home', '/%(repo_name)s/settings/integrations', ['repo_name']);
29 pyroutes.register('repo_integrations_new', '/%(repo_name)s/settings/integrations/new', ['repo_name']);
29 pyroutes.register('repo_integrations_new', '/%(repo_name)s/settings/integrations/new', ['repo_name']);
30 pyroutes.register('repo_integrations_list', '/%(repo_name)s/settings/integrations/%(integration)s', ['repo_name', 'integration']);
30 pyroutes.register('repo_integrations_list', '/%(repo_name)s/settings/integrations/%(integration)s', ['repo_name', 'integration']);
31 pyroutes.register('repo_integrations_create', '/%(repo_name)s/settings/integrations/%(integration)s/new', ['repo_name', 'integration']);
31 pyroutes.register('repo_integrations_create', '/%(repo_name)s/settings/integrations/%(integration)s/new', ['repo_name', 'integration']);
32 pyroutes.register('repo_integrations_edit', '/%(repo_name)s/settings/integrations/%(integration)s/%(integration_id)s', ['repo_name', 'integration', 'integration_id']);
32 pyroutes.register('repo_integrations_edit', '/%(repo_name)s/settings/integrations/%(integration)s/%(integration_id)s', ['repo_name', 'integration', 'integration_id']);
33 pyroutes.register('ops_ping', '/_admin/ops/ping', []);
33 pyroutes.register('ops_ping', '/_admin/ops/ping', []);
34 pyroutes.register('ops_error_test', '/_admin/ops/error', []);
34 pyroutes.register('ops_error_test', '/_admin/ops/error', []);
35 pyroutes.register('ops_redirect_test', '/_admin/ops/redirect', []);
35 pyroutes.register('ops_redirect_test', '/_admin/ops/redirect', []);
36 pyroutes.register('ops_ping_legacy', '/_admin/ping', []);
36 pyroutes.register('ops_ping_legacy', '/_admin/ping', []);
37 pyroutes.register('ops_error_test_legacy', '/_admin/error_test', []);
37 pyroutes.register('ops_error_test_legacy', '/_admin/error_test', []);
38 pyroutes.register('admin_home', '/_admin', []);
38 pyroutes.register('admin_home', '/_admin', []);
39 pyroutes.register('admin_audit_logs', '/_admin/audit_logs', []);
39 pyroutes.register('admin_audit_logs', '/_admin/audit_logs', []);
40 pyroutes.register('admin_audit_log_entry', '/_admin/audit_logs/%(audit_log_id)s', ['audit_log_id']);
40 pyroutes.register('admin_audit_log_entry', '/_admin/audit_logs/%(audit_log_id)s', ['audit_log_id']);
41 pyroutes.register('pull_requests_global_0', '/_admin/pull_requests/%(pull_request_id)s', ['pull_request_id']);
41 pyroutes.register('pull_requests_global_0', '/_admin/pull_requests/%(pull_request_id)s', ['pull_request_id']);
42 pyroutes.register('pull_requests_global_1', '/_admin/pull-requests/%(pull_request_id)s', ['pull_request_id']);
42 pyroutes.register('pull_requests_global_1', '/_admin/pull-requests/%(pull_request_id)s', ['pull_request_id']);
43 pyroutes.register('pull_requests_global', '/_admin/pull-request/%(pull_request_id)s', ['pull_request_id']);
43 pyroutes.register('pull_requests_global', '/_admin/pull-request/%(pull_request_id)s', ['pull_request_id']);
44 pyroutes.register('admin_settings_open_source', '/_admin/settings/open_source', []);
44 pyroutes.register('admin_settings_open_source', '/_admin/settings/open_source', []);
45 pyroutes.register('admin_settings_vcs_svn_generate_cfg', '/_admin/settings/vcs/svn_generate_cfg', []);
45 pyroutes.register('admin_settings_vcs_svn_generate_cfg', '/_admin/settings/vcs/svn_generate_cfg', []);
46 pyroutes.register('admin_settings_system', '/_admin/settings/system', []);
46 pyroutes.register('admin_settings_system', '/_admin/settings/system', []);
47 pyroutes.register('admin_settings_system_update', '/_admin/settings/system/updates', []);
47 pyroutes.register('admin_settings_system_update', '/_admin/settings/system/updates', []);
48 pyroutes.register('admin_settings_sessions', '/_admin/settings/sessions', []);
48 pyroutes.register('admin_settings_sessions', '/_admin/settings/sessions', []);
49 pyroutes.register('admin_settings_sessions_cleanup', '/_admin/settings/sessions/cleanup', []);
49 pyroutes.register('admin_settings_sessions_cleanup', '/_admin/settings/sessions/cleanup', []);
50 pyroutes.register('admin_settings_process_management', '/_admin/settings/process_management', []);
50 pyroutes.register('admin_settings_process_management', '/_admin/settings/process_management', []);
51 pyroutes.register('admin_settings_process_management_signal', '/_admin/settings/process_management/signal', []);
51 pyroutes.register('admin_settings_process_management_signal', '/_admin/settings/process_management/signal', []);
52 pyroutes.register('admin_defaults_repositories', '/_admin/defaults/repositories', []);
52 pyroutes.register('admin_defaults_repositories', '/_admin/defaults/repositories', []);
53 pyroutes.register('admin_defaults_repositories_update', '/_admin/defaults/repositories/update', []);
53 pyroutes.register('admin_defaults_repositories_update', '/_admin/defaults/repositories/update', []);
54 pyroutes.register('admin_permissions_application', '/_admin/permissions/application', []);
54 pyroutes.register('admin_permissions_application', '/_admin/permissions/application', []);
55 pyroutes.register('admin_permissions_application_update', '/_admin/permissions/application/update', []);
55 pyroutes.register('admin_permissions_application_update', '/_admin/permissions/application/update', []);
56 pyroutes.register('admin_permissions_global', '/_admin/permissions/global', []);
56 pyroutes.register('admin_permissions_global', '/_admin/permissions/global', []);
57 pyroutes.register('admin_permissions_global_update', '/_admin/permissions/global/update', []);
57 pyroutes.register('admin_permissions_global_update', '/_admin/permissions/global/update', []);
58 pyroutes.register('admin_permissions_object', '/_admin/permissions/object', []);
58 pyroutes.register('admin_permissions_object', '/_admin/permissions/object', []);
59 pyroutes.register('admin_permissions_object_update', '/_admin/permissions/object/update', []);
59 pyroutes.register('admin_permissions_object_update', '/_admin/permissions/object/update', []);
60 pyroutes.register('admin_permissions_ips', '/_admin/permissions/ips', []);
60 pyroutes.register('admin_permissions_ips', '/_admin/permissions/ips', []);
61 pyroutes.register('admin_permissions_overview', '/_admin/permissions/overview', []);
61 pyroutes.register('admin_permissions_overview', '/_admin/permissions/overview', []);
62 pyroutes.register('admin_permissions_auth_token_access', '/_admin/permissions/auth_token_access', []);
62 pyroutes.register('admin_permissions_auth_token_access', '/_admin/permissions/auth_token_access', []);
63 pyroutes.register('admin_permissions_ssh_keys', '/_admin/permissions/ssh_keys', []);
63 pyroutes.register('admin_permissions_ssh_keys', '/_admin/permissions/ssh_keys', []);
64 pyroutes.register('admin_permissions_ssh_keys_data', '/_admin/permissions/ssh_keys/data', []);
64 pyroutes.register('admin_permissions_ssh_keys_data', '/_admin/permissions/ssh_keys/data', []);
65 pyroutes.register('admin_permissions_ssh_keys_update', '/_admin/permissions/ssh_keys/update', []);
65 pyroutes.register('admin_permissions_ssh_keys_update', '/_admin/permissions/ssh_keys/update', []);
66 pyroutes.register('users', '/_admin/users', []);
66 pyroutes.register('users', '/_admin/users', []);
67 pyroutes.register('users_data', '/_admin/users_data', []);
67 pyroutes.register('users_data', '/_admin/users_data', []);
68 pyroutes.register('users_create', '/_admin/users/create', []);
68 pyroutes.register('users_create', '/_admin/users/create', []);
69 pyroutes.register('users_new', '/_admin/users/new', []);
69 pyroutes.register('users_new', '/_admin/users/new', []);
70 pyroutes.register('user_edit', '/_admin/users/%(user_id)s/edit', ['user_id']);
70 pyroutes.register('user_edit', '/_admin/users/%(user_id)s/edit', ['user_id']);
71 pyroutes.register('user_edit_advanced', '/_admin/users/%(user_id)s/edit/advanced', ['user_id']);
71 pyroutes.register('user_edit_advanced', '/_admin/users/%(user_id)s/edit/advanced', ['user_id']);
72 pyroutes.register('user_edit_global_perms', '/_admin/users/%(user_id)s/edit/global_permissions', ['user_id']);
72 pyroutes.register('user_edit_global_perms', '/_admin/users/%(user_id)s/edit/global_permissions', ['user_id']);
73 pyroutes.register('user_edit_global_perms_update', '/_admin/users/%(user_id)s/edit/global_permissions/update', ['user_id']);
73 pyroutes.register('user_edit_global_perms_update', '/_admin/users/%(user_id)s/edit/global_permissions/update', ['user_id']);
74 pyroutes.register('user_update', '/_admin/users/%(user_id)s/update', ['user_id']);
74 pyroutes.register('user_update', '/_admin/users/%(user_id)s/update', ['user_id']);
75 pyroutes.register('user_delete', '/_admin/users/%(user_id)s/delete', ['user_id']);
75 pyroutes.register('user_delete', '/_admin/users/%(user_id)s/delete', ['user_id']);
76 pyroutes.register('user_force_password_reset', '/_admin/users/%(user_id)s/password_reset', ['user_id']);
76 pyroutes.register('user_force_password_reset', '/_admin/users/%(user_id)s/password_reset', ['user_id']);
77 pyroutes.register('user_create_personal_repo_group', '/_admin/users/%(user_id)s/create_repo_group', ['user_id']);
77 pyroutes.register('user_create_personal_repo_group', '/_admin/users/%(user_id)s/create_repo_group', ['user_id']);
78 pyroutes.register('edit_user_auth_tokens', '/_admin/users/%(user_id)s/edit/auth_tokens', ['user_id']);
78 pyroutes.register('edit_user_auth_tokens', '/_admin/users/%(user_id)s/edit/auth_tokens', ['user_id']);
79 pyroutes.register('edit_user_auth_tokens_add', '/_admin/users/%(user_id)s/edit/auth_tokens/new', ['user_id']);
79 pyroutes.register('edit_user_auth_tokens_add', '/_admin/users/%(user_id)s/edit/auth_tokens/new', ['user_id']);
80 pyroutes.register('edit_user_auth_tokens_delete', '/_admin/users/%(user_id)s/edit/auth_tokens/delete', ['user_id']);
80 pyroutes.register('edit_user_auth_tokens_delete', '/_admin/users/%(user_id)s/edit/auth_tokens/delete', ['user_id']);
81 pyroutes.register('edit_user_ssh_keys', '/_admin/users/%(user_id)s/edit/ssh_keys', ['user_id']);
81 pyroutes.register('edit_user_ssh_keys', '/_admin/users/%(user_id)s/edit/ssh_keys', ['user_id']);
82 pyroutes.register('edit_user_ssh_keys_generate_keypair', '/_admin/users/%(user_id)s/edit/ssh_keys/generate', ['user_id']);
82 pyroutes.register('edit_user_ssh_keys_generate_keypair', '/_admin/users/%(user_id)s/edit/ssh_keys/generate', ['user_id']);
83 pyroutes.register('edit_user_ssh_keys_add', '/_admin/users/%(user_id)s/edit/ssh_keys/new', ['user_id']);
83 pyroutes.register('edit_user_ssh_keys_add', '/_admin/users/%(user_id)s/edit/ssh_keys/new', ['user_id']);
84 pyroutes.register('edit_user_ssh_keys_delete', '/_admin/users/%(user_id)s/edit/ssh_keys/delete', ['user_id']);
84 pyroutes.register('edit_user_ssh_keys_delete', '/_admin/users/%(user_id)s/edit/ssh_keys/delete', ['user_id']);
85 pyroutes.register('edit_user_emails', '/_admin/users/%(user_id)s/edit/emails', ['user_id']);
85 pyroutes.register('edit_user_emails', '/_admin/users/%(user_id)s/edit/emails', ['user_id']);
86 pyroutes.register('edit_user_emails_add', '/_admin/users/%(user_id)s/edit/emails/new', ['user_id']);
86 pyroutes.register('edit_user_emails_add', '/_admin/users/%(user_id)s/edit/emails/new', ['user_id']);
87 pyroutes.register('edit_user_emails_delete', '/_admin/users/%(user_id)s/edit/emails/delete', ['user_id']);
87 pyroutes.register('edit_user_emails_delete', '/_admin/users/%(user_id)s/edit/emails/delete', ['user_id']);
88 pyroutes.register('edit_user_ips', '/_admin/users/%(user_id)s/edit/ips', ['user_id']);
88 pyroutes.register('edit_user_ips', '/_admin/users/%(user_id)s/edit/ips', ['user_id']);
89 pyroutes.register('edit_user_ips_add', '/_admin/users/%(user_id)s/edit/ips/new', ['user_id']);
89 pyroutes.register('edit_user_ips_add', '/_admin/users/%(user_id)s/edit/ips/new', ['user_id']);
90 pyroutes.register('edit_user_ips_delete', '/_admin/users/%(user_id)s/edit/ips/delete', ['user_id']);
90 pyroutes.register('edit_user_ips_delete', '/_admin/users/%(user_id)s/edit/ips/delete', ['user_id']);
91 pyroutes.register('edit_user_perms_summary', '/_admin/users/%(user_id)s/edit/permissions_summary', ['user_id']);
91 pyroutes.register('edit_user_perms_summary', '/_admin/users/%(user_id)s/edit/permissions_summary', ['user_id']);
92 pyroutes.register('edit_user_perms_summary_json', '/_admin/users/%(user_id)s/edit/permissions_summary/json', ['user_id']);
92 pyroutes.register('edit_user_perms_summary_json', '/_admin/users/%(user_id)s/edit/permissions_summary/json', ['user_id']);
93 pyroutes.register('edit_user_groups_management', '/_admin/users/%(user_id)s/edit/groups_management', ['user_id']);
93 pyroutes.register('edit_user_groups_management', '/_admin/users/%(user_id)s/edit/groups_management', ['user_id']);
94 pyroutes.register('edit_user_groups_management_updates', '/_admin/users/%(user_id)s/edit/edit_user_groups_management/updates', ['user_id']);
94 pyroutes.register('edit_user_groups_management_updates', '/_admin/users/%(user_id)s/edit/edit_user_groups_management/updates', ['user_id']);
95 pyroutes.register('edit_user_audit_logs', '/_admin/users/%(user_id)s/edit/audit', ['user_id']);
95 pyroutes.register('edit_user_audit_logs', '/_admin/users/%(user_id)s/edit/audit', ['user_id']);
96 pyroutes.register('user_groups', '/_admin/user_groups', []);
96 pyroutes.register('user_groups', '/_admin/user_groups', []);
97 pyroutes.register('user_groups_data', '/_admin/user_groups_data', []);
97 pyroutes.register('user_groups_data', '/_admin/user_groups_data', []);
98 pyroutes.register('user_groups_new', '/_admin/user_groups/new', []);
98 pyroutes.register('user_groups_new', '/_admin/user_groups/new', []);
99 pyroutes.register('user_groups_create', '/_admin/user_groups/create', []);
99 pyroutes.register('user_groups_create', '/_admin/user_groups/create', []);
100 pyroutes.register('repos', '/_admin/repos', []);
100 pyroutes.register('repos', '/_admin/repos', []);
101 pyroutes.register('repo_new', '/_admin/repos/new', []);
101 pyroutes.register('repo_new', '/_admin/repos/new', []);
102 pyroutes.register('repo_create', '/_admin/repos/create', []);
102 pyroutes.register('repo_create', '/_admin/repos/create', []);
103 pyroutes.register('channelstream_connect', '/_admin/channelstream/connect', []);
103 pyroutes.register('channelstream_connect', '/_admin/channelstream/connect', []);
104 pyroutes.register('channelstream_subscribe', '/_admin/channelstream/subscribe', []);
104 pyroutes.register('channelstream_subscribe', '/_admin/channelstream/subscribe', []);
105 pyroutes.register('channelstream_proxy', '/_channelstream', []);
105 pyroutes.register('channelstream_proxy', '/_channelstream', []);
106 pyroutes.register('login', '/_admin/login', []);
106 pyroutes.register('login', '/_admin/login', []);
107 pyroutes.register('logout', '/_admin/logout', []);
107 pyroutes.register('logout', '/_admin/logout', []);
108 pyroutes.register('register', '/_admin/register', []);
108 pyroutes.register('register', '/_admin/register', []);
109 pyroutes.register('reset_password', '/_admin/password_reset', []);
109 pyroutes.register('reset_password', '/_admin/password_reset', []);
110 pyroutes.register('reset_password_confirmation', '/_admin/password_reset_confirmation', []);
110 pyroutes.register('reset_password_confirmation', '/_admin/password_reset_confirmation', []);
111 pyroutes.register('home', '/', []);
111 pyroutes.register('home', '/', []);
112 pyroutes.register('user_autocomplete_data', '/_users', []);
112 pyroutes.register('user_autocomplete_data', '/_users', []);
113 pyroutes.register('user_group_autocomplete_data', '/_user_groups', []);
113 pyroutes.register('user_group_autocomplete_data', '/_user_groups', []);
114 pyroutes.register('repo_list_data', '/_repos', []);
114 pyroutes.register('repo_list_data', '/_repos', []);
115 pyroutes.register('goto_switcher_data', '/_goto_data', []);
115 pyroutes.register('goto_switcher_data', '/_goto_data', []);
116 pyroutes.register('journal', '/_admin/journal', []);
116 pyroutes.register('journal', '/_admin/journal', []);
117 pyroutes.register('journal_rss', '/_admin/journal/rss', []);
117 pyroutes.register('journal_rss', '/_admin/journal/rss', []);
118 pyroutes.register('journal_atom', '/_admin/journal/atom', []);
118 pyroutes.register('journal_atom', '/_admin/journal/atom', []);
119 pyroutes.register('journal_public', '/_admin/public_journal', []);
119 pyroutes.register('journal_public', '/_admin/public_journal', []);
120 pyroutes.register('journal_public_atom', '/_admin/public_journal/atom', []);
120 pyroutes.register('journal_public_atom', '/_admin/public_journal/atom', []);
121 pyroutes.register('journal_public_atom_old', '/_admin/public_journal_atom', []);
121 pyroutes.register('journal_public_atom_old', '/_admin/public_journal_atom', []);
122 pyroutes.register('journal_public_rss', '/_admin/public_journal/rss', []);
122 pyroutes.register('journal_public_rss', '/_admin/public_journal/rss', []);
123 pyroutes.register('journal_public_rss_old', '/_admin/public_journal_rss', []);
123 pyroutes.register('journal_public_rss_old', '/_admin/public_journal_rss', []);
124 pyroutes.register('toggle_following', '/_admin/toggle_following', []);
124 pyroutes.register('toggle_following', '/_admin/toggle_following', []);
125 pyroutes.register('repo_creating', '/%(repo_name)s/repo_creating', ['repo_name']);
125 pyroutes.register('repo_creating', '/%(repo_name)s/repo_creating', ['repo_name']);
126 pyroutes.register('repo_creating_check', '/%(repo_name)s/repo_creating_check', ['repo_name']);
126 pyroutes.register('repo_creating_check', '/%(repo_name)s/repo_creating_check', ['repo_name']);
127 pyroutes.register('repo_summary_explicit', '/%(repo_name)s/summary', ['repo_name']);
127 pyroutes.register('repo_summary_explicit', '/%(repo_name)s/summary', ['repo_name']);
128 pyroutes.register('repo_summary_commits', '/%(repo_name)s/summary-commits', ['repo_name']);
128 pyroutes.register('repo_summary_commits', '/%(repo_name)s/summary-commits', ['repo_name']);
129 pyroutes.register('repo_commit', '/%(repo_name)s/changeset/%(commit_id)s', ['repo_name', 'commit_id']);
129 pyroutes.register('repo_commit', '/%(repo_name)s/changeset/%(commit_id)s', ['repo_name', 'commit_id']);
130 pyroutes.register('repo_commit_children', '/%(repo_name)s/changeset_children/%(commit_id)s', ['repo_name', 'commit_id']);
130 pyroutes.register('repo_commit_children', '/%(repo_name)s/changeset_children/%(commit_id)s', ['repo_name', 'commit_id']);
131 pyroutes.register('repo_commit_parents', '/%(repo_name)s/changeset_parents/%(commit_id)s', ['repo_name', 'commit_id']);
131 pyroutes.register('repo_commit_parents', '/%(repo_name)s/changeset_parents/%(commit_id)s', ['repo_name', 'commit_id']);
132 pyroutes.register('repo_commit_raw', '/%(repo_name)s/changeset-diff/%(commit_id)s', ['repo_name', 'commit_id']);
132 pyroutes.register('repo_commit_raw', '/%(repo_name)s/changeset-diff/%(commit_id)s', ['repo_name', 'commit_id']);
133 pyroutes.register('repo_commit_patch', '/%(repo_name)s/changeset-patch/%(commit_id)s', ['repo_name', 'commit_id']);
133 pyroutes.register('repo_commit_patch', '/%(repo_name)s/changeset-patch/%(commit_id)s', ['repo_name', 'commit_id']);
134 pyroutes.register('repo_commit_download', '/%(repo_name)s/changeset-download/%(commit_id)s', ['repo_name', 'commit_id']);
134 pyroutes.register('repo_commit_download', '/%(repo_name)s/changeset-download/%(commit_id)s', ['repo_name', 'commit_id']);
135 pyroutes.register('repo_commit_data', '/%(repo_name)s/changeset-data/%(commit_id)s', ['repo_name', 'commit_id']);
135 pyroutes.register('repo_commit_data', '/%(repo_name)s/changeset-data/%(commit_id)s', ['repo_name', 'commit_id']);
136 pyroutes.register('repo_commit_comment_create', '/%(repo_name)s/changeset/%(commit_id)s/comment/create', ['repo_name', 'commit_id']);
136 pyroutes.register('repo_commit_comment_create', '/%(repo_name)s/changeset/%(commit_id)s/comment/create', ['repo_name', 'commit_id']);
137 pyroutes.register('repo_commit_comment_preview', '/%(repo_name)s/changeset/%(commit_id)s/comment/preview', ['repo_name', 'commit_id']);
137 pyroutes.register('repo_commit_comment_preview', '/%(repo_name)s/changeset/%(commit_id)s/comment/preview', ['repo_name', 'commit_id']);
138 pyroutes.register('repo_commit_comment_delete', '/%(repo_name)s/changeset/%(commit_id)s/comment/%(comment_id)s/delete', ['repo_name', 'commit_id', 'comment_id']);
138 pyroutes.register('repo_commit_comment_delete', '/%(repo_name)s/changeset/%(commit_id)s/comment/%(comment_id)s/delete', ['repo_name', 'commit_id', 'comment_id']);
139 pyroutes.register('repo_commit_raw_deprecated', '/%(repo_name)s/raw-changeset/%(commit_id)s', ['repo_name', 'commit_id']);
139 pyroutes.register('repo_commit_raw_deprecated', '/%(repo_name)s/raw-changeset/%(commit_id)s', ['repo_name', 'commit_id']);
140 pyroutes.register('repo_archivefile', '/%(repo_name)s/archive/%(fname)s', ['repo_name', 'fname']);
140 pyroutes.register('repo_archivefile', '/%(repo_name)s/archive/%(fname)s', ['repo_name', 'fname']);
141 pyroutes.register('repo_files_diff', '/%(repo_name)s/diff/%(f_path)s', ['repo_name', 'f_path']);
141 pyroutes.register('repo_files_diff', '/%(repo_name)s/diff/%(f_path)s', ['repo_name', 'f_path']);
142 pyroutes.register('repo_files_diff_2way_redirect', '/%(repo_name)s/diff-2way/%(f_path)s', ['repo_name', 'f_path']);
142 pyroutes.register('repo_files_diff_2way_redirect', '/%(repo_name)s/diff-2way/%(f_path)s', ['repo_name', 'f_path']);
143 pyroutes.register('repo_files', '/%(repo_name)s/files/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
143 pyroutes.register('repo_files', '/%(repo_name)s/files/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
144 pyroutes.register('repo_files:default_path', '/%(repo_name)s/files/%(commit_id)s/', ['repo_name', 'commit_id']);
144 pyroutes.register('repo_files:default_path', '/%(repo_name)s/files/%(commit_id)s/', ['repo_name', 'commit_id']);
145 pyroutes.register('repo_files:default_commit', '/%(repo_name)s/files', ['repo_name']);
145 pyroutes.register('repo_files:default_commit', '/%(repo_name)s/files', ['repo_name']);
146 pyroutes.register('repo_files:rendered', '/%(repo_name)s/render/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
146 pyroutes.register('repo_files:rendered', '/%(repo_name)s/render/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
147 pyroutes.register('repo_files:annotated', '/%(repo_name)s/annotate/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
147 pyroutes.register('repo_files:annotated', '/%(repo_name)s/annotate/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
148 pyroutes.register('repo_files:annotated_previous', '/%(repo_name)s/annotate-previous/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
148 pyroutes.register('repo_files:annotated_previous', '/%(repo_name)s/annotate-previous/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
149 pyroutes.register('repo_nodetree_full', '/%(repo_name)s/nodetree_full/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
149 pyroutes.register('repo_nodetree_full', '/%(repo_name)s/nodetree_full/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
150 pyroutes.register('repo_nodetree_full:default_path', '/%(repo_name)s/nodetree_full/%(commit_id)s/', ['repo_name', 'commit_id']);
150 pyroutes.register('repo_nodetree_full:default_path', '/%(repo_name)s/nodetree_full/%(commit_id)s/', ['repo_name', 'commit_id']);
151 pyroutes.register('repo_files_nodelist', '/%(repo_name)s/nodelist/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
151 pyroutes.register('repo_files_nodelist', '/%(repo_name)s/nodelist/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
152 pyroutes.register('repo_file_raw', '/%(repo_name)s/raw/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
152 pyroutes.register('repo_file_raw', '/%(repo_name)s/raw/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
153 pyroutes.register('repo_file_download', '/%(repo_name)s/download/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
153 pyroutes.register('repo_file_download', '/%(repo_name)s/download/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
154 pyroutes.register('repo_file_download:legacy', '/%(repo_name)s/rawfile/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
154 pyroutes.register('repo_file_download:legacy', '/%(repo_name)s/rawfile/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
155 pyroutes.register('repo_file_history', '/%(repo_name)s/history/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
155 pyroutes.register('repo_file_history', '/%(repo_name)s/history/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
156 pyroutes.register('repo_file_authors', '/%(repo_name)s/authors/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
156 pyroutes.register('repo_file_authors', '/%(repo_name)s/authors/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
157 pyroutes.register('repo_files_remove_file', '/%(repo_name)s/remove_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
157 pyroutes.register('repo_files_remove_file', '/%(repo_name)s/remove_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
158 pyroutes.register('repo_files_delete_file', '/%(repo_name)s/delete_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
158 pyroutes.register('repo_files_delete_file', '/%(repo_name)s/delete_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
159 pyroutes.register('repo_files_edit_file', '/%(repo_name)s/edit_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
159 pyroutes.register('repo_files_edit_file', '/%(repo_name)s/edit_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
160 pyroutes.register('repo_files_update_file', '/%(repo_name)s/update_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
160 pyroutes.register('repo_files_update_file', '/%(repo_name)s/update_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
161 pyroutes.register('repo_files_add_file', '/%(repo_name)s/add_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
161 pyroutes.register('repo_files_add_file', '/%(repo_name)s/add_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
162 pyroutes.register('repo_files_create_file', '/%(repo_name)s/create_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
162 pyroutes.register('repo_files_create_file', '/%(repo_name)s/create_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
163 pyroutes.register('repo_refs_data', '/%(repo_name)s/refs-data', ['repo_name']);
163 pyroutes.register('repo_refs_data', '/%(repo_name)s/refs-data', ['repo_name']);
164 pyroutes.register('repo_refs_changelog_data', '/%(repo_name)s/refs-data-changelog', ['repo_name']);
164 pyroutes.register('repo_refs_changelog_data', '/%(repo_name)s/refs-data-changelog', ['repo_name']);
165 pyroutes.register('repo_stats', '/%(repo_name)s/repo_stats/%(commit_id)s', ['repo_name', 'commit_id']);
165 pyroutes.register('repo_stats', '/%(repo_name)s/repo_stats/%(commit_id)s', ['repo_name', 'commit_id']);
166 pyroutes.register('repo_changelog', '/%(repo_name)s/changelog', ['repo_name']);
166 pyroutes.register('repo_changelog', '/%(repo_name)s/changelog', ['repo_name']);
167 pyroutes.register('repo_changelog_file', '/%(repo_name)s/changelog/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
167 pyroutes.register('repo_changelog_file', '/%(repo_name)s/changelog/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
168 pyroutes.register('repo_changelog_elements', '/%(repo_name)s/changelog_elements', ['repo_name']);
168 pyroutes.register('repo_changelog_elements', '/%(repo_name)s/changelog_elements', ['repo_name']);
169 pyroutes.register('repo_changelog_elements_file', '/%(repo_name)s/changelog_elements/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
169 pyroutes.register('repo_changelog_elements_file', '/%(repo_name)s/changelog_elements/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
170 pyroutes.register('repo_compare_select', '/%(repo_name)s/compare', ['repo_name']);
170 pyroutes.register('repo_compare_select', '/%(repo_name)s/compare', ['repo_name']);
171 pyroutes.register('repo_compare', '/%(repo_name)s/compare/%(source_ref_type)s@%(source_ref)s...%(target_ref_type)s@%(target_ref)s', ['repo_name', 'source_ref_type', 'source_ref', 'target_ref_type', 'target_ref']);
171 pyroutes.register('repo_compare', '/%(repo_name)s/compare/%(source_ref_type)s@%(source_ref)s...%(target_ref_type)s@%(target_ref)s', ['repo_name', 'source_ref_type', 'source_ref', 'target_ref_type', 'target_ref']);
172 pyroutes.register('tags_home', '/%(repo_name)s/tags', ['repo_name']);
172 pyroutes.register('tags_home', '/%(repo_name)s/tags', ['repo_name']);
173 pyroutes.register('branches_home', '/%(repo_name)s/branches', ['repo_name']);
173 pyroutes.register('branches_home', '/%(repo_name)s/branches', ['repo_name']);
174 pyroutes.register('bookmarks_home', '/%(repo_name)s/bookmarks', ['repo_name']);
174 pyroutes.register('bookmarks_home', '/%(repo_name)s/bookmarks', ['repo_name']);
175 pyroutes.register('repo_fork_new', '/%(repo_name)s/fork', ['repo_name']);
175 pyroutes.register('repo_fork_new', '/%(repo_name)s/fork', ['repo_name']);
176 pyroutes.register('repo_fork_create', '/%(repo_name)s/fork/create', ['repo_name']);
176 pyroutes.register('repo_fork_create', '/%(repo_name)s/fork/create', ['repo_name']);
177 pyroutes.register('repo_forks_show_all', '/%(repo_name)s/forks', ['repo_name']);
177 pyroutes.register('repo_forks_show_all', '/%(repo_name)s/forks', ['repo_name']);
178 pyroutes.register('repo_forks_data', '/%(repo_name)s/forks/data', ['repo_name']);
178 pyroutes.register('repo_forks_data', '/%(repo_name)s/forks/data', ['repo_name']);
179 pyroutes.register('pullrequest_show', '/%(repo_name)s/pull-request/%(pull_request_id)s', ['repo_name', 'pull_request_id']);
179 pyroutes.register('pullrequest_show', '/%(repo_name)s/pull-request/%(pull_request_id)s', ['repo_name', 'pull_request_id']);
180 pyroutes.register('pullrequest_show_all', '/%(repo_name)s/pull-request', ['repo_name']);
180 pyroutes.register('pullrequest_show_all', '/%(repo_name)s/pull-request', ['repo_name']);
181 pyroutes.register('pullrequest_show_all_data', '/%(repo_name)s/pull-request-data', ['repo_name']);
181 pyroutes.register('pullrequest_show_all_data', '/%(repo_name)s/pull-request-data', ['repo_name']);
182 pyroutes.register('pullrequest_repo_refs', '/%(repo_name)s/pull-request/refs/%(target_repo_name)s', ['repo_name', 'target_repo_name']);
182 pyroutes.register('pullrequest_repo_refs', '/%(repo_name)s/pull-request/refs/%(target_repo_name)s', ['repo_name', 'target_repo_name']);
183 pyroutes.register('pullrequest_repo_destinations', '/%(repo_name)s/pull-request/repo-destinations', ['repo_name']);
183 pyroutes.register('pullrequest_repo_destinations', '/%(repo_name)s/pull-request/repo-destinations', ['repo_name']);
184 pyroutes.register('pullrequest_new', '/%(repo_name)s/pull-request/new', ['repo_name']);
184 pyroutes.register('pullrequest_new', '/%(repo_name)s/pull-request/new', ['repo_name']);
185 pyroutes.register('pullrequest_create', '/%(repo_name)s/pull-request/create', ['repo_name']);
185 pyroutes.register('pullrequest_create', '/%(repo_name)s/pull-request/create', ['repo_name']);
186 pyroutes.register('pullrequest_update', '/%(repo_name)s/pull-request/%(pull_request_id)s/update', ['repo_name', 'pull_request_id']);
186 pyroutes.register('pullrequest_update', '/%(repo_name)s/pull-request/%(pull_request_id)s/update', ['repo_name', 'pull_request_id']);
187 pyroutes.register('pullrequest_merge', '/%(repo_name)s/pull-request/%(pull_request_id)s/merge', ['repo_name', 'pull_request_id']);
187 pyroutes.register('pullrequest_merge', '/%(repo_name)s/pull-request/%(pull_request_id)s/merge', ['repo_name', 'pull_request_id']);
188 pyroutes.register('pullrequest_delete', '/%(repo_name)s/pull-request/%(pull_request_id)s/delete', ['repo_name', 'pull_request_id']);
188 pyroutes.register('pullrequest_delete', '/%(repo_name)s/pull-request/%(pull_request_id)s/delete', ['repo_name', 'pull_request_id']);
189 pyroutes.register('pullrequest_comment_create', '/%(repo_name)s/pull-request/%(pull_request_id)s/comment', ['repo_name', 'pull_request_id']);
189 pyroutes.register('pullrequest_comment_create', '/%(repo_name)s/pull-request/%(pull_request_id)s/comment', ['repo_name', 'pull_request_id']);
190 pyroutes.register('pullrequest_comment_delete', '/%(repo_name)s/pull-request/%(pull_request_id)s/comment/%(comment_id)s/delete', ['repo_name', 'pull_request_id', 'comment_id']);
190 pyroutes.register('pullrequest_comment_delete', '/%(repo_name)s/pull-request/%(pull_request_id)s/comment/%(comment_id)s/delete', ['repo_name', 'pull_request_id', 'comment_id']);
191 pyroutes.register('edit_repo', '/%(repo_name)s/settings', ['repo_name']);
191 pyroutes.register('edit_repo', '/%(repo_name)s/settings', ['repo_name']);
192 pyroutes.register('edit_repo_advanced', '/%(repo_name)s/settings/advanced', ['repo_name']);
192 pyroutes.register('edit_repo_advanced', '/%(repo_name)s/settings/advanced', ['repo_name']);
193 pyroutes.register('edit_repo_advanced_delete', '/%(repo_name)s/settings/advanced/delete', ['repo_name']);
193 pyroutes.register('edit_repo_advanced_delete', '/%(repo_name)s/settings/advanced/delete', ['repo_name']);
194 pyroutes.register('edit_repo_advanced_locking', '/%(repo_name)s/settings/advanced/locking', ['repo_name']);
194 pyroutes.register('edit_repo_advanced_locking', '/%(repo_name)s/settings/advanced/locking', ['repo_name']);
195 pyroutes.register('edit_repo_advanced_journal', '/%(repo_name)s/settings/advanced/journal', ['repo_name']);
195 pyroutes.register('edit_repo_advanced_journal', '/%(repo_name)s/settings/advanced/journal', ['repo_name']);
196 pyroutes.register('edit_repo_advanced_fork', '/%(repo_name)s/settings/advanced/fork', ['repo_name']);
196 pyroutes.register('edit_repo_advanced_fork', '/%(repo_name)s/settings/advanced/fork', ['repo_name']);
197 pyroutes.register('edit_repo_caches', '/%(repo_name)s/settings/caches', ['repo_name']);
197 pyroutes.register('edit_repo_caches', '/%(repo_name)s/settings/caches', ['repo_name']);
198 pyroutes.register('edit_repo_perms', '/%(repo_name)s/settings/permissions', ['repo_name']);
198 pyroutes.register('edit_repo_perms', '/%(repo_name)s/settings/permissions', ['repo_name']);
199 pyroutes.register('edit_repo_maintenance', '/%(repo_name)s/settings/maintenance', ['repo_name']);
199 pyroutes.register('edit_repo_maintenance', '/%(repo_name)s/settings/maintenance', ['repo_name']);
200 pyroutes.register('edit_repo_maintenance_execute', '/%(repo_name)s/settings/maintenance/execute', ['repo_name']);
200 pyroutes.register('edit_repo_maintenance_execute', '/%(repo_name)s/settings/maintenance/execute', ['repo_name']);
201 pyroutes.register('edit_repo_fields', '/%(repo_name)s/settings/fields', ['repo_name']);
201 pyroutes.register('edit_repo_fields', '/%(repo_name)s/settings/fields', ['repo_name']);
202 pyroutes.register('edit_repo_fields_create', '/%(repo_name)s/settings/fields/create', ['repo_name']);
202 pyroutes.register('edit_repo_fields_create', '/%(repo_name)s/settings/fields/create', ['repo_name']);
203 pyroutes.register('edit_repo_fields_delete', '/%(repo_name)s/settings/fields/%(field_id)s/delete', ['repo_name', 'field_id']);
203 pyroutes.register('edit_repo_fields_delete', '/%(repo_name)s/settings/fields/%(field_id)s/delete', ['repo_name', 'field_id']);
204 pyroutes.register('repo_edit_toggle_locking', '/%(repo_name)s/settings/toggle_locking', ['repo_name']);
204 pyroutes.register('repo_edit_toggle_locking', '/%(repo_name)s/settings/toggle_locking', ['repo_name']);
205 pyroutes.register('edit_repo_remote', '/%(repo_name)s/settings/remote', ['repo_name']);
205 pyroutes.register('edit_repo_remote', '/%(repo_name)s/settings/remote', ['repo_name']);
206 pyroutes.register('edit_repo_remote_pull', '/%(repo_name)s/settings/remote/pull', ['repo_name']);
206 pyroutes.register('edit_repo_remote_pull', '/%(repo_name)s/settings/remote/pull', ['repo_name']);
207 pyroutes.register('edit_repo_statistics', '/%(repo_name)s/settings/statistics', ['repo_name']);
207 pyroutes.register('edit_repo_statistics', '/%(repo_name)s/settings/statistics', ['repo_name']);
208 pyroutes.register('edit_repo_statistics_reset', '/%(repo_name)s/settings/statistics/update', ['repo_name']);
208 pyroutes.register('edit_repo_statistics_reset', '/%(repo_name)s/settings/statistics/update', ['repo_name']);
209 pyroutes.register('edit_repo_issuetracker', '/%(repo_name)s/settings/issue_trackers', ['repo_name']);
209 pyroutes.register('edit_repo_issuetracker', '/%(repo_name)s/settings/issue_trackers', ['repo_name']);
210 pyroutes.register('edit_repo_issuetracker_test', '/%(repo_name)s/settings/issue_trackers/test', ['repo_name']);
210 pyroutes.register('edit_repo_issuetracker_test', '/%(repo_name)s/settings/issue_trackers/test', ['repo_name']);
211 pyroutes.register('edit_repo_issuetracker_delete', '/%(repo_name)s/settings/issue_trackers/delete', ['repo_name']);
211 pyroutes.register('edit_repo_issuetracker_delete', '/%(repo_name)s/settings/issue_trackers/delete', ['repo_name']);
212 pyroutes.register('edit_repo_issuetracker_update', '/%(repo_name)s/settings/issue_trackers/update', ['repo_name']);
212 pyroutes.register('edit_repo_issuetracker_update', '/%(repo_name)s/settings/issue_trackers/update', ['repo_name']);
213 pyroutes.register('edit_repo_vcs', '/%(repo_name)s/settings/vcs', ['repo_name']);
213 pyroutes.register('edit_repo_vcs', '/%(repo_name)s/settings/vcs', ['repo_name']);
214 pyroutes.register('edit_repo_vcs_update', '/%(repo_name)s/settings/vcs/update', ['repo_name']);
214 pyroutes.register('edit_repo_vcs_update', '/%(repo_name)s/settings/vcs/update', ['repo_name']);
215 pyroutes.register('edit_repo_vcs_svn_pattern_delete', '/%(repo_name)s/settings/vcs/svn_pattern/delete', ['repo_name']);
215 pyroutes.register('edit_repo_vcs_svn_pattern_delete', '/%(repo_name)s/settings/vcs/svn_pattern/delete', ['repo_name']);
216 pyroutes.register('repo_reviewers', '/%(repo_name)s/settings/review/rules', ['repo_name']);
216 pyroutes.register('repo_reviewers', '/%(repo_name)s/settings/review/rules', ['repo_name']);
217 pyroutes.register('repo_default_reviewers_data', '/%(repo_name)s/settings/review/default-reviewers', ['repo_name']);
217 pyroutes.register('repo_default_reviewers_data', '/%(repo_name)s/settings/review/default-reviewers', ['repo_name']);
218 pyroutes.register('edit_repo_strip', '/%(repo_name)s/settings/strip', ['repo_name']);
218 pyroutes.register('edit_repo_strip', '/%(repo_name)s/settings/strip', ['repo_name']);
219 pyroutes.register('strip_check', '/%(repo_name)s/settings/strip_check', ['repo_name']);
219 pyroutes.register('strip_check', '/%(repo_name)s/settings/strip_check', ['repo_name']);
220 pyroutes.register('strip_execute', '/%(repo_name)s/settings/strip_execute', ['repo_name']);
220 pyroutes.register('strip_execute', '/%(repo_name)s/settings/strip_execute', ['repo_name']);
221 pyroutes.register('edit_repo_audit_logs', '/%(repo_name)s/settings/audit_logs', ['repo_name']);
221 pyroutes.register('rss_feed_home', '/%(repo_name)s/feed/rss', ['repo_name']);
222 pyroutes.register('rss_feed_home', '/%(repo_name)s/feed/rss', ['repo_name']);
222 pyroutes.register('atom_feed_home', '/%(repo_name)s/feed/atom', ['repo_name']);
223 pyroutes.register('atom_feed_home', '/%(repo_name)s/feed/atom', ['repo_name']);
223 pyroutes.register('repo_summary', '/%(repo_name)s', ['repo_name']);
224 pyroutes.register('repo_summary', '/%(repo_name)s', ['repo_name']);
224 pyroutes.register('repo_summary_slash', '/%(repo_name)s/', ['repo_name']);
225 pyroutes.register('repo_summary_slash', '/%(repo_name)s/', ['repo_name']);
225 pyroutes.register('repo_group_home', '/%(repo_group_name)s', ['repo_group_name']);
226 pyroutes.register('repo_group_home', '/%(repo_group_name)s', ['repo_group_name']);
226 pyroutes.register('repo_group_home_slash', '/%(repo_group_name)s/', ['repo_group_name']);
227 pyroutes.register('repo_group_home_slash', '/%(repo_group_name)s/', ['repo_group_name']);
227 pyroutes.register('user_group_members_data', '/_admin/user_groups/%(user_group_id)s/members', ['user_group_id']);
228 pyroutes.register('user_group_members_data', '/_admin/user_groups/%(user_group_id)s/members', ['user_group_id']);
228 pyroutes.register('edit_user_group_perms_summary', '/_admin/user_groups/%(user_group_id)s/edit/permissions_summary', ['user_group_id']);
229 pyroutes.register('edit_user_group_perms_summary', '/_admin/user_groups/%(user_group_id)s/edit/permissions_summary', ['user_group_id']);
229 pyroutes.register('edit_user_group_perms_summary_json', '/_admin/user_groups/%(user_group_id)s/edit/permissions_summary/json', ['user_group_id']);
230 pyroutes.register('edit_user_group_perms_summary_json', '/_admin/user_groups/%(user_group_id)s/edit/permissions_summary/json', ['user_group_id']);
230 pyroutes.register('edit_user_group', '/_admin/user_groups/%(user_group_id)s/edit', ['user_group_id']);
231 pyroutes.register('edit_user_group', '/_admin/user_groups/%(user_group_id)s/edit', ['user_group_id']);
231 pyroutes.register('user_groups_update', '/_admin/user_groups/%(user_group_id)s/update', ['user_group_id']);
232 pyroutes.register('user_groups_update', '/_admin/user_groups/%(user_group_id)s/update', ['user_group_id']);
232 pyroutes.register('edit_user_group_global_perms', '/_admin/user_groups/%(user_group_id)s/edit/global_permissions', ['user_group_id']);
233 pyroutes.register('edit_user_group_global_perms', '/_admin/user_groups/%(user_group_id)s/edit/global_permissions', ['user_group_id']);
233 pyroutes.register('edit_user_group_global_perms_update', '/_admin/user_groups/%(user_group_id)s/edit/global_permissions/update', ['user_group_id']);
234 pyroutes.register('edit_user_group_global_perms_update', '/_admin/user_groups/%(user_group_id)s/edit/global_permissions/update', ['user_group_id']);
234 pyroutes.register('edit_user_group_perms', '/_admin/user_groups/%(user_group_id)s/edit/permissions', ['user_group_id']);
235 pyroutes.register('edit_user_group_perms', '/_admin/user_groups/%(user_group_id)s/edit/permissions', ['user_group_id']);
235 pyroutes.register('edit_user_group_perms_update', '/_admin/user_groups/%(user_group_id)s/edit/permissions/update', ['user_group_id']);
236 pyroutes.register('edit_user_group_perms_update', '/_admin/user_groups/%(user_group_id)s/edit/permissions/update', ['user_group_id']);
236 pyroutes.register('edit_user_group_advanced', '/_admin/user_groups/%(user_group_id)s/edit/advanced', ['user_group_id']);
237 pyroutes.register('edit_user_group_advanced', '/_admin/user_groups/%(user_group_id)s/edit/advanced', ['user_group_id']);
237 pyroutes.register('edit_user_group_advanced_sync', '/_admin/user_groups/%(user_group_id)s/edit/advanced/sync', ['user_group_id']);
238 pyroutes.register('edit_user_group_advanced_sync', '/_admin/user_groups/%(user_group_id)s/edit/advanced/sync', ['user_group_id']);
238 pyroutes.register('user_groups_delete', '/_admin/user_groups/%(user_group_id)s/delete', ['user_group_id']);
239 pyroutes.register('user_groups_delete', '/_admin/user_groups/%(user_group_id)s/delete', ['user_group_id']);
239 pyroutes.register('search', '/_admin/search', []);
240 pyroutes.register('search', '/_admin/search', []);
240 pyroutes.register('search_repo', '/%(repo_name)s/search', ['repo_name']);
241 pyroutes.register('search_repo', '/%(repo_name)s/search', ['repo_name']);
241 pyroutes.register('user_profile', '/_profiles/%(username)s', ['username']);
242 pyroutes.register('user_profile', '/_profiles/%(username)s', ['username']);
242 pyroutes.register('my_account_profile', '/_admin/my_account/profile', []);
243 pyroutes.register('my_account_profile', '/_admin/my_account/profile', []);
243 pyroutes.register('my_account_edit', '/_admin/my_account/edit', []);
244 pyroutes.register('my_account_edit', '/_admin/my_account/edit', []);
244 pyroutes.register('my_account_update', '/_admin/my_account/update', []);
245 pyroutes.register('my_account_update', '/_admin/my_account/update', []);
245 pyroutes.register('my_account_password', '/_admin/my_account/password', []);
246 pyroutes.register('my_account_password', '/_admin/my_account/password', []);
246 pyroutes.register('my_account_password_update', '/_admin/my_account/password/update', []);
247 pyroutes.register('my_account_password_update', '/_admin/my_account/password/update', []);
247 pyroutes.register('my_account_auth_tokens', '/_admin/my_account/auth_tokens', []);
248 pyroutes.register('my_account_auth_tokens', '/_admin/my_account/auth_tokens', []);
248 pyroutes.register('my_account_auth_tokens_add', '/_admin/my_account/auth_tokens/new', []);
249 pyroutes.register('my_account_auth_tokens_add', '/_admin/my_account/auth_tokens/new', []);
249 pyroutes.register('my_account_auth_tokens_delete', '/_admin/my_account/auth_tokens/delete', []);
250 pyroutes.register('my_account_auth_tokens_delete', '/_admin/my_account/auth_tokens/delete', []);
250 pyroutes.register('my_account_ssh_keys', '/_admin/my_account/ssh_keys', []);
251 pyroutes.register('my_account_ssh_keys', '/_admin/my_account/ssh_keys', []);
251 pyroutes.register('my_account_ssh_keys_generate', '/_admin/my_account/ssh_keys/generate', []);
252 pyroutes.register('my_account_ssh_keys_generate', '/_admin/my_account/ssh_keys/generate', []);
252 pyroutes.register('my_account_ssh_keys_add', '/_admin/my_account/ssh_keys/new', []);
253 pyroutes.register('my_account_ssh_keys_add', '/_admin/my_account/ssh_keys/new', []);
253 pyroutes.register('my_account_ssh_keys_delete', '/_admin/my_account/ssh_keys/delete', []);
254 pyroutes.register('my_account_ssh_keys_delete', '/_admin/my_account/ssh_keys/delete', []);
254 pyroutes.register('my_account_emails', '/_admin/my_account/emails', []);
255 pyroutes.register('my_account_emails', '/_admin/my_account/emails', []);
255 pyroutes.register('my_account_emails_add', '/_admin/my_account/emails/new', []);
256 pyroutes.register('my_account_emails_add', '/_admin/my_account/emails/new', []);
256 pyroutes.register('my_account_emails_delete', '/_admin/my_account/emails/delete', []);
257 pyroutes.register('my_account_emails_delete', '/_admin/my_account/emails/delete', []);
257 pyroutes.register('my_account_repos', '/_admin/my_account/repos', []);
258 pyroutes.register('my_account_repos', '/_admin/my_account/repos', []);
258 pyroutes.register('my_account_watched', '/_admin/my_account/watched', []);
259 pyroutes.register('my_account_watched', '/_admin/my_account/watched', []);
259 pyroutes.register('my_account_perms', '/_admin/my_account/perms', []);
260 pyroutes.register('my_account_perms', '/_admin/my_account/perms', []);
260 pyroutes.register('my_account_notifications', '/_admin/my_account/notifications', []);
261 pyroutes.register('my_account_notifications', '/_admin/my_account/notifications', []);
261 pyroutes.register('my_account_notifications_toggle_visibility', '/_admin/my_account/toggle_visibility', []);
262 pyroutes.register('my_account_notifications_toggle_visibility', '/_admin/my_account/toggle_visibility', []);
262 pyroutes.register('my_account_pullrequests', '/_admin/my_account/pull_requests', []);
263 pyroutes.register('my_account_pullrequests', '/_admin/my_account/pull_requests', []);
263 pyroutes.register('my_account_pullrequests_data', '/_admin/my_account/pull_requests/data', []);
264 pyroutes.register('my_account_pullrequests_data', '/_admin/my_account/pull_requests/data', []);
264 pyroutes.register('notifications_show_all', '/_admin/notifications', []);
265 pyroutes.register('notifications_show_all', '/_admin/notifications', []);
265 pyroutes.register('notifications_mark_all_read', '/_admin/notifications/mark_all_read', []);
266 pyroutes.register('notifications_mark_all_read', '/_admin/notifications/mark_all_read', []);
266 pyroutes.register('notifications_show', '/_admin/notifications/%(notification_id)s', ['notification_id']);
267 pyroutes.register('notifications_show', '/_admin/notifications/%(notification_id)s', ['notification_id']);
267 pyroutes.register('notifications_update', '/_admin/notifications/%(notification_id)s/update', ['notification_id']);
268 pyroutes.register('notifications_update', '/_admin/notifications/%(notification_id)s/update', ['notification_id']);
268 pyroutes.register('notifications_delete', '/_admin/notifications/%(notification_id)s/delete', ['notification_id']);
269 pyroutes.register('notifications_delete', '/_admin/notifications/%(notification_id)s/delete', ['notification_id']);
269 pyroutes.register('my_account_notifications_test_channelstream', '/_admin/my_account/test_channelstream', []);
270 pyroutes.register('my_account_notifications_test_channelstream', '/_admin/my_account/test_channelstream', []);
270 pyroutes.register('gists_show', '/_admin/gists', []);
271 pyroutes.register('gists_show', '/_admin/gists', []);
271 pyroutes.register('gists_new', '/_admin/gists/new', []);
272 pyroutes.register('gists_new', '/_admin/gists/new', []);
272 pyroutes.register('gists_create', '/_admin/gists/create', []);
273 pyroutes.register('gists_create', '/_admin/gists/create', []);
273 pyroutes.register('gist_show', '/_admin/gists/%(gist_id)s', ['gist_id']);
274 pyroutes.register('gist_show', '/_admin/gists/%(gist_id)s', ['gist_id']);
274 pyroutes.register('gist_delete', '/_admin/gists/%(gist_id)s/delete', ['gist_id']);
275 pyroutes.register('gist_delete', '/_admin/gists/%(gist_id)s/delete', ['gist_id']);
275 pyroutes.register('gist_edit', '/_admin/gists/%(gist_id)s/edit', ['gist_id']);
276 pyroutes.register('gist_edit', '/_admin/gists/%(gist_id)s/edit', ['gist_id']);
276 pyroutes.register('gist_edit_check_revision', '/_admin/gists/%(gist_id)s/edit/check_revision', ['gist_id']);
277 pyroutes.register('gist_edit_check_revision', '/_admin/gists/%(gist_id)s/edit/check_revision', ['gist_id']);
277 pyroutes.register('gist_update', '/_admin/gists/%(gist_id)s/update', ['gist_id']);
278 pyroutes.register('gist_update', '/_admin/gists/%(gist_id)s/update', ['gist_id']);
278 pyroutes.register('gist_show_rev', '/_admin/gists/%(gist_id)s/%(revision)s', ['gist_id', 'revision']);
279 pyroutes.register('gist_show_rev', '/_admin/gists/%(gist_id)s/%(revision)s', ['gist_id', 'revision']);
279 pyroutes.register('gist_show_formatted', '/_admin/gists/%(gist_id)s/%(revision)s/%(format)s', ['gist_id', 'revision', 'format']);
280 pyroutes.register('gist_show_formatted', '/_admin/gists/%(gist_id)s/%(revision)s/%(format)s', ['gist_id', 'revision', 'format']);
280 pyroutes.register('gist_show_formatted_path', '/_admin/gists/%(gist_id)s/%(revision)s/%(format)s/%(f_path)s', ['gist_id', 'revision', 'format', 'f_path']);
281 pyroutes.register('gist_show_formatted_path', '/_admin/gists/%(gist_id)s/%(revision)s/%(format)s/%(f_path)s', ['gist_id', 'revision', 'format', 'f_path']);
281 pyroutes.register('debug_style_home', '/_admin/debug_style', []);
282 pyroutes.register('debug_style_home', '/_admin/debug_style', []);
282 pyroutes.register('debug_style_template', '/_admin/debug_style/t/%(t_path)s', ['t_path']);
283 pyroutes.register('debug_style_template', '/_admin/debug_style/t/%(t_path)s', ['t_path']);
283 pyroutes.register('apiv2', '/_admin/api', []);
284 pyroutes.register('apiv2', '/_admin/api', []);
284 }
285 }
General Comments 0
You need to be logged in to leave comments. Login now