##// END OF EJS Templates
fixed removed route during pep8ify
marcink -
r1214:a2dba935 beta
parent child Browse files
Show More
@@ -1,283 +1,285 b''
1 """
1 """
2 Routes configuration
2 Routes configuration
3
3
4 The more specific and detailed routes should be defined first so they
4 The more specific and detailed routes should be defined first so they
5 may take precedent over the more generic routes. For more information
5 may take precedent over the more generic routes. For more information
6 refer to the routes manual at http://routes.groovie.org/docs/
6 refer to the routes manual at http://routes.groovie.org/docs/
7 """
7 """
8 from __future__ import with_statement
8 from __future__ import with_statement
9 from routes import Mapper
9 from routes import Mapper
10 from rhodecode.lib.utils import check_repo_fast as cr
10 from rhodecode.lib.utils import check_repo_fast as cr
11
11
12
12
13 def make_map(config):
13 def make_map(config):
14 """Create, configure and return the routes Mapper"""
14 """Create, configure and return the routes Mapper"""
15 rmap = Mapper(directory=config['pylons.paths']['controllers'],
15 rmap = Mapper(directory=config['pylons.paths']['controllers'],
16 always_scan=config['debug'])
16 always_scan=config['debug'])
17 rmap.minimization = False
17 rmap.minimization = False
18 rmap.explicit = False
18 rmap.explicit = False
19
19
20 def check_repo(environ, match_dict):
20 def check_repo(environ, match_dict):
21 """
21 """
22 check for valid repository for proper 404 handling
22 check for valid repository for proper 404 handling
23 :param environ:
23 :param environ:
24 :param match_dict:
24 :param match_dict:
25 """
25 """
26 repo_name = match_dict.get('repo_name')
26 repo_name = match_dict.get('repo_name')
27 return not cr(repo_name, config['base_path'])
27 return not cr(repo_name, config['base_path'])
28
28
29 # The ErrorController route (handles 404/500 error pages); it should
29 # The ErrorController route (handles 404/500 error pages); it should
30 # likely stay at the top, ensuring it can always be resolved
30 # likely stay at the top, ensuring it can always be resolved
31 rmap.connect('/error/{action}', controller='error')
31 rmap.connect('/error/{action}', controller='error')
32 rmap.connect('/error/{action}/{id}', controller='error')
32 rmap.connect('/error/{action}/{id}', controller='error')
33
33
34 #==========================================================================
34 #==========================================================================
35 # CUSTOM ROUTES HERE
35 # CUSTOM ROUTES HERE
36 #==========================================================================
36 #==========================================================================
37
37
38 #MAIN PAGE
38 #MAIN PAGE
39 rmap.connect('home', '/', controller='home', action='index')
39 rmap.connect('home', '/', controller='home', action='index')
40 rmap.connect('repo_switcher', '/repos', controller='home',
41 action='repo_switcher')
40 rmap.connect('bugtracker',
42 rmap.connect('bugtracker',
41 "http://bitbucket.org/marcinkuzminski/rhodecode/issues",
43 "http://bitbucket.org/marcinkuzminski/rhodecode/issues",
42 _static=True)
44 _static=True)
43 rmap.connect('rhodecode_official', "http://rhodecode.org", _static=True)
45 rmap.connect('rhodecode_official', "http://rhodecode.org", _static=True)
44
46
45 #ADMIN REPOSITORY REST ROUTES
47 #ADMIN REPOSITORY REST ROUTES
46 with rmap.submapper(path_prefix='/_admin', controller='admin/repos') as m:
48 with rmap.submapper(path_prefix='/_admin', controller='admin/repos') as m:
47 m.connect("repos", "/repos",
49 m.connect("repos", "/repos",
48 action="create", conditions=dict(method=["POST"]))
50 action="create", conditions=dict(method=["POST"]))
49 m.connect("repos", "/repos",
51 m.connect("repos", "/repos",
50 action="index", conditions=dict(method=["GET"]))
52 action="index", conditions=dict(method=["GET"]))
51 m.connect("formatted_repos", "/repos.{format}",
53 m.connect("formatted_repos", "/repos.{format}",
52 action="index",
54 action="index",
53 conditions=dict(method=["GET"]))
55 conditions=dict(method=["GET"]))
54 m.connect("new_repo", "/repos/new",
56 m.connect("new_repo", "/repos/new",
55 action="new", conditions=dict(method=["GET"]))
57 action="new", conditions=dict(method=["GET"]))
56 m.connect("formatted_new_repo", "/repos/new.{format}",
58 m.connect("formatted_new_repo", "/repos/new.{format}",
57 action="new", conditions=dict(method=["GET"]))
59 action="new", conditions=dict(method=["GET"]))
58 m.connect("/repos/{repo_name:.*}",
60 m.connect("/repos/{repo_name:.*}",
59 action="update", conditions=dict(method=["PUT"],
61 action="update", conditions=dict(method=["PUT"],
60 function=check_repo))
62 function=check_repo))
61 m.connect("/repos/{repo_name:.*}",
63 m.connect("/repos/{repo_name:.*}",
62 action="delete", conditions=dict(method=["DELETE"],
64 action="delete", conditions=dict(method=["DELETE"],
63 function=check_repo))
65 function=check_repo))
64 m.connect("edit_repo", "/repos/{repo_name:.*}/edit",
66 m.connect("edit_repo", "/repos/{repo_name:.*}/edit",
65 action="edit", conditions=dict(method=["GET"],
67 action="edit", conditions=dict(method=["GET"],
66 function=check_repo))
68 function=check_repo))
67 m.connect("formatted_edit_repo", "/repos/{repo_name:.*}.{format}/edit",
69 m.connect("formatted_edit_repo", "/repos/{repo_name:.*}.{format}/edit",
68 action="edit", conditions=dict(method=["GET"],
70 action="edit", conditions=dict(method=["GET"],
69 function=check_repo))
71 function=check_repo))
70 m.connect("repo", "/repos/{repo_name:.*}",
72 m.connect("repo", "/repos/{repo_name:.*}",
71 action="show", conditions=dict(method=["GET"],
73 action="show", conditions=dict(method=["GET"],
72 function=check_repo))
74 function=check_repo))
73 m.connect("formatted_repo", "/repos/{repo_name:.*}.{format}",
75 m.connect("formatted_repo", "/repos/{repo_name:.*}.{format}",
74 action="show", conditions=dict(method=["GET"],
76 action="show", conditions=dict(method=["GET"],
75 function=check_repo))
77 function=check_repo))
76 #ajax delete repo perm user
78 #ajax delete repo perm user
77 m.connect('delete_repo_user', "/repos_delete_user/{repo_name:.*}",
79 m.connect('delete_repo_user', "/repos_delete_user/{repo_name:.*}",
78 action="delete_perm_user", conditions=dict(method=["DELETE"],
80 action="delete_perm_user", conditions=dict(method=["DELETE"],
79 function=check_repo))
81 function=check_repo))
80 #ajax delete repo perm users_group
82 #ajax delete repo perm users_group
81 m.connect('delete_repo_users_group',
83 m.connect('delete_repo_users_group',
82 "/repos_delete_users_group/{repo_name:.*}",
84 "/repos_delete_users_group/{repo_name:.*}",
83 action="delete_perm_users_group",
85 action="delete_perm_users_group",
84 conditions=dict(method=["DELETE"], function=check_repo))
86 conditions=dict(method=["DELETE"], function=check_repo))
85
87
86 #settings actions
88 #settings actions
87 m.connect('repo_stats', "/repos_stats/{repo_name:.*}",
89 m.connect('repo_stats', "/repos_stats/{repo_name:.*}",
88 action="repo_stats", conditions=dict(method=["DELETE"],
90 action="repo_stats", conditions=dict(method=["DELETE"],
89 function=check_repo))
91 function=check_repo))
90 m.connect('repo_cache', "/repos_cache/{repo_name:.*}",
92 m.connect('repo_cache', "/repos_cache/{repo_name:.*}",
91 action="repo_cache", conditions=dict(method=["DELETE"],
93 action="repo_cache", conditions=dict(method=["DELETE"],
92 function=check_repo))
94 function=check_repo))
93 m.connect('repo_public_journal',
95 m.connect('repo_public_journal',
94 "/repos_public_journal/{repo_name:.*}",
96 "/repos_public_journal/{repo_name:.*}",
95 action="repo_public_journal", conditions=dict(method=["PUT"],
97 action="repo_public_journal", conditions=dict(method=["PUT"],
96 function=check_repo))
98 function=check_repo))
97 m.connect('repo_pull', "/repo_pull/{repo_name:.*}",
99 m.connect('repo_pull', "/repo_pull/{repo_name:.*}",
98 action="repo_pull", conditions=dict(method=["PUT"],
100 action="repo_pull", conditions=dict(method=["PUT"],
99 function=check_repo))
101 function=check_repo))
100
102
101 #ADMIN REPOS GROUP REST ROUTES
103 #ADMIN REPOS GROUP REST ROUTES
102 rmap.resource('repos_group', 'repos_groups',
104 rmap.resource('repos_group', 'repos_groups',
103 controller='admin/repos_groups', path_prefix='/_admin')
105 controller='admin/repos_groups', path_prefix='/_admin')
104
106
105 #ADMIN USER REST ROUTES
107 #ADMIN USER REST ROUTES
106 rmap.resource('user', 'users', controller='admin/users',
108 rmap.resource('user', 'users', controller='admin/users',
107 path_prefix='/_admin')
109 path_prefix='/_admin')
108
110
109 #ADMIN USERS REST ROUTES
111 #ADMIN USERS REST ROUTES
110 rmap.resource('users_group', 'users_groups',
112 rmap.resource('users_group', 'users_groups',
111 controller='admin/users_groups', path_prefix='/_admin')
113 controller='admin/users_groups', path_prefix='/_admin')
112
114
113 #ADMIN GROUP REST ROUTES
115 #ADMIN GROUP REST ROUTES
114 rmap.resource('group', 'groups', controller='admin/groups',
116 rmap.resource('group', 'groups', controller='admin/groups',
115 path_prefix='/_admin')
117 path_prefix='/_admin')
116
118
117 #ADMIN PERMISSIONS REST ROUTES
119 #ADMIN PERMISSIONS REST ROUTES
118 rmap.resource('permission', 'permissions',
120 rmap.resource('permission', 'permissions',
119 controller='admin/permissions', path_prefix='/_admin')
121 controller='admin/permissions', path_prefix='/_admin')
120
122
121 ##ADMIN LDAP SETTINGS
123 ##ADMIN LDAP SETTINGS
122 rmap.connect('ldap_settings', '/_admin/ldap',
124 rmap.connect('ldap_settings', '/_admin/ldap',
123 controller='admin/ldap_settings', action='ldap_settings',
125 controller='admin/ldap_settings', action='ldap_settings',
124 conditions=dict(method=["POST"]))
126 conditions=dict(method=["POST"]))
125 rmap.connect('ldap_home', '/_admin/ldap',
127 rmap.connect('ldap_home', '/_admin/ldap',
126 controller='admin/ldap_settings')
128 controller='admin/ldap_settings')
127
129
128 #ADMIN SETTINGS REST ROUTES
130 #ADMIN SETTINGS REST ROUTES
129 with rmap.submapper(path_prefix='/_admin',
131 with rmap.submapper(path_prefix='/_admin',
130 controller='admin/settings') as m:
132 controller='admin/settings') as m:
131 m.connect("admin_settings", "/settings",
133 m.connect("admin_settings", "/settings",
132 action="create", conditions=dict(method=["POST"]))
134 action="create", conditions=dict(method=["POST"]))
133 m.connect("admin_settings", "/settings",
135 m.connect("admin_settings", "/settings",
134 action="index", conditions=dict(method=["GET"]))
136 action="index", conditions=dict(method=["GET"]))
135 m.connect("formatted_admin_settings", "/settings.{format}",
137 m.connect("formatted_admin_settings", "/settings.{format}",
136 action="index", conditions=dict(method=["GET"]))
138 action="index", conditions=dict(method=["GET"]))
137 m.connect("admin_new_setting", "/settings/new",
139 m.connect("admin_new_setting", "/settings/new",
138 action="new", conditions=dict(method=["GET"]))
140 action="new", conditions=dict(method=["GET"]))
139 m.connect("formatted_admin_new_setting", "/settings/new.{format}",
141 m.connect("formatted_admin_new_setting", "/settings/new.{format}",
140 action="new", conditions=dict(method=["GET"]))
142 action="new", conditions=dict(method=["GET"]))
141 m.connect("/settings/{setting_id}",
143 m.connect("/settings/{setting_id}",
142 action="update", conditions=dict(method=["PUT"]))
144 action="update", conditions=dict(method=["PUT"]))
143 m.connect("/settings/{setting_id}",
145 m.connect("/settings/{setting_id}",
144 action="delete", conditions=dict(method=["DELETE"]))
146 action="delete", conditions=dict(method=["DELETE"]))
145 m.connect("admin_edit_setting", "/settings/{setting_id}/edit",
147 m.connect("admin_edit_setting", "/settings/{setting_id}/edit",
146 action="edit", conditions=dict(method=["GET"]))
148 action="edit", conditions=dict(method=["GET"]))
147 m.connect("formatted_admin_edit_setting",
149 m.connect("formatted_admin_edit_setting",
148 "/settings/{setting_id}.{format}/edit",
150 "/settings/{setting_id}.{format}/edit",
149 action="edit", conditions=dict(method=["GET"]))
151 action="edit", conditions=dict(method=["GET"]))
150 m.connect("admin_setting", "/settings/{setting_id}",
152 m.connect("admin_setting", "/settings/{setting_id}",
151 action="show", conditions=dict(method=["GET"]))
153 action="show", conditions=dict(method=["GET"]))
152 m.connect("formatted_admin_setting", "/settings/{setting_id}.{format}",
154 m.connect("formatted_admin_setting", "/settings/{setting_id}.{format}",
153 action="show", conditions=dict(method=["GET"]))
155 action="show", conditions=dict(method=["GET"]))
154 m.connect("admin_settings_my_account", "/my_account",
156 m.connect("admin_settings_my_account", "/my_account",
155 action="my_account", conditions=dict(method=["GET"]))
157 action="my_account", conditions=dict(method=["GET"]))
156 m.connect("admin_settings_my_account_update", "/my_account_update",
158 m.connect("admin_settings_my_account_update", "/my_account_update",
157 action="my_account_update", conditions=dict(method=["PUT"]))
159 action="my_account_update", conditions=dict(method=["PUT"]))
158 m.connect("admin_settings_create_repository", "/create_repository",
160 m.connect("admin_settings_create_repository", "/create_repository",
159 action="create_repository", conditions=dict(method=["GET"]))
161 action="create_repository", conditions=dict(method=["GET"]))
160
162
161 #ADMIN MAIN PAGES
163 #ADMIN MAIN PAGES
162 with rmap.submapper(path_prefix='/_admin', controller='admin/admin') as m:
164 with rmap.submapper(path_prefix='/_admin', controller='admin/admin') as m:
163 m.connect('admin_home', '', action='index')
165 m.connect('admin_home', '', action='index')
164 m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}',
166 m.connect('admin_add_repo', '/add_repo/{new_repo:[a-z0-9\. _-]*}',
165 action='add_repo')
167 action='add_repo')
166
168
167 #USER JOURNAL
169 #USER JOURNAL
168 rmap.connect('journal', '/_admin/journal', controller='journal')
170 rmap.connect('journal', '/_admin/journal', controller='journal')
169
171
170 rmap.connect('public_journal', '/_admin/public_journal',
172 rmap.connect('public_journal', '/_admin/public_journal',
171 controller='journal', action="public_journal")
173 controller='journal', action="public_journal")
172
174
173 rmap.connect('public_journal_rss', '/_admin/public_journal_rss',
175 rmap.connect('public_journal_rss', '/_admin/public_journal_rss',
174 controller='journal', action="public_journal_rss")
176 controller='journal', action="public_journal_rss")
175
177
176 rmap.connect('public_journal_atom', '/_admin/public_journal_atom',
178 rmap.connect('public_journal_atom', '/_admin/public_journal_atom',
177 controller='journal', action="public_journal_atom")
179 controller='journal', action="public_journal_atom")
178
180
179 rmap.connect('toggle_following', '/_admin/toggle_following',
181 rmap.connect('toggle_following', '/_admin/toggle_following',
180 controller='journal', action='toggle_following',
182 controller='journal', action='toggle_following',
181 conditions=dict(method=["POST"]))
183 conditions=dict(method=["POST"]))
182
184
183 #SEARCH
185 #SEARCH
184 rmap.connect('search', '/_admin/search', controller='search',)
186 rmap.connect('search', '/_admin/search', controller='search',)
185 rmap.connect('search_repo', '/_admin/search/{search_repo:.*}',
187 rmap.connect('search_repo', '/_admin/search/{search_repo:.*}',
186 controller='search')
188 controller='search')
187
189
188 #LOGIN/LOGOUT/REGISTER/SIGN IN
190 #LOGIN/LOGOUT/REGISTER/SIGN IN
189 rmap.connect('login_home', '/_admin/login', controller='login')
191 rmap.connect('login_home', '/_admin/login', controller='login')
190 rmap.connect('logout_home', '/_admin/logout', controller='login',
192 rmap.connect('logout_home', '/_admin/logout', controller='login',
191 action='logout')
193 action='logout')
192
194
193 rmap.connect('register', '/_admin/register', controller='login',
195 rmap.connect('register', '/_admin/register', controller='login',
194 action='register')
196 action='register')
195
197
196 rmap.connect('reset_password', '/_admin/password_reset',
198 rmap.connect('reset_password', '/_admin/password_reset',
197 controller='login', action='password_reset')
199 controller='login', action='password_reset')
198
200
199 #FEEDS
201 #FEEDS
200 rmap.connect('rss_feed_home', '/{repo_name:.*}/feed/rss',
202 rmap.connect('rss_feed_home', '/{repo_name:.*}/feed/rss',
201 controller='feed', action='rss',
203 controller='feed', action='rss',
202 conditions=dict(function=check_repo))
204 conditions=dict(function=check_repo))
203
205
204 rmap.connect('atom_feed_home', '/{repo_name:.*}/feed/atom',
206 rmap.connect('atom_feed_home', '/{repo_name:.*}/feed/atom',
205 controller='feed', action='atom',
207 controller='feed', action='atom',
206 conditions=dict(function=check_repo))
208 conditions=dict(function=check_repo))
207
209
208 #REPOSITORY ROUTES
210 #REPOSITORY ROUTES
209 rmap.connect('changeset_home', '/{repo_name:.*}/changeset/{revision}',
211 rmap.connect('changeset_home', '/{repo_name:.*}/changeset/{revision}',
210 controller='changeset', revision='tip',
212 controller='changeset', revision='tip',
211 conditions=dict(function=check_repo))
213 conditions=dict(function=check_repo))
212
214
213 rmap.connect('raw_changeset_home',
215 rmap.connect('raw_changeset_home',
214 '/{repo_name:.*}/raw-changeset/{revision}',
216 '/{repo_name:.*}/raw-changeset/{revision}',
215 controller='changeset', action='raw_changeset',
217 controller='changeset', action='raw_changeset',
216 revision='tip', conditions=dict(function=check_repo))
218 revision='tip', conditions=dict(function=check_repo))
217
219
218 rmap.connect('summary_home', '/{repo_name:.*}',
220 rmap.connect('summary_home', '/{repo_name:.*}',
219 controller='summary', conditions=dict(function=check_repo))
221 controller='summary', conditions=dict(function=check_repo))
220
222
221 rmap.connect('summary_home', '/{repo_name:.*}/summary',
223 rmap.connect('summary_home', '/{repo_name:.*}/summary',
222 controller='summary', conditions=dict(function=check_repo))
224 controller='summary', conditions=dict(function=check_repo))
223
225
224 rmap.connect('shortlog_home', '/{repo_name:.*}/shortlog',
226 rmap.connect('shortlog_home', '/{repo_name:.*}/shortlog',
225 controller='shortlog', conditions=dict(function=check_repo))
227 controller='shortlog', conditions=dict(function=check_repo))
226
228
227 rmap.connect('branches_home', '/{repo_name:.*}/branches',
229 rmap.connect('branches_home', '/{repo_name:.*}/branches',
228 controller='branches', conditions=dict(function=check_repo))
230 controller='branches', conditions=dict(function=check_repo))
229
231
230 rmap.connect('tags_home', '/{repo_name:.*}/tags',
232 rmap.connect('tags_home', '/{repo_name:.*}/tags',
231 controller='tags', conditions=dict(function=check_repo))
233 controller='tags', conditions=dict(function=check_repo))
232
234
233 rmap.connect('changelog_home', '/{repo_name:.*}/changelog',
235 rmap.connect('changelog_home', '/{repo_name:.*}/changelog',
234 controller='changelog', conditions=dict(function=check_repo))
236 controller='changelog', conditions=dict(function=check_repo))
235
237
236 rmap.connect('files_home', '/{repo_name:.*}/files/{revision}/{f_path:.*}',
238 rmap.connect('files_home', '/{repo_name:.*}/files/{revision}/{f_path:.*}',
237 controller='files', revision='tip', f_path='',
239 controller='files', revision='tip', f_path='',
238 conditions=dict(function=check_repo))
240 conditions=dict(function=check_repo))
239
241
240 rmap.connect('files_diff_home', '/{repo_name:.*}/diff/{f_path:.*}',
242 rmap.connect('files_diff_home', '/{repo_name:.*}/diff/{f_path:.*}',
241 controller='files', action='diff', revision='tip', f_path='',
243 controller='files', action='diff', revision='tip', f_path='',
242 conditions=dict(function=check_repo))
244 conditions=dict(function=check_repo))
243
245
244 rmap.connect('files_rawfile_home',
246 rmap.connect('files_rawfile_home',
245 '/{repo_name:.*}/rawfile/{revision}/{f_path:.*}',
247 '/{repo_name:.*}/rawfile/{revision}/{f_path:.*}',
246 controller='files', action='rawfile', revision='tip',
248 controller='files', action='rawfile', revision='tip',
247 f_path='', conditions=dict(function=check_repo))
249 f_path='', conditions=dict(function=check_repo))
248
250
249 rmap.connect('files_raw_home',
251 rmap.connect('files_raw_home',
250 '/{repo_name:.*}/raw/{revision}/{f_path:.*}',
252 '/{repo_name:.*}/raw/{revision}/{f_path:.*}',
251 controller='files', action='raw', revision='tip', f_path='',
253 controller='files', action='raw', revision='tip', f_path='',
252 conditions=dict(function=check_repo))
254 conditions=dict(function=check_repo))
253
255
254 rmap.connect('files_annotate_home',
256 rmap.connect('files_annotate_home',
255 '/{repo_name:.*}/annotate/{revision}/{f_path:.*}',
257 '/{repo_name:.*}/annotate/{revision}/{f_path:.*}',
256 controller='files', action='annotate', revision='tip',
258 controller='files', action='annotate', revision='tip',
257 f_path='', conditions=dict(function=check_repo))
259 f_path='', conditions=dict(function=check_repo))
258
260
259 rmap.connect('files_archive_home', '/{repo_name:.*}/archive/{fname}',
261 rmap.connect('files_archive_home', '/{repo_name:.*}/archive/{fname}',
260 controller='files', action='archivefile',
262 controller='files', action='archivefile',
261 conditions=dict(function=check_repo))
263 conditions=dict(function=check_repo))
262
264
263 rmap.connect('repo_settings_delete', '/{repo_name:.*}/settings',
265 rmap.connect('repo_settings_delete', '/{repo_name:.*}/settings',
264 controller='settings', action="delete",
266 controller='settings', action="delete",
265 conditions=dict(method=["DELETE"], function=check_repo))
267 conditions=dict(method=["DELETE"], function=check_repo))
266
268
267 rmap.connect('repo_settings_update', '/{repo_name:.*}/settings',
269 rmap.connect('repo_settings_update', '/{repo_name:.*}/settings',
268 controller='settings', action="update",
270 controller='settings', action="update",
269 conditions=dict(method=["PUT"], function=check_repo))
271 conditions=dict(method=["PUT"], function=check_repo))
270
272
271 rmap.connect('repo_settings_home', '/{repo_name:.*}/settings',
273 rmap.connect('repo_settings_home', '/{repo_name:.*}/settings',
272 controller='settings', action='index',
274 controller='settings', action='index',
273 conditions=dict(function=check_repo))
275 conditions=dict(function=check_repo))
274
276
275 rmap.connect('repo_fork_create_home', '/{repo_name:.*}/fork',
277 rmap.connect('repo_fork_create_home', '/{repo_name:.*}/fork',
276 controller='settings', action='fork_create',
278 controller='settings', action='fork_create',
277 conditions=dict(function=check_repo, method=["POST"]))
279 conditions=dict(function=check_repo, method=["POST"]))
278
280
279 rmap.connect('repo_fork_home', '/{repo_name:.*}/fork',
281 rmap.connect('repo_fork_home', '/{repo_name:.*}/fork',
280 controller='settings', action='fork',
282 controller='settings', action='fork',
281 conditions=dict(function=check_repo))
283 conditions=dict(function=check_repo))
282
284
283 return rmap
285 return rmap
General Comments 0
You need to be logged in to leave comments. Login now