##// END OF EJS Templates
release: merge back stable branch into default
milka -
r4612:cbbdebfd merge default
parent child Browse files
Show More
@@ -0,0 +1,43 b''
1 |RCE| 4.23.1 |RNS|
2 ------------------
3
4 Release Date
5 ^^^^^^^^^^^^
6
7 - 2020-11-25
8
9
10 New Features
11 ^^^^^^^^^^^^
12
13
14
15 General
16 ^^^^^^^
17
18
19
20 Security
21 ^^^^^^^^
22
23
24
25 Performance
26 ^^^^^^^^^^^
27
28 -
29
30
31 Fixes
32 ^^^^^
33
34 - Comments: fixed inline comments TODO resolution
35 - Comments: fixed some styling for TODO resolution.
36 - Comments: fixed general comments live push.
37 - Comments: fixed reply-to links from emails.
38 - Reviewers: fixed some UI issues on larger screen when editing reviewers.
39
40 Upgrade notes
41 ^^^^^^^^^^^^^
42
43 - Un-scheduled release addressing problems in 4.23.X releases.
@@ -0,0 +1,48 b''
1 |RCE| 4.23.2 |RNS|
2 ------------------
3
4 Release Date
5 ^^^^^^^^^^^^
6
7 - 2020-12-06
8
9
10 New Features
11 ^^^^^^^^^^^^
12
13
14
15 General
16 ^^^^^^^
17
18 - Repo extra keys: fixed some texts to improve UI.
19
20
21 Security
22 ^^^^^^^^
23
24
25
26 Performance
27 ^^^^^^^^^^^
28
29 - Core: speed up cache loading on application startup.
30
31
32 Fixes
33 ^^^^^
34
35 - Diffs: added scroll down/scroll up helper. Fixes #5643
36 - Diffs: fixed diff rendering when a common ancestor was a different commit than the source of changes.
37 - Commits / changelog: small fixes from found problems.
38 - Comments: side-bar comments hover also shows an ID of comment now.
39 - Comments: make dismiss less prominent, and text only to not mix icons/text together.
40 - Comments: UX improvements for comment buttons.
41 - Reviewers: small ui fixes for display of review rules, and added new reviewer entries.
42 - Pull-requests: fixed source/target in PR creation, affecting how we load default reviewers based on branches.
43
44
45 Upgrade notes
46 ^^^^^^^^^^^^^
47
48 - Un-scheduled release addressing problems in 4.23.X releases.
@@ -70,3 +70,6 b' 3e635489bb7961df93b01e42454ad1a8730ae968'
70 70 7e2eb896a02ca7cd2cd9f0f853ef3dac3f0039e3 v4.20.1
71 71 8bb5fece08ab65986225b184e46f53d2a71729cb v4.21.0
72 72 90734aac31ee4563bbe665a43ff73190cc762275 v4.22.0
73 a9655707f7cf4146affc51c12fe5ed8e02898a57 v4.23.0
74 56310d93b33b97535908ef9c7b0985b89bb7fad2 v4.23.1
75 7637c38528fa38c1eabc1fde6a869c20995a0da7 v4.23.2
@@ -36,6 +36,8 b' timeout during large pushes.'
36 36 proxy_set_header X-Host $http_host;
37 37 proxy_set_header X-Real-IP $remote_addr;
38 38 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
39 proxy_set_header X-Forwarded-Proto $proto;
40 proxy_set_header X-Url-Scheme $scheme;
39 41 proxy_set_header Proxy-host $proxy_host;
40 42
41 43 proxy_connect_timeout 7200;
@@ -9,6 +9,8 b' Release Notes'
9 9 .. toctree::
10 10 :maxdepth: 1
11 11
12 release-notes-4.23.2.rst
13 release-notes-4.23.1.rst
12 14 release-notes-4.23.0.rst
13 15 release-notes-4.22.0.rst
14 16 release-notes-4.21.0.rst
@@ -1883,7 +1883,7 b' self: super: {'
1883 1883 };
1884 1884 };
1885 1885 "rhodecode-enterprise-ce" = super.buildPythonPackage {
1886 name = "rhodecode-enterprise-ce-4.23.0";
1886 name = "rhodecode-enterprise-ce-4.23.2";
1887 1887 buildInputs = [
1888 1888 self."pytest"
1889 1889 self."py"
@@ -527,6 +527,14 b' class jsonrpc_deprecated_method(object):'
527 527 return result
528 528
529 529
530 def add_api_methods(config):
531 from rhodecode.api.views import (
532 deprecated_api, gist_api, pull_request_api, repo_api, repo_group_api,
533 server_api, search_api, testing_api, user_api, user_group_api)
534
535 config.scan('rhodecode.api.views')
536
537
530 538 def includeme(config):
531 539 plugin_module = 'rhodecode.api'
532 540 plugin_settings = get_plugin_settings(
@@ -549,7 +557,8 b' def includeme(config):'
549 557 config.add_route(
550 558 'apiv2', plugin_settings.get('url', DEFAULT_URL), jsonrpc_call=True)
551 559
552 config.scan(plugin_module, ignore='rhodecode.api.tests')
553 560 # register some exception handling view
554 561 config.add_view(exception_view, context=JSONRPCBaseError)
555 562 config.add_notfound_view(exception_view, jsonrpc_method_not_found=True)
563
564 add_api_methods(config)
@@ -144,3 +144,5 b' def includeme(config):'
144 144 labs_active = str2bool(settings.get('labs_settings_active', False))
145 145 navigation_registry_instance = NavigationRegistry(labs_active=labs_active)
146 146 config.registry.registerUtility(navigation_registry_instance)
147 log.debug('Created new nabigation instance, %s', navigation_registry_instance)
148
This diff has been collapsed as it changes many lines, (619 lines changed) Show them Hide them
@@ -26,441 +26,1030 b' def admin_routes(config):'
26 26 """
27 27 Admin prefixed routes
28 28 """
29 from rhodecode.apps.admin.views.audit_logs import AdminAuditLogsView
30 from rhodecode.apps.admin.views.defaults import AdminDefaultSettingsView
31 from rhodecode.apps.admin.views.exception_tracker import ExceptionsTrackerView
32 from rhodecode.apps.admin.views.main_views import AdminMainView
33 from rhodecode.apps.admin.views.open_source_licenses import OpenSourceLicensesAdminSettingsView
34 from rhodecode.apps.admin.views.permissions import AdminPermissionsView
35 from rhodecode.apps.admin.views.process_management import AdminProcessManagementView
36 from rhodecode.apps.admin.views.repo_groups import AdminRepoGroupsView
37 from rhodecode.apps.admin.views.repositories import AdminReposView
38 from rhodecode.apps.admin.views.sessions import AdminSessionSettingsView
39 from rhodecode.apps.admin.views.settings import AdminSettingsView
40 from rhodecode.apps.admin.views.svn_config import AdminSvnConfigView
41 from rhodecode.apps.admin.views.system_info import AdminSystemInfoSettingsView
42 from rhodecode.apps.admin.views.user_groups import AdminUserGroupsView
43 from rhodecode.apps.admin.views.users import AdminUsersView, UsersView
44
29 45 config.add_route(
30 46 name='admin_audit_logs',
31 47 pattern='/audit_logs')
48 config.add_view(
49 AdminAuditLogsView,
50 attr='admin_audit_logs',
51 route_name='admin_audit_logs', request_method='GET',
52 renderer='rhodecode:templates/admin/admin_audit_logs.mako')
32 53
33 54 config.add_route(
34 55 name='admin_audit_log_entry',
35 56 pattern='/audit_logs/{audit_log_id}')
36
37 config.add_route(
38 name='pull_requests_global_0', # backward compat
39 pattern='/pull_requests/{pull_request_id:\d+}')
40 config.add_route(
41 name='pull_requests_global_1', # backward compat
42 pattern='/pull-requests/{pull_request_id:\d+}')
43 config.add_route(
44 name='pull_requests_global',
45 pattern='/pull-request/{pull_request_id:\d+}')
57 config.add_view(
58 AdminAuditLogsView,
59 attr='admin_audit_log_entry',
60 route_name='admin_audit_log_entry', request_method='GET',
61 renderer='rhodecode:templates/admin/admin_audit_log_entry.mako')
46 62
47 63 config.add_route(
48 64 name='admin_settings_open_source',
49 65 pattern='/settings/open_source')
66 config.add_view(
67 OpenSourceLicensesAdminSettingsView,
68 attr='open_source_licenses',
69 route_name='admin_settings_open_source', request_method='GET',
70 renderer='rhodecode:templates/admin/settings/settings.mako')
71
50 72 config.add_route(
51 73 name='admin_settings_vcs_svn_generate_cfg',
52 74 pattern='/settings/vcs/svn_generate_cfg')
75 config.add_view(
76 AdminSvnConfigView,
77 attr='vcs_svn_generate_config',
78 route_name='admin_settings_vcs_svn_generate_cfg',
79 request_method='POST', renderer='json')
53 80
54 81 config.add_route(
55 82 name='admin_settings_system',
56 83 pattern='/settings/system')
84 config.add_view(
85 AdminSystemInfoSettingsView,
86 attr='settings_system_info',
87 route_name='admin_settings_system', request_method='GET',
88 renderer='rhodecode:templates/admin/settings/settings.mako')
89
57 90 config.add_route(
58 91 name='admin_settings_system_update',
59 92 pattern='/settings/system/updates')
93 config.add_view(
94 AdminSystemInfoSettingsView,
95 attr='settings_system_info_check_update',
96 route_name='admin_settings_system_update', request_method='GET',
97 renderer='rhodecode:templates/admin/settings/settings_system_update.mako')
60 98
61 99 config.add_route(
62 100 name='admin_settings_exception_tracker',
63 101 pattern='/settings/exceptions')
102 config.add_view(
103 ExceptionsTrackerView,
104 attr='browse_exceptions',
105 route_name='admin_settings_exception_tracker', request_method='GET',
106 renderer='rhodecode:templates/admin/settings/settings.mako')
107
64 108 config.add_route(
65 109 name='admin_settings_exception_tracker_delete_all',
66 pattern='/settings/exceptions/delete')
110 pattern='/settings/exceptions_delete_all')
111 config.add_view(
112 ExceptionsTrackerView,
113 attr='exception_delete_all',
114 route_name='admin_settings_exception_tracker_delete_all', request_method='POST',
115 renderer='rhodecode:templates/admin/settings/settings.mako')
116
67 117 config.add_route(
68 118 name='admin_settings_exception_tracker_show',
69 119 pattern='/settings/exceptions/{exception_id}')
120 config.add_view(
121 ExceptionsTrackerView,
122 attr='exception_show',
123 route_name='admin_settings_exception_tracker_show', request_method='GET',
124 renderer='rhodecode:templates/admin/settings/settings.mako')
125
70 126 config.add_route(
71 127 name='admin_settings_exception_tracker_delete',
72 128 pattern='/settings/exceptions/{exception_id}/delete')
129 config.add_view(
130 ExceptionsTrackerView,
131 attr='exception_delete',
132 route_name='admin_settings_exception_tracker_delete', request_method='POST',
133 renderer='rhodecode:templates/admin/settings/settings.mako')
73 134
74 135 config.add_route(
75 136 name='admin_settings_sessions',
76 137 pattern='/settings/sessions')
138 config.add_view(
139 AdminSessionSettingsView,
140 attr='settings_sessions',
141 route_name='admin_settings_sessions', request_method='GET',
142 renderer='rhodecode:templates/admin/settings/settings.mako')
143
77 144 config.add_route(
78 145 name='admin_settings_sessions_cleanup',
79 146 pattern='/settings/sessions/cleanup')
147 config.add_view(
148 AdminSessionSettingsView,
149 attr='settings_sessions_cleanup',
150 route_name='admin_settings_sessions_cleanup', request_method='POST')
80 151
81 152 config.add_route(
82 153 name='admin_settings_process_management',
83 154 pattern='/settings/process_management')
155 config.add_view(
156 AdminProcessManagementView,
157 attr='process_management',
158 route_name='admin_settings_process_management', request_method='GET',
159 renderer='rhodecode:templates/admin/settings/settings.mako')
160
84 161 config.add_route(
85 162 name='admin_settings_process_management_data',
86 163 pattern='/settings/process_management/data')
164 config.add_view(
165 AdminProcessManagementView,
166 attr='process_management_data',
167 route_name='admin_settings_process_management_data', request_method='GET',
168 renderer='rhodecode:templates/admin/settings/settings_process_management_data.mako')
169
87 170 config.add_route(
88 171 name='admin_settings_process_management_signal',
89 172 pattern='/settings/process_management/signal')
173 config.add_view(
174 AdminProcessManagementView,
175 attr='process_management_signal',
176 route_name='admin_settings_process_management_signal',
177 request_method='POST', renderer='json_ext')
178
90 179 config.add_route(
91 180 name='admin_settings_process_management_master_signal',
92 181 pattern='/settings/process_management/master_signal')
182 config.add_view(
183 AdminProcessManagementView,
184 attr='process_management_master_signal',
185 route_name='admin_settings_process_management_master_signal',
186 request_method='POST', renderer='json_ext')
93 187
94 188 # default settings
95 189 config.add_route(
96 190 name='admin_defaults_repositories',
97 191 pattern='/defaults/repositories')
192 config.add_view(
193 AdminDefaultSettingsView,
194 attr='defaults_repository_show',
195 route_name='admin_defaults_repositories', request_method='GET',
196 renderer='rhodecode:templates/admin/defaults/defaults.mako')
197
98 198 config.add_route(
99 199 name='admin_defaults_repositories_update',
100 200 pattern='/defaults/repositories/update')
201 config.add_view(
202 AdminDefaultSettingsView,
203 attr='defaults_repository_update',
204 route_name='admin_defaults_repositories_update', request_method='POST',
205 renderer='rhodecode:templates/admin/defaults/defaults.mako')
101 206
102 207 # admin settings
103 208
104 209 config.add_route(
105 210 name='admin_settings',
106 211 pattern='/settings')
212 config.add_view(
213 AdminSettingsView,
214 attr='settings_global',
215 route_name='admin_settings', request_method='GET',
216 renderer='rhodecode:templates/admin/settings/settings.mako')
217
107 218 config.add_route(
108 219 name='admin_settings_update',
109 220 pattern='/settings/update')
221 config.add_view(
222 AdminSettingsView,
223 attr='settings_global_update',
224 route_name='admin_settings_update', request_method='POST',
225 renderer='rhodecode:templates/admin/settings/settings.mako')
110 226
111 227 config.add_route(
112 228 name='admin_settings_global',
113 229 pattern='/settings/global')
230 config.add_view(
231 AdminSettingsView,
232 attr='settings_global',
233 route_name='admin_settings_global', request_method='GET',
234 renderer='rhodecode:templates/admin/settings/settings.mako')
235
114 236 config.add_route(
115 237 name='admin_settings_global_update',
116 238 pattern='/settings/global/update')
239 config.add_view(
240 AdminSettingsView,
241 attr='settings_global_update',
242 route_name='admin_settings_global_update', request_method='POST',
243 renderer='rhodecode:templates/admin/settings/settings.mako')
117 244
118 245 config.add_route(
119 246 name='admin_settings_vcs',
120 247 pattern='/settings/vcs')
248 config.add_view(
249 AdminSettingsView,
250 attr='settings_vcs',
251 route_name='admin_settings_vcs', request_method='GET',
252 renderer='rhodecode:templates/admin/settings/settings.mako')
253
121 254 config.add_route(
122 255 name='admin_settings_vcs_update',
123 256 pattern='/settings/vcs/update')
257 config.add_view(
258 AdminSettingsView,
259 attr='settings_vcs_update',
260 route_name='admin_settings_vcs_update', request_method='POST',
261 renderer='rhodecode:templates/admin/settings/settings.mako')
262
124 263 config.add_route(
125 264 name='admin_settings_vcs_svn_pattern_delete',
126 265 pattern='/settings/vcs/svn_pattern_delete')
266 config.add_view(
267 AdminSettingsView,
268 attr='settings_vcs_delete_svn_pattern',
269 route_name='admin_settings_vcs_svn_pattern_delete', request_method='POST',
270 renderer='json_ext', xhr=True)
127 271
128 272 config.add_route(
129 273 name='admin_settings_mapping',
130 274 pattern='/settings/mapping')
275 config.add_view(
276 AdminSettingsView,
277 attr='settings_mapping',
278 route_name='admin_settings_mapping', request_method='GET',
279 renderer='rhodecode:templates/admin/settings/settings.mako')
280
131 281 config.add_route(
132 282 name='admin_settings_mapping_update',
133 283 pattern='/settings/mapping/update')
284 config.add_view(
285 AdminSettingsView,
286 attr='settings_mapping_update',
287 route_name='admin_settings_mapping_update', request_method='POST',
288 renderer='rhodecode:templates/admin/settings/settings.mako')
134 289
135 290 config.add_route(
136 291 name='admin_settings_visual',
137 292 pattern='/settings/visual')
293 config.add_view(
294 AdminSettingsView,
295 attr='settings_visual',
296 route_name='admin_settings_visual', request_method='GET',
297 renderer='rhodecode:templates/admin/settings/settings.mako')
298
138 299 config.add_route(
139 300 name='admin_settings_visual_update',
140 301 pattern='/settings/visual/update')
302 config.add_view(
303 AdminSettingsView,
304 attr='settings_visual_update',
305 route_name='admin_settings_visual_update', request_method='POST',
306 renderer='rhodecode:templates/admin/settings/settings.mako')
141 307
142 308 config.add_route(
143 309 name='admin_settings_issuetracker',
144 310 pattern='/settings/issue-tracker')
311 config.add_view(
312 AdminSettingsView,
313 attr='settings_issuetracker',
314 route_name='admin_settings_issuetracker', request_method='GET',
315 renderer='rhodecode:templates/admin/settings/settings.mako')
316
145 317 config.add_route(
146 318 name='admin_settings_issuetracker_update',
147 319 pattern='/settings/issue-tracker/update')
320 config.add_view(
321 AdminSettingsView,
322 attr='settings_issuetracker_update',
323 route_name='admin_settings_issuetracker_update', request_method='POST',
324 renderer='rhodecode:templates/admin/settings/settings.mako')
325
148 326 config.add_route(
149 327 name='admin_settings_issuetracker_test',
150 328 pattern='/settings/issue-tracker/test')
329 config.add_view(
330 AdminSettingsView,
331 attr='settings_issuetracker_test',
332 route_name='admin_settings_issuetracker_test', request_method='POST',
333 renderer='string', xhr=True)
334
151 335 config.add_route(
152 336 name='admin_settings_issuetracker_delete',
153 337 pattern='/settings/issue-tracker/delete')
338 config.add_view(
339 AdminSettingsView,
340 attr='settings_issuetracker_delete',
341 route_name='admin_settings_issuetracker_delete', request_method='POST',
342 renderer='json_ext', xhr=True)
154 343
155 344 config.add_route(
156 345 name='admin_settings_email',
157 346 pattern='/settings/email')
347 config.add_view(
348 AdminSettingsView,
349 attr='settings_email',
350 route_name='admin_settings_email', request_method='GET',
351 renderer='rhodecode:templates/admin/settings/settings.mako')
352
158 353 config.add_route(
159 354 name='admin_settings_email_update',
160 355 pattern='/settings/email/update')
356 config.add_view(
357 AdminSettingsView,
358 attr='settings_email_update',
359 route_name='admin_settings_email_update', request_method='POST',
360 renderer='rhodecode:templates/admin/settings/settings.mako')
161 361
162 362 config.add_route(
163 363 name='admin_settings_hooks',
164 364 pattern='/settings/hooks')
365 config.add_view(
366 AdminSettingsView,
367 attr='settings_hooks',
368 route_name='admin_settings_hooks', request_method='GET',
369 renderer='rhodecode:templates/admin/settings/settings.mako')
370
165 371 config.add_route(
166 372 name='admin_settings_hooks_update',
167 373 pattern='/settings/hooks/update')
374 config.add_view(
375 AdminSettingsView,
376 attr='settings_hooks_update',
377 route_name='admin_settings_hooks_update', request_method='POST',
378 renderer='rhodecode:templates/admin/settings/settings.mako')
379
168 380 config.add_route(
169 381 name='admin_settings_hooks_delete',
170 382 pattern='/settings/hooks/delete')
383 config.add_view(
384 AdminSettingsView,
385 attr='settings_hooks_update',
386 route_name='admin_settings_hooks_delete', request_method='POST',
387 renderer='rhodecode:templates/admin/settings/settings.mako')
171 388
172 389 config.add_route(
173 390 name='admin_settings_search',
174 391 pattern='/settings/search')
392 config.add_view(
393 AdminSettingsView,
394 attr='settings_search',
395 route_name='admin_settings_search', request_method='GET',
396 renderer='rhodecode:templates/admin/settings/settings.mako')
175 397
176 398 config.add_route(
177 399 name='admin_settings_labs',
178 400 pattern='/settings/labs')
401 config.add_view(
402 AdminSettingsView,
403 attr='settings_labs',
404 route_name='admin_settings_labs', request_method='GET',
405 renderer='rhodecode:templates/admin/settings/settings.mako')
406
179 407 config.add_route(
180 408 name='admin_settings_labs_update',
181 409 pattern='/settings/labs/update')
410 config.add_view(
411 AdminSettingsView,
412 attr='settings_labs_update',
413 route_name='admin_settings_labs_update', request_method='POST',
414 renderer='rhodecode:templates/admin/settings/settings.mako')
182 415
183 416 # Automation EE feature
184 417 config.add_route(
185 418 'admin_settings_automation',
186 419 pattern=ADMIN_PREFIX + '/settings/automation')
420 config.add_view(
421 AdminSettingsView,
422 attr='settings_automation',
423 route_name='admin_settings_automation', request_method='GET',
424 renderer='rhodecode:templates/admin/settings/settings.mako')
187 425
188 426 # global permissions
189 427
190 428 config.add_route(
191 429 name='admin_permissions_application',
192 430 pattern='/permissions/application')
431 config.add_view(
432 AdminPermissionsView,
433 attr='permissions_application',
434 route_name='admin_permissions_application', request_method='GET',
435 renderer='rhodecode:templates/admin/permissions/permissions.mako')
436
193 437 config.add_route(
194 438 name='admin_permissions_application_update',
195 439 pattern='/permissions/application/update')
440 config.add_view(
441 AdminPermissionsView,
442 attr='permissions_application_update',
443 route_name='admin_permissions_application_update', request_method='POST',
444 renderer='rhodecode:templates/admin/permissions/permissions.mako')
196 445
197 446 config.add_route(
198 447 name='admin_permissions_global',
199 448 pattern='/permissions/global')
449 config.add_view(
450 AdminPermissionsView,
451 attr='permissions_global',
452 route_name='admin_permissions_global', request_method='GET',
453 renderer='rhodecode:templates/admin/permissions/permissions.mako')
454
200 455 config.add_route(
201 456 name='admin_permissions_global_update',
202 457 pattern='/permissions/global/update')
458 config.add_view(
459 AdminPermissionsView,
460 attr='permissions_global_update',
461 route_name='admin_permissions_global_update', request_method='POST',
462 renderer='rhodecode:templates/admin/permissions/permissions.mako')
203 463
204 464 config.add_route(
205 465 name='admin_permissions_object',
206 466 pattern='/permissions/object')
467 config.add_view(
468 AdminPermissionsView,
469 attr='permissions_objects',
470 route_name='admin_permissions_object', request_method='GET',
471 renderer='rhodecode:templates/admin/permissions/permissions.mako')
472
207 473 config.add_route(
208 474 name='admin_permissions_object_update',
209 475 pattern='/permissions/object/update')
476 config.add_view(
477 AdminPermissionsView,
478 attr='permissions_objects_update',
479 route_name='admin_permissions_object_update', request_method='POST',
480 renderer='rhodecode:templates/admin/permissions/permissions.mako')
210 481
211 482 # Branch perms EE feature
212 483 config.add_route(
213 484 name='admin_permissions_branch',
214 485 pattern='/permissions/branch')
486 config.add_view(
487 AdminPermissionsView,
488 attr='permissions_branch',
489 route_name='admin_permissions_branch', request_method='GET',
490 renderer='rhodecode:templates/admin/permissions/permissions.mako')
215 491
216 492 config.add_route(
217 493 name='admin_permissions_ips',
218 494 pattern='/permissions/ips')
495 config.add_view(
496 AdminPermissionsView,
497 attr='permissions_ips',
498 route_name='admin_permissions_ips', request_method='GET',
499 renderer='rhodecode:templates/admin/permissions/permissions.mako')
219 500
220 501 config.add_route(
221 502 name='admin_permissions_overview',
222 503 pattern='/permissions/overview')
504 config.add_view(
505 AdminPermissionsView,
506 attr='permissions_overview',
507 route_name='admin_permissions_overview', request_method='GET',
508 renderer='rhodecode:templates/admin/permissions/permissions.mako')
223 509
224 510 config.add_route(
225 511 name='admin_permissions_auth_token_access',
226 512 pattern='/permissions/auth_token_access')
513 config.add_view(
514 AdminPermissionsView,
515 attr='auth_token_access',
516 route_name='admin_permissions_auth_token_access', request_method='GET',
517 renderer='rhodecode:templates/admin/permissions/permissions.mako')
227 518
228 519 config.add_route(
229 520 name='admin_permissions_ssh_keys',
230 521 pattern='/permissions/ssh_keys')
522 config.add_view(
523 AdminPermissionsView,
524 attr='ssh_keys',
525 route_name='admin_permissions_ssh_keys', request_method='GET',
526 renderer='rhodecode:templates/admin/permissions/permissions.mako')
527
231 528 config.add_route(
232 529 name='admin_permissions_ssh_keys_data',
233 530 pattern='/permissions/ssh_keys/data')
531 config.add_view(
532 AdminPermissionsView,
533 attr='ssh_keys_data',
534 route_name='admin_permissions_ssh_keys_data', request_method='GET',
535 renderer='json_ext', xhr=True)
536
234 537 config.add_route(
235 538 name='admin_permissions_ssh_keys_update',
236 539 pattern='/permissions/ssh_keys/update')
540 config.add_view(
541 AdminPermissionsView,
542 attr='ssh_keys_update',
543 route_name='admin_permissions_ssh_keys_update', request_method='POST',
544 renderer='rhodecode:templates/admin/permissions/permissions.mako')
237 545
238 546 # users admin
239 547 config.add_route(
240 548 name='users',
241 549 pattern='/users')
550 config.add_view(
551 AdminUsersView,
552 attr='users_list',
553 route_name='users', request_method='GET',
554 renderer='rhodecode:templates/admin/users/users.mako')
242 555
243 556 config.add_route(
244 557 name='users_data',
245 558 pattern='/users_data')
559 config.add_view(
560 AdminUsersView,
561 attr='users_list_data',
562 # renderer defined below
563 route_name='users_data', request_method='GET',
564 renderer='json_ext', xhr=True)
246 565
247 566 config.add_route(
248 567 name='users_create',
249 568 pattern='/users/create')
569 config.add_view(
570 AdminUsersView,
571 attr='users_create',
572 route_name='users_create', request_method='POST',
573 renderer='rhodecode:templates/admin/users/user_add.mako')
250 574
251 575 config.add_route(
252 576 name='users_new',
253 577 pattern='/users/new')
578 config.add_view(
579 AdminUsersView,
580 attr='users_new',
581 route_name='users_new', request_method='GET',
582 renderer='rhodecode:templates/admin/users/user_add.mako')
254 583
255 584 # user management
256 585 config.add_route(
257 586 name='user_edit',
258 587 pattern='/users/{user_id:\d+}/edit',
259 588 user_route=True)
589 config.add_view(
590 UsersView,
591 attr='user_edit',
592 route_name='user_edit', request_method='GET',
593 renderer='rhodecode:templates/admin/users/user_edit.mako')
594
260 595 config.add_route(
261 596 name='user_edit_advanced',
262 597 pattern='/users/{user_id:\d+}/edit/advanced',
263 598 user_route=True)
599 config.add_view(
600 UsersView,
601 attr='user_edit_advanced',
602 route_name='user_edit_advanced', request_method='GET',
603 renderer='rhodecode:templates/admin/users/user_edit.mako')
604
264 605 config.add_route(
265 606 name='user_edit_global_perms',
266 607 pattern='/users/{user_id:\d+}/edit/global_permissions',
267 608 user_route=True)
609 config.add_view(
610 UsersView,
611 attr='user_edit_global_perms',
612 route_name='user_edit_global_perms', request_method='GET',
613 renderer='rhodecode:templates/admin/users/user_edit.mako')
614
268 615 config.add_route(
269 616 name='user_edit_global_perms_update',
270 617 pattern='/users/{user_id:\d+}/edit/global_permissions/update',
271 618 user_route=True)
619 config.add_view(
620 UsersView,
621 attr='user_edit_global_perms_update',
622 route_name='user_edit_global_perms_update', request_method='POST',
623 renderer='rhodecode:templates/admin/users/user_edit.mako')
624
272 625 config.add_route(
273 626 name='user_update',
274 627 pattern='/users/{user_id:\d+}/update',
275 628 user_route=True)
629 config.add_view(
630 UsersView,
631 attr='user_update',
632 route_name='user_update', request_method='POST',
633 renderer='rhodecode:templates/admin/users/user_edit.mako')
634
276 635 config.add_route(
277 636 name='user_delete',
278 637 pattern='/users/{user_id:\d+}/delete',
279 638 user_route=True)
639 config.add_view(
640 UsersView,
641 attr='user_delete',
642 route_name='user_delete', request_method='POST',
643 renderer='rhodecode:templates/admin/users/user_edit.mako')
644
280 645 config.add_route(
281 646 name='user_enable_force_password_reset',
282 647 pattern='/users/{user_id:\d+}/password_reset_enable',
283 648 user_route=True)
649 config.add_view(
650 UsersView,
651 attr='user_enable_force_password_reset',
652 route_name='user_enable_force_password_reset', request_method='POST',
653 renderer='rhodecode:templates/admin/users/user_edit.mako')
654
284 655 config.add_route(
285 656 name='user_disable_force_password_reset',
286 657 pattern='/users/{user_id:\d+}/password_reset_disable',
287 658 user_route=True)
659 config.add_view(
660 UsersView,
661 attr='user_disable_force_password_reset',
662 route_name='user_disable_force_password_reset', request_method='POST',
663 renderer='rhodecode:templates/admin/users/user_edit.mako')
664
288 665 config.add_route(
289 666 name='user_create_personal_repo_group',
290 667 pattern='/users/{user_id:\d+}/create_repo_group',
291 668 user_route=True)
669 config.add_view(
670 UsersView,
671 attr='user_create_personal_repo_group',
672 route_name='user_create_personal_repo_group', request_method='POST',
673 renderer='rhodecode:templates/admin/users/user_edit.mako')
292 674
293 675 # user notice
294 676 config.add_route(
295 677 name='user_notice_dismiss',
296 678 pattern='/users/{user_id:\d+}/notice_dismiss',
297 679 user_route=True)
680 config.add_view(
681 UsersView,
682 attr='user_notice_dismiss',
683 route_name='user_notice_dismiss', request_method='POST',
684 renderer='json_ext', xhr=True)
298 685
299 686 # user auth tokens
300 687 config.add_route(
301 688 name='edit_user_auth_tokens',
302 689 pattern='/users/{user_id:\d+}/edit/auth_tokens',
303 690 user_route=True)
691 config.add_view(
692 UsersView,
693 attr='auth_tokens',
694 route_name='edit_user_auth_tokens', request_method='GET',
695 renderer='rhodecode:templates/admin/users/user_edit.mako')
696
304 697 config.add_route(
305 698 name='edit_user_auth_tokens_view',
306 699 pattern='/users/{user_id:\d+}/edit/auth_tokens/view',
307 700 user_route=True)
701 config.add_view(
702 UsersView,
703 attr='auth_tokens_view',
704 route_name='edit_user_auth_tokens_view', request_method='POST',
705 renderer='json_ext', xhr=True)
706
308 707 config.add_route(
309 708 name='edit_user_auth_tokens_add',
310 709 pattern='/users/{user_id:\d+}/edit/auth_tokens/new',
311 710 user_route=True)
711 config.add_view(
712 UsersView,
713 attr='auth_tokens_add',
714 route_name='edit_user_auth_tokens_add', request_method='POST')
715
312 716 config.add_route(
313 717 name='edit_user_auth_tokens_delete',
314 718 pattern='/users/{user_id:\d+}/edit/auth_tokens/delete',
315 719 user_route=True)
720 config.add_view(
721 UsersView,
722 attr='auth_tokens_delete',
723 route_name='edit_user_auth_tokens_delete', request_method='POST')
316 724
317 725 # user ssh keys
318 726 config.add_route(
319 727 name='edit_user_ssh_keys',
320 728 pattern='/users/{user_id:\d+}/edit/ssh_keys',
321 729 user_route=True)
730 config.add_view(
731 UsersView,
732 attr='ssh_keys',
733 route_name='edit_user_ssh_keys', request_method='GET',
734 renderer='rhodecode:templates/admin/users/user_edit.mako')
735
322 736 config.add_route(
323 737 name='edit_user_ssh_keys_generate_keypair',
324 738 pattern='/users/{user_id:\d+}/edit/ssh_keys/generate',
325 739 user_route=True)
740 config.add_view(
741 UsersView,
742 attr='ssh_keys_generate_keypair',
743 route_name='edit_user_ssh_keys_generate_keypair', request_method='GET',
744 renderer='rhodecode:templates/admin/users/user_edit.mako')
745
326 746 config.add_route(
327 747 name='edit_user_ssh_keys_add',
328 748 pattern='/users/{user_id:\d+}/edit/ssh_keys/new',
329 749 user_route=True)
750 config.add_view(
751 UsersView,
752 attr='ssh_keys_add',
753 route_name='edit_user_ssh_keys_add', request_method='POST')
754
330 755 config.add_route(
331 756 name='edit_user_ssh_keys_delete',
332 757 pattern='/users/{user_id:\d+}/edit/ssh_keys/delete',
333 758 user_route=True)
759 config.add_view(
760 UsersView,
761 attr='ssh_keys_delete',
762 route_name='edit_user_ssh_keys_delete', request_method='POST')
334 763
335 764 # user emails
336 765 config.add_route(
337 766 name='edit_user_emails',
338 767 pattern='/users/{user_id:\d+}/edit/emails',
339 768 user_route=True)
769 config.add_view(
770 UsersView,
771 attr='emails',
772 route_name='edit_user_emails', request_method='GET',
773 renderer='rhodecode:templates/admin/users/user_edit.mako')
774
340 775 config.add_route(
341 776 name='edit_user_emails_add',
342 777 pattern='/users/{user_id:\d+}/edit/emails/new',
343 778 user_route=True)
779 config.add_view(
780 UsersView,
781 attr='emails_add',
782 route_name='edit_user_emails_add', request_method='POST')
783
344 784 config.add_route(
345 785 name='edit_user_emails_delete',
346 786 pattern='/users/{user_id:\d+}/edit/emails/delete',
347 787 user_route=True)
788 config.add_view(
789 UsersView,
790 attr='emails_delete',
791 route_name='edit_user_emails_delete', request_method='POST')
348 792
349 793 # user IPs
350 794 config.add_route(
351 795 name='edit_user_ips',
352 796 pattern='/users/{user_id:\d+}/edit/ips',
353 797 user_route=True)
798 config.add_view(
799 UsersView,
800 attr='ips',
801 route_name='edit_user_ips', request_method='GET',
802 renderer='rhodecode:templates/admin/users/user_edit.mako')
803
354 804 config.add_route(
355 805 name='edit_user_ips_add',
356 806 pattern='/users/{user_id:\d+}/edit/ips/new',
357 807 user_route_with_default=True) # enabled for default user too
808 config.add_view(
809 UsersView,
810 attr='ips_add',
811 route_name='edit_user_ips_add', request_method='POST')
812
358 813 config.add_route(
359 814 name='edit_user_ips_delete',
360 815 pattern='/users/{user_id:\d+}/edit/ips/delete',
361 816 user_route_with_default=True) # enabled for default user too
817 config.add_view(
818 UsersView,
819 attr='ips_delete',
820 route_name='edit_user_ips_delete', request_method='POST')
362 821
363 822 # user perms
364 823 config.add_route(
365 824 name='edit_user_perms_summary',
366 825 pattern='/users/{user_id:\d+}/edit/permissions_summary',
367 826 user_route=True)
827 config.add_view(
828 UsersView,
829 attr='user_perms_summary',
830 route_name='edit_user_perms_summary', request_method='GET',
831 renderer='rhodecode:templates/admin/users/user_edit.mako')
832
368 833 config.add_route(
369 834 name='edit_user_perms_summary_json',
370 835 pattern='/users/{user_id:\d+}/edit/permissions_summary/json',
371 836 user_route=True)
837 config.add_view(
838 UsersView,
839 attr='user_perms_summary_json',
840 route_name='edit_user_perms_summary_json', request_method='GET',
841 renderer='json_ext')
372 842
373 843 # user user groups management
374 844 config.add_route(
375 845 name='edit_user_groups_management',
376 846 pattern='/users/{user_id:\d+}/edit/groups_management',
377 847 user_route=True)
848 config.add_view(
849 UsersView,
850 attr='groups_management',
851 route_name='edit_user_groups_management', request_method='GET',
852 renderer='rhodecode:templates/admin/users/user_edit.mako')
378 853
379 854 config.add_route(
380 855 name='edit_user_groups_management_updates',
381 856 pattern='/users/{user_id:\d+}/edit/edit_user_groups_management/updates',
382 857 user_route=True)
858 config.add_view(
859 UsersView,
860 attr='groups_management_updates',
861 route_name='edit_user_groups_management_updates', request_method='POST')
383 862
384 863 # user audit logs
385 864 config.add_route(
386 865 name='edit_user_audit_logs',
387 866 pattern='/users/{user_id:\d+}/edit/audit', user_route=True)
867 config.add_view(
868 UsersView,
869 attr='user_audit_logs',
870 route_name='edit_user_audit_logs', request_method='GET',
871 renderer='rhodecode:templates/admin/users/user_edit.mako')
388 872
389 873 config.add_route(
390 874 name='edit_user_audit_logs_download',
391 875 pattern='/users/{user_id:\d+}/edit/audit/download', user_route=True)
876 config.add_view(
877 UsersView,
878 attr='user_audit_logs_download',
879 route_name='edit_user_audit_logs_download', request_method='GET',
880 renderer='string')
392 881
393 882 # user caches
394 883 config.add_route(
395 884 name='edit_user_caches',
396 885 pattern='/users/{user_id:\d+}/edit/caches',
397 886 user_route=True)
887 config.add_view(
888 UsersView,
889 attr='user_caches',
890 route_name='edit_user_caches', request_method='GET',
891 renderer='rhodecode:templates/admin/users/user_edit.mako')
892
398 893 config.add_route(
399 894 name='edit_user_caches_update',
400 895 pattern='/users/{user_id:\d+}/edit/caches/update',
401 896 user_route=True)
897 config.add_view(
898 UsersView,
899 attr='user_caches_update',
900 route_name='edit_user_caches_update', request_method='POST')
402 901
403 902 # user-groups admin
404 903 config.add_route(
405 904 name='user_groups',
406 905 pattern='/user_groups')
906 config.add_view(
907 AdminUserGroupsView,
908 attr='user_groups_list',
909 route_name='user_groups', request_method='GET',
910 renderer='rhodecode:templates/admin/user_groups/user_groups.mako')
407 911
408 912 config.add_route(
409 913 name='user_groups_data',
410 914 pattern='/user_groups_data')
915 config.add_view(
916 AdminUserGroupsView,
917 attr='user_groups_list_data',
918 route_name='user_groups_data', request_method='GET',
919 renderer='json_ext', xhr=True)
411 920
412 921 config.add_route(
413 922 name='user_groups_new',
414 923 pattern='/user_groups/new')
924 config.add_view(
925 AdminUserGroupsView,
926 attr='user_groups_new',
927 route_name='user_groups_new', request_method='GET',
928 renderer='rhodecode:templates/admin/user_groups/user_group_add.mako')
415 929
416 930 config.add_route(
417 931 name='user_groups_create',
418 932 pattern='/user_groups/create')
933 config.add_view(
934 AdminUserGroupsView,
935 attr='user_groups_create',
936 route_name='user_groups_create', request_method='POST',
937 renderer='rhodecode:templates/admin/user_groups/user_group_add.mako')
419 938
420 939 # repos admin
421 940 config.add_route(
422 941 name='repos',
423 942 pattern='/repos')
943 config.add_view(
944 AdminReposView,
945 attr='repository_list',
946 route_name='repos', request_method='GET',
947 renderer='rhodecode:templates/admin/repos/repos.mako')
424 948
425 949 config.add_route(
426 950 name='repos_data',
427 951 pattern='/repos_data')
952 config.add_view(
953 AdminReposView,
954 attr='repository_list_data',
955 route_name='repos_data', request_method='GET',
956 renderer='json_ext', xhr=True)
428 957
429 958 config.add_route(
430 959 name='repo_new',
431 960 pattern='/repos/new')
961 config.add_view(
962 AdminReposView,
963 attr='repository_new',
964 route_name='repo_new', request_method='GET',
965 renderer='rhodecode:templates/admin/repos/repo_add.mako')
432 966
433 967 config.add_route(
434 968 name='repo_create',
435 969 pattern='/repos/create')
970 config.add_view(
971 AdminReposView,
972 attr='repository_create',
973 route_name='repo_create', request_method='POST',
974 renderer='rhodecode:templates/admin/repos/repos.mako')
436 975
437 976 # repo groups admin
438 977 config.add_route(
439 978 name='repo_groups',
440 979 pattern='/repo_groups')
980 config.add_view(
981 AdminRepoGroupsView,
982 attr='repo_group_list',
983 route_name='repo_groups', request_method='GET',
984 renderer='rhodecode:templates/admin/repo_groups/repo_groups.mako')
441 985
442 986 config.add_route(
443 987 name='repo_groups_data',
444 988 pattern='/repo_groups_data')
989 config.add_view(
990 AdminRepoGroupsView,
991 attr='repo_group_list_data',
992 route_name='repo_groups_data', request_method='GET',
993 renderer='json_ext', xhr=True)
445 994
446 995 config.add_route(
447 996 name='repo_group_new',
448 997 pattern='/repo_group/new')
998 config.add_view(
999 AdminRepoGroupsView,
1000 attr='repo_group_new',
1001 route_name='repo_group_new', request_method='GET',
1002 renderer='rhodecode:templates/admin/repo_groups/repo_group_add.mako')
449 1003
450 1004 config.add_route(
451 1005 name='repo_group_create',
452 1006 pattern='/repo_group/create')
1007 config.add_view(
1008 AdminRepoGroupsView,
1009 attr='repo_group_create',
1010 route_name='repo_group_create', request_method='POST',
1011 renderer='rhodecode:templates/admin/repo_groups/repo_group_add.mako')
453 1012
454 1013
455 1014 def includeme(config):
456 1015 from rhodecode.apps._base.navigation import includeme as nav_includeme
1016 from rhodecode.apps.admin.views.main_views import AdminMainView
457 1017
458 1018 # Create admin navigation registry and add it to the pyramid registry.
459 1019 nav_includeme(config)
460 1020
461 1021 # main admin routes
462 config.add_route(name='admin_home', pattern=ADMIN_PREFIX)
463 config.include(admin_routes, route_prefix=ADMIN_PREFIX)
1022 config.add_route(
1023 name='admin_home', pattern=ADMIN_PREFIX)
1024 config.add_view(
1025 AdminMainView,
1026 attr='admin_main',
1027 route_name='admin_home', request_method='GET',
1028 renderer='rhodecode:templates/admin/main.mako')
1029
1030 # pr global redirect
1031 config.add_route(
1032 name='pull_requests_global_0', # backward compat
1033 pattern=ADMIN_PREFIX + '/pull_requests/{pull_request_id:\d+}')
1034 config.add_view(
1035 AdminMainView,
1036 attr='pull_requests',
1037 route_name='pull_requests_global_0', request_method='GET')
464 1038
465 # Scan module for configuration decorators.
466 config.scan('.views', ignore='.tests')
1039 config.add_route(
1040 name='pull_requests_global_1', # backward compat
1041 pattern=ADMIN_PREFIX + '/pull-requests/{pull_request_id:\d+}')
1042 config.add_view(
1043 AdminMainView,
1044 attr='pull_requests',
1045 route_name='pull_requests_global_1', request_method='GET')
1046
1047 config.add_route(
1048 name='pull_requests_global',
1049 pattern=ADMIN_PREFIX + '/pull-request/{pull_request_id:\d+}')
1050 config.add_view(
1051 AdminMainView,
1052 attr='pull_requests',
1053 route_name='pull_requests_global', request_method='GET')
1054
1055 config.include(admin_routes, route_prefix=ADMIN_PREFIX)
@@ -21,7 +21,6 b''
21 21 import logging
22 22
23 23 from pyramid.httpexceptions import HTTPNotFound
24 from pyramid.view import view_config
25 24
26 25 from rhodecode.apps._base import BaseAppView
27 26 from rhodecode.model.db import joinedload, UserLog
@@ -34,15 +33,13 b' log = logging.getLogger(__name__)'
34 33
35 34
36 35 class AdminAuditLogsView(BaseAppView):
36
37 37 def load_default_context(self):
38 38 c = self._get_local_tmpl_context()
39 39 return c
40 40
41 41 @LoginRequired()
42 42 @HasPermissionAllDecorator('hg.admin')
43 @view_config(
44 route_name='admin_audit_logs', request_method='GET',
45 renderer='rhodecode:templates/admin/admin_audit_logs.mako')
46 43 def admin_audit_logs(self):
47 44 c = self.load_default_context()
48 45
@@ -76,9 +73,6 b' class AdminAuditLogsView(BaseAppView):'
76 73
77 74 @LoginRequired()
78 75 @HasPermissionAllDecorator('hg.admin')
79 @view_config(
80 route_name='admin_audit_log_entry', request_method='GET',
81 renderer='rhodecode:templates/admin/admin_audit_log_entry.mako')
82 76 def admin_audit_log_entry(self):
83 77 c = self.load_default_context()
84 78 audit_log_id = self.request.matchdict['audit_log_id']
@@ -23,7 +23,6 b' import logging'
23 23 import formencode
24 24 import formencode.htmlfill
25 25
26 from pyramid.view import view_config
27 26 from pyramid.httpexceptions import HTTPFound
28 27 from pyramid.renderers import render
29 28 from pyramid.response import Response
@@ -41,17 +40,13 b' log = logging.getLogger(__name__)'
41 40
42 41
43 42 class AdminDefaultSettingsView(BaseAppView):
43
44 44 def load_default_context(self):
45 45 c = self._get_local_tmpl_context()
46
47
48 46 return c
49 47
50 48 @LoginRequired()
51 49 @HasPermissionAllDecorator('hg.admin')
52 @view_config(
53 route_name='admin_defaults_repositories', request_method='GET',
54 renderer='rhodecode:templates/admin/defaults/defaults.mako')
55 50 def defaults_repository_show(self):
56 51 c = self.load_default_context()
57 52 c.backends = BACKENDS.keys()
@@ -72,9 +67,6 b' class AdminDefaultSettingsView(BaseAppVi'
72 67 @LoginRequired()
73 68 @HasPermissionAllDecorator('hg.admin')
74 69 @CSRFRequired()
75 @view_config(
76 route_name='admin_defaults_repositories_update', request_method='POST',
77 renderer='rhodecode:templates/admin/defaults/defaults.mako')
78 70 def defaults_repository_update(self):
79 71 _ = self.request.translate
80 72 c = self.load_default_context()
@@ -21,7 +21,6 b' import os'
21 21 import logging
22 22
23 23 from pyramid.httpexceptions import HTTPFound
24 from pyramid.view import view_config
25 24
26 25 from rhodecode.apps._base import BaseAppView
27 26 from rhodecode.apps._base.navigation import navigation_list
@@ -99,9 +98,6 b' class ExceptionsTrackerView(BaseAppView)'
99 98
100 99 @LoginRequired()
101 100 @HasPermissionAllDecorator('hg.admin')
102 @view_config(
103 route_name='admin_settings_exception_tracker', request_method='GET',
104 renderer='rhodecode:templates/admin/settings/settings.mako')
105 101 def browse_exceptions(self):
106 102 _ = self.request.translate
107 103 c = self.load_default_context()
@@ -117,9 +113,6 b' class ExceptionsTrackerView(BaseAppView)'
117 113
118 114 @LoginRequired()
119 115 @HasPermissionAllDecorator('hg.admin')
120 @view_config(
121 route_name='admin_settings_exception_tracker_show', request_method='GET',
122 renderer='rhodecode:templates/admin/settings/settings.mako')
123 116 def exception_show(self):
124 117 _ = self.request.translate
125 118 c = self.load_default_context()
@@ -132,9 +125,6 b' class ExceptionsTrackerView(BaseAppView)'
132 125 @LoginRequired()
133 126 @HasPermissionAllDecorator('hg.admin')
134 127 @CSRFRequired()
135 @view_config(
136 route_name='admin_settings_exception_tracker_delete_all', request_method='POST',
137 renderer='rhodecode:templates/admin/settings/settings.mako')
138 128 def exception_delete_all(self):
139 129 _ = self.request.translate
140 130 c = self.load_default_context()
@@ -159,9 +149,6 b' class ExceptionsTrackerView(BaseAppView)'
159 149 @LoginRequired()
160 150 @HasPermissionAllDecorator('hg.admin')
161 151 @CSRFRequired()
162 @view_config(
163 route_name='admin_settings_exception_tracker_delete', request_method='POST',
164 renderer='rhodecode:templates/admin/settings/settings.mako')
165 152 def exception_delete(self):
166 153 _ = self.request.translate
167 154 c = self.load_default_context()
@@ -21,7 +21,6 b''
21 21 import logging
22 22
23 23 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
24 from pyramid.view import view_config
25 24
26 25 from rhodecode.apps._base import BaseAppView
27 26 from rhodecode.lib import helpers as h
@@ -39,9 +38,6 b' class AdminMainView(BaseAppView):'
39 38
40 39 @LoginRequired()
41 40 @NotAnonymous()
42 @view_config(
43 route_name='admin_home', request_method='GET',
44 renderer='rhodecode:templates/admin/main.mako')
45 41 def admin_main(self):
46 42 c = self.load_default_context()
47 43 c.active = 'admin'
@@ -52,9 +48,6 b' class AdminMainView(BaseAppView):'
52 48 return self._get_template_context(c)
53 49
54 50 @LoginRequired()
55 @view_config(route_name='pull_requests_global_0', request_method='GET')
56 @view_config(route_name='pull_requests_global_1', request_method='GET')
57 @view_config(route_name='pull_requests_global', request_method='GET')
58 51 def pull_requests(self):
59 52 """
60 53 Global redirect for Pull Requests
@@ -21,8 +21,6 b''
21 21 import collections
22 22 import logging
23 23
24 from pyramid.view import view_config
25
26 24 from rhodecode.apps._base import BaseAppView
27 25 from rhodecode.apps._base.navigation import navigation_list
28 26 from rhodecode.lib.auth import (LoginRequired, HasPermissionAllDecorator)
@@ -39,9 +37,6 b' class OpenSourceLicensesAdminSettingsVie'
39 37
40 38 @LoginRequired()
41 39 @HasPermissionAllDecorator('hg.admin')
42 @view_config(
43 route_name='admin_settings_open_source', request_method='GET',
44 renderer='rhodecode:templates/admin/settings/settings.mako')
45 40 def open_source_licenses(self):
46 41 c = self.load_default_context()
47 42 c.active = 'open_source'
@@ -25,7 +25,6 b' import formencode.htmlfill'
25 25 import datetime
26 26 from pyramid.interfaces import IRoutesMapper
27 27
28 from pyramid.view import view_config
29 28 from pyramid.httpexceptions import HTTPFound
30 29 from pyramid.renderers import render
31 30 from pyramid.response import Response
@@ -59,9 +58,6 b' class AdminPermissionsView(BaseAppView, '
59 58
60 59 @LoginRequired()
61 60 @HasPermissionAllDecorator('hg.admin')
62 @view_config(
63 route_name='admin_permissions_application', request_method='GET',
64 renderer='rhodecode:templates/admin/permissions/permissions.mako')
65 61 def permissions_application(self):
66 62 c = self.load_default_context()
67 63 c.active = 'application'
@@ -90,9 +86,6 b' class AdminPermissionsView(BaseAppView, '
90 86 @LoginRequired()
91 87 @HasPermissionAllDecorator('hg.admin')
92 88 @CSRFRequired()
93 @view_config(
94 route_name='admin_permissions_application_update', request_method='POST',
95 renderer='rhodecode:templates/admin/permissions/permissions.mako')
96 89 def permissions_application_update(self):
97 90 _ = self.request.translate
98 91 c = self.load_default_context()
@@ -149,9 +142,6 b' class AdminPermissionsView(BaseAppView, '
149 142
150 143 @LoginRequired()
151 144 @HasPermissionAllDecorator('hg.admin')
152 @view_config(
153 route_name='admin_permissions_object', request_method='GET',
154 renderer='rhodecode:templates/admin/permissions/permissions.mako')
155 145 def permissions_objects(self):
156 146 c = self.load_default_context()
157 147 c.active = 'objects'
@@ -174,9 +164,6 b' class AdminPermissionsView(BaseAppView, '
174 164 @LoginRequired()
175 165 @HasPermissionAllDecorator('hg.admin')
176 166 @CSRFRequired()
177 @view_config(
178 route_name='admin_permissions_object_update', request_method='POST',
179 renderer='rhodecode:templates/admin/permissions/permissions.mako')
180 167 def permissions_objects_update(self):
181 168 _ = self.request.translate
182 169 c = self.load_default_context()
@@ -225,9 +212,6 b' class AdminPermissionsView(BaseAppView, '
225 212
226 213 @LoginRequired()
227 214 @HasPermissionAllDecorator('hg.admin')
228 @view_config(
229 route_name='admin_permissions_branch', request_method='GET',
230 renderer='rhodecode:templates/admin/permissions/permissions.mako')
231 215 def permissions_branch(self):
232 216 c = self.load_default_context()
233 217 c.active = 'branch'
@@ -249,9 +233,6 b' class AdminPermissionsView(BaseAppView, '
249 233
250 234 @LoginRequired()
251 235 @HasPermissionAllDecorator('hg.admin')
252 @view_config(
253 route_name='admin_permissions_global', request_method='GET',
254 renderer='rhodecode:templates/admin/permissions/permissions.mako')
255 236 def permissions_global(self):
256 237 c = self.load_default_context()
257 238 c.active = 'global'
@@ -274,9 +255,6 b' class AdminPermissionsView(BaseAppView, '
274 255 @LoginRequired()
275 256 @HasPermissionAllDecorator('hg.admin')
276 257 @CSRFRequired()
277 @view_config(
278 route_name='admin_permissions_global_update', request_method='POST',
279 renderer='rhodecode:templates/admin/permissions/permissions.mako')
280 258 def permissions_global_update(self):
281 259 _ = self.request.translate
282 260 c = self.load_default_context()
@@ -327,9 +305,6 b' class AdminPermissionsView(BaseAppView, '
327 305
328 306 @LoginRequired()
329 307 @HasPermissionAllDecorator('hg.admin')
330 @view_config(
331 route_name='admin_permissions_ips', request_method='GET',
332 renderer='rhodecode:templates/admin/permissions/permissions.mako')
333 308 def permissions_ips(self):
334 309 c = self.load_default_context()
335 310 c.active = 'ips'
@@ -342,9 +317,6 b' class AdminPermissionsView(BaseAppView, '
342 317
343 318 @LoginRequired()
344 319 @HasPermissionAllDecorator('hg.admin')
345 @view_config(
346 route_name='admin_permissions_overview', request_method='GET',
347 renderer='rhodecode:templates/admin/permissions/permissions.mako')
348 320 def permissions_overview(self):
349 321 c = self.load_default_context()
350 322 c.active = 'perms'
@@ -355,9 +327,6 b' class AdminPermissionsView(BaseAppView, '
355 327
356 328 @LoginRequired()
357 329 @HasPermissionAllDecorator('hg.admin')
358 @view_config(
359 route_name='admin_permissions_auth_token_access', request_method='GET',
360 renderer='rhodecode:templates/admin/permissions/permissions.mako')
361 330 def auth_token_access(self):
362 331 from rhodecode import CONFIG
363 332
@@ -415,9 +384,6 b' class AdminPermissionsView(BaseAppView, '
415 384
416 385 @LoginRequired()
417 386 @HasPermissionAllDecorator('hg.admin')
418 @view_config(
419 route_name='admin_permissions_ssh_keys', request_method='GET',
420 renderer='rhodecode:templates/admin/permissions/permissions.mako')
421 387 def ssh_keys(self):
422 388 c = self.load_default_context()
423 389 c.active = 'ssh_keys'
@@ -426,9 +392,6 b' class AdminPermissionsView(BaseAppView, '
426 392
427 393 @LoginRequired()
428 394 @HasPermissionAllDecorator('hg.admin')
429 @view_config(
430 route_name='admin_permissions_ssh_keys_data', request_method='GET',
431 renderer='json_ext', xhr=True)
432 395 def ssh_keys_data(self):
433 396 _ = self.request.translate
434 397 self.load_default_context()
@@ -498,9 +461,6 b' class AdminPermissionsView(BaseAppView, '
498 461 @LoginRequired()
499 462 @HasPermissionAllDecorator('hg.admin')
500 463 @CSRFRequired()
501 @view_config(
502 route_name='admin_permissions_ssh_keys_update', request_method='POST',
503 renderer='rhodecode:templates/admin/permissions/permissions.mako')
504 464 def ssh_keys_update(self):
505 465 _ = self.request.translate
506 466 self.load_default_context()
@@ -22,7 +22,7 b' import logging'
22 22
23 23 import psutil
24 24 import signal
25 from pyramid.view import view_config
25
26 26
27 27 from rhodecode.apps._base import BaseAppView
28 28 from rhodecode.apps._base.navigation import navigation_list
@@ -84,9 +84,6 b' class AdminProcessManagementView(BaseApp'
84 84
85 85 @LoginRequired()
86 86 @HasPermissionAllDecorator('hg.admin')
87 @view_config(
88 route_name='admin_settings_process_management', request_method='GET',
89 renderer='rhodecode:templates/admin/settings/settings.mako')
90 87 def process_management(self):
91 88 _ = self.request.translate
92 89 c = self.load_default_context()
@@ -99,9 +96,6 b' class AdminProcessManagementView(BaseApp'
99 96
100 97 @LoginRequired()
101 98 @HasPermissionAllDecorator('hg.admin')
102 @view_config(
103 route_name='admin_settings_process_management_data', request_method='GET',
104 renderer='rhodecode:templates/admin/settings/settings_process_management_data.mako')
105 99 def process_management_data(self):
106 100 _ = self.request.translate
107 101 c = self.load_default_context()
@@ -111,9 +105,6 b' class AdminProcessManagementView(BaseApp'
111 105 @LoginRequired()
112 106 @HasPermissionAllDecorator('hg.admin')
113 107 @CSRFRequired()
114 @view_config(
115 route_name='admin_settings_process_management_signal',
116 request_method='POST', renderer='json_ext')
117 108 def process_management_signal(self):
118 109 pids = self.request.json.get('pids', [])
119 110 result = []
@@ -155,9 +146,6 b' class AdminProcessManagementView(BaseApp'
155 146 @LoginRequired()
156 147 @HasPermissionAllDecorator('hg.admin')
157 148 @CSRFRequired()
158 @view_config(
159 route_name='admin_settings_process_management_master_signal',
160 request_method='POST', renderer='json_ext')
161 149 def process_management_master_signal(self):
162 150 pid_data = self.request.json.get('pid_data', {})
163 151 pid = safe_int(pid_data['pid'])
@@ -25,7 +25,7 b' import formencode'
25 25 import formencode.htmlfill
26 26
27 27 from pyramid.httpexceptions import HTTPFound, HTTPForbidden
28 from pyramid.view import view_config
28
29 29 from pyramid.renderers import render
30 30 from pyramid.response import Response
31 31
@@ -96,9 +96,6 b' class AdminRepoGroupsView(BaseAppView, D'
96 96 # `repo_group_list_data` via RepoGroupList
97 97 @LoginRequired()
98 98 @NotAnonymous()
99 @view_config(
100 route_name='repo_groups', request_method='GET',
101 renderer='rhodecode:templates/admin/repo_groups/repo_groups.mako')
102 99 def repo_group_list(self):
103 100 c = self.load_default_context()
104 101 return self._get_template_context(c)
@@ -106,9 +103,6 b' class AdminRepoGroupsView(BaseAppView, D'
106 103 # permission check inside
107 104 @LoginRequired()
108 105 @NotAnonymous()
109 @view_config(
110 route_name='repo_groups_data', request_method='GET',
111 renderer='json_ext', xhr=True)
112 106 def repo_group_list_data(self):
113 107 self.load_default_context()
114 108 column_map = {
@@ -254,9 +248,6 b' class AdminRepoGroupsView(BaseAppView, D'
254 248 @LoginRequired()
255 249 @NotAnonymous()
256 250 # perm checks inside
257 @view_config(
258 route_name='repo_group_new', request_method='GET',
259 renderer='rhodecode:templates/admin/repo_groups/repo_group_add.mako')
260 251 def repo_group_new(self):
261 252 c = self.load_default_context()
262 253
@@ -296,9 +287,6 b' class AdminRepoGroupsView(BaseAppView, D'
296 287 @NotAnonymous()
297 288 @CSRFRequired()
298 289 # perm checks inside
299 @view_config(
300 route_name='repo_group_create', request_method='POST',
301 renderer='rhodecode:templates/admin/repo_groups/repo_group_add.mako')
302 290 def repo_group_create(self):
303 291 c = self.load_default_context()
304 292 _ = self.request.translate
@@ -23,7 +23,7 b' import formencode'
23 23 import formencode.htmlfill
24 24
25 25 from pyramid.httpexceptions import HTTPFound, HTTPForbidden
26 from pyramid.view import view_config
26
27 27 from pyramid.renderers import render
28 28 from pyramid.response import Response
29 29
@@ -52,7 +52,6 b' class AdminReposView(BaseAppView, DataGr'
52 52
53 53 def load_default_context(self):
54 54 c = self._get_local_tmpl_context()
55
56 55 return c
57 56
58 57 def _load_form_data(self, c):
@@ -65,9 +64,6 b' class AdminReposView(BaseAppView, DataGr'
65 64 @LoginRequired()
66 65 @NotAnonymous()
67 66 # perms check inside
68 @view_config(
69 route_name='repos', request_method='GET',
70 renderer='rhodecode:templates/admin/repos/repos.mako')
71 67 def repository_list(self):
72 68 c = self.load_default_context()
73 69 return self._get_template_context(c)
@@ -75,9 +71,6 b' class AdminReposView(BaseAppView, DataGr'
75 71 @LoginRequired()
76 72 @NotAnonymous()
77 73 # perms check inside
78 @view_config(
79 route_name='repos_data', request_method='GET',
80 renderer='json_ext', xhr=True)
81 74 def repository_list_data(self):
82 75 self.load_default_context()
83 76 column_map = {
@@ -162,9 +155,6 b' class AdminReposView(BaseAppView, DataGr'
162 155 @LoginRequired()
163 156 @NotAnonymous()
164 157 # perms check inside
165 @view_config(
166 route_name='repo_new', request_method='GET',
167 renderer='rhodecode:templates/admin/repos/repo_add.mako')
168 158 def repository_new(self):
169 159 c = self.load_default_context()
170 160
@@ -216,9 +206,6 b' class AdminReposView(BaseAppView, DataGr'
216 206 @NotAnonymous()
217 207 @CSRFRequired()
218 208 # perms check inside
219 @view_config(
220 route_name='repo_create', request_method='POST',
221 renderer='rhodecode:templates/admin/repos/repos.mako')
222 209 def repository_create(self):
223 210 c = self.load_default_context()
224 211
@@ -20,7 +20,7 b''
20 20
21 21 import logging
22 22
23 from pyramid.view import view_config
23
24 24 from pyramid.httpexceptions import HTTPFound
25 25
26 26 from rhodecode.apps._base import BaseAppView
@@ -37,17 +37,13 b' log = logging.getLogger(__name__)'
37 37
38 38
39 39 class AdminSessionSettingsView(BaseAppView):
40
40 41 def load_default_context(self):
41 42 c = self._get_local_tmpl_context()
42
43
44 43 return c
45 44
46 45 @LoginRequired()
47 46 @HasPermissionAllDecorator('hg.admin')
48 @view_config(
49 route_name='admin_settings_sessions', request_method='GET',
50 renderer='rhodecode:templates/admin/settings/settings.mako')
51 47 def settings_sessions(self):
52 48 c = self.load_default_context()
53 49
@@ -71,8 +67,6 b' class AdminSessionSettingsView(BaseAppVi'
71 67 @LoginRequired()
72 68 @HasPermissionAllDecorator('hg.admin')
73 69 @CSRFRequired()
74 @view_config(
75 route_name='admin_settings_sessions_cleanup', request_method='POST')
76 70 def settings_sessions_cleanup(self):
77 71 _ = self.request.translate
78 72 expire_days = safe_int(self.request.params.get('expire_days'))
@@ -27,7 +27,7 b' import formencode'
27 27 import formencode.htmlfill
28 28
29 29 import rhodecode
30 from pyramid.view import view_config
30
31 31 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
32 32 from pyramid.renderers import render
33 33 from pyramid.response import Response
@@ -68,7 +68,6 b' class AdminSettingsView(BaseAppView):'
68 68 c.labs_active = str2bool(
69 69 rhodecode.CONFIG.get('labs_settings_active', 'true'))
70 70 c.navlist = navigation_list(self.request)
71
72 71 return c
73 72
74 73 @classmethod
@@ -109,9 +108,6 b' class AdminSettingsView(BaseAppView):'
109 108
110 109 @LoginRequired()
111 110 @HasPermissionAllDecorator('hg.admin')
112 @view_config(
113 route_name='admin_settings_vcs', request_method='GET',
114 renderer='rhodecode:templates/admin/settings/settings.mako')
115 111 def settings_vcs(self):
116 112 c = self.load_default_context()
117 113 c.active = 'vcs'
@@ -139,9 +135,6 b' class AdminSettingsView(BaseAppView):'
139 135 @LoginRequired()
140 136 @HasPermissionAllDecorator('hg.admin')
141 137 @CSRFRequired()
142 @view_config(
143 route_name='admin_settings_vcs_update', request_method='POST',
144 renderer='rhodecode:templates/admin/settings/settings.mako')
145 138 def settings_vcs_update(self):
146 139 _ = self.request.translate
147 140 c = self.load_default_context()
@@ -207,9 +200,6 b' class AdminSettingsView(BaseAppView):'
207 200 @LoginRequired()
208 201 @HasPermissionAllDecorator('hg.admin')
209 202 @CSRFRequired()
210 @view_config(
211 route_name='admin_settings_vcs_svn_pattern_delete', request_method='POST',
212 renderer='json_ext', xhr=True)
213 203 def settings_vcs_delete_svn_pattern(self):
214 204 delete_pattern_id = self.request.POST.get('delete_svn_pattern')
215 205 model = VcsSettingsModel()
@@ -225,9 +215,6 b' class AdminSettingsView(BaseAppView):'
225 215
226 216 @LoginRequired()
227 217 @HasPermissionAllDecorator('hg.admin')
228 @view_config(
229 route_name='admin_settings_mapping', request_method='GET',
230 renderer='rhodecode:templates/admin/settings/settings.mako')
231 218 def settings_mapping(self):
232 219 c = self.load_default_context()
233 220 c.active = 'mapping'
@@ -245,9 +232,6 b' class AdminSettingsView(BaseAppView):'
245 232 @LoginRequired()
246 233 @HasPermissionAllDecorator('hg.admin')
247 234 @CSRFRequired()
248 @view_config(
249 route_name='admin_settings_mapping_update', request_method='POST',
250 renderer='rhodecode:templates/admin/settings/settings.mako')
251 235 def settings_mapping_update(self):
252 236 _ = self.request.translate
253 237 c = self.load_default_context()
@@ -274,12 +258,6 b' class AdminSettingsView(BaseAppView):'
274 258
275 259 @LoginRequired()
276 260 @HasPermissionAllDecorator('hg.admin')
277 @view_config(
278 route_name='admin_settings', request_method='GET',
279 renderer='rhodecode:templates/admin/settings/settings.mako')
280 @view_config(
281 route_name='admin_settings_global', request_method='GET',
282 renderer='rhodecode:templates/admin/settings/settings.mako')
283 261 def settings_global(self):
284 262 c = self.load_default_context()
285 263 c.active = 'global'
@@ -299,12 +277,6 b' class AdminSettingsView(BaseAppView):'
299 277 @LoginRequired()
300 278 @HasPermissionAllDecorator('hg.admin')
301 279 @CSRFRequired()
302 @view_config(
303 route_name='admin_settings_update', request_method='POST',
304 renderer='rhodecode:templates/admin/settings/settings.mako')
305 @view_config(
306 route_name='admin_settings_global_update', request_method='POST',
307 renderer='rhodecode:templates/admin/settings/settings.mako')
308 280 def settings_global_update(self):
309 281 _ = self.request.translate
310 282 c = self.load_default_context()
@@ -359,9 +331,6 b' class AdminSettingsView(BaseAppView):'
359 331
360 332 @LoginRequired()
361 333 @HasPermissionAllDecorator('hg.admin')
362 @view_config(
363 route_name='admin_settings_visual', request_method='GET',
364 renderer='rhodecode:templates/admin/settings/settings.mako')
365 334 def settings_visual(self):
366 335 c = self.load_default_context()
367 336 c.active = 'visual'
@@ -379,9 +348,6 b' class AdminSettingsView(BaseAppView):'
379 348 @LoginRequired()
380 349 @HasPermissionAllDecorator('hg.admin')
381 350 @CSRFRequired()
382 @view_config(
383 route_name='admin_settings_visual_update', request_method='POST',
384 renderer='rhodecode:templates/admin/settings/settings.mako')
385 351 def settings_visual_update(self):
386 352 _ = self.request.translate
387 353 c = self.load_default_context()
@@ -441,9 +407,6 b' class AdminSettingsView(BaseAppView):'
441 407
442 408 @LoginRequired()
443 409 @HasPermissionAllDecorator('hg.admin')
444 @view_config(
445 route_name='admin_settings_issuetracker', request_method='GET',
446 renderer='rhodecode:templates/admin/settings/settings.mako')
447 410 def settings_issuetracker(self):
448 411 c = self.load_default_context()
449 412 c.active = 'issuetracker'
@@ -470,9 +433,6 b' class AdminSettingsView(BaseAppView):'
470 433 @LoginRequired()
471 434 @HasPermissionAllDecorator('hg.admin')
472 435 @CSRFRequired()
473 @view_config(
474 route_name='admin_settings_issuetracker_test', request_method='POST',
475 renderer='string', xhr=True)
476 436 def settings_issuetracker_test(self):
477 437 error_container = []
478 438
@@ -490,9 +450,6 b' class AdminSettingsView(BaseAppView):'
490 450 @LoginRequired()
491 451 @HasPermissionAllDecorator('hg.admin')
492 452 @CSRFRequired()
493 @view_config(
494 route_name='admin_settings_issuetracker_update', request_method='POST',
495 renderer='rhodecode:templates/admin/settings/settings.mako')
496 453 def settings_issuetracker_update(self):
497 454 _ = self.request.translate
498 455 self.load_default_context()
@@ -527,9 +484,6 b' class AdminSettingsView(BaseAppView):'
527 484 @LoginRequired()
528 485 @HasPermissionAllDecorator('hg.admin')
529 486 @CSRFRequired()
530 @view_config(
531 route_name='admin_settings_issuetracker_delete', request_method='POST',
532 renderer='json_ext', xhr=True)
533 487 def settings_issuetracker_delete(self):
534 488 _ = self.request.translate
535 489 self.load_default_context()
@@ -547,9 +501,6 b' class AdminSettingsView(BaseAppView):'
547 501
548 502 @LoginRequired()
549 503 @HasPermissionAllDecorator('hg.admin')
550 @view_config(
551 route_name='admin_settings_email', request_method='GET',
552 renderer='rhodecode:templates/admin/settings/settings.mako')
553 504 def settings_email(self):
554 505 c = self.load_default_context()
555 506 c.active = 'email'
@@ -568,9 +519,6 b' class AdminSettingsView(BaseAppView):'
568 519 @LoginRequired()
569 520 @HasPermissionAllDecorator('hg.admin')
570 521 @CSRFRequired()
571 @view_config(
572 route_name='admin_settings_email_update', request_method='POST',
573 renderer='rhodecode:templates/admin/settings/settings.mako')
574 522 def settings_email_update(self):
575 523 _ = self.request.translate
576 524 c = self.load_default_context()
@@ -600,9 +548,6 b' class AdminSettingsView(BaseAppView):'
600 548
601 549 @LoginRequired()
602 550 @HasPermissionAllDecorator('hg.admin')
603 @view_config(
604 route_name='admin_settings_hooks', request_method='GET',
605 renderer='rhodecode:templates/admin/settings/settings.mako')
606 551 def settings_hooks(self):
607 552 c = self.load_default_context()
608 553 c.active = 'hooks'
@@ -624,12 +569,6 b' class AdminSettingsView(BaseAppView):'
624 569 @LoginRequired()
625 570 @HasPermissionAllDecorator('hg.admin')
626 571 @CSRFRequired()
627 @view_config(
628 route_name='admin_settings_hooks_update', request_method='POST',
629 renderer='rhodecode:templates/admin/settings/settings.mako')
630 @view_config(
631 route_name='admin_settings_hooks_delete', request_method='POST',
632 renderer='rhodecode:templates/admin/settings/settings.mako')
633 572 def settings_hooks_update(self):
634 573 _ = self.request.translate
635 574 c = self.load_default_context()
@@ -671,9 +610,6 b' class AdminSettingsView(BaseAppView):'
671 610
672 611 @LoginRequired()
673 612 @HasPermissionAllDecorator('hg.admin')
674 @view_config(
675 route_name='admin_settings_search', request_method='GET',
676 renderer='rhodecode:templates/admin/settings/settings.mako')
677 613 def settings_search(self):
678 614 c = self.load_default_context()
679 615 c.active = 'search'
@@ -685,9 +621,6 b' class AdminSettingsView(BaseAppView):'
685 621
686 622 @LoginRequired()
687 623 @HasPermissionAllDecorator('hg.admin')
688 @view_config(
689 route_name='admin_settings_automation', request_method='GET',
690 renderer='rhodecode:templates/admin/settings/settings.mako')
691 624 def settings_automation(self):
692 625 c = self.load_default_context()
693 626 c.active = 'automation'
@@ -696,9 +629,6 b' class AdminSettingsView(BaseAppView):'
696 629
697 630 @LoginRequired()
698 631 @HasPermissionAllDecorator('hg.admin')
699 @view_config(
700 route_name='admin_settings_labs', request_method='GET',
701 renderer='rhodecode:templates/admin/settings/settings.mako')
702 632 def settings_labs(self):
703 633 c = self.load_default_context()
704 634 if not c.labs_active:
@@ -720,9 +650,6 b' class AdminSettingsView(BaseAppView):'
720 650 @LoginRequired()
721 651 @HasPermissionAllDecorator('hg.admin')
722 652 @CSRFRequired()
723 @view_config(
724 route_name='admin_settings_labs_update', request_method='POST',
725 renderer='rhodecode:templates/admin/settings/settings.mako')
726 653 def settings_labs_update(self):
727 654 _ = self.request.translate
728 655 c = self.load_default_context()
@@ -20,7 +20,7 b''
20 20
21 21 import logging
22 22
23 from pyramid.view import view_config
23
24 24
25 25 from rhodecode.apps._base import BaseAppView
26 26 from rhodecode.apps.svn_support.utils import generate_mod_dav_svn_config
@@ -30,14 +30,11 b' from rhodecode.lib.auth import ('
30 30 log = logging.getLogger(__name__)
31 31
32 32
33 class SvnConfigAdminSettingsView(BaseAppView):
33 class AdminSvnConfigView(BaseAppView):
34 34
35 35 @LoginRequired()
36 36 @HasPermissionAllDecorator('hg.admin')
37 37 @CSRFRequired()
38 @view_config(
39 route_name='admin_settings_vcs_svn_generate_cfg',
40 request_method='POST', renderer='json')
41 38 def vcs_svn_generate_config(self):
42 39 _ = self.request.translate
43 40 try:
@@ -21,7 +21,7 b''
21 21 import logging
22 22 import urllib2
23 23
24 from pyramid.view import view_config
24
25 25
26 26 import rhodecode
27 27 from rhodecode.apps._base import BaseAppView
@@ -42,9 +42,6 b' class AdminSystemInfoSettingsView(BaseAp'
42 42
43 43 @LoginRequired()
44 44 @HasPermissionAllDecorator('hg.admin')
45 @view_config(
46 route_name='admin_settings_system', request_method='GET',
47 renderer='rhodecode:templates/admin/settings/settings.mako')
48 45 def settings_system_info(self):
49 46 _ = self.request.translate
50 47 c = self.load_default_context()
@@ -169,9 +166,6 b' class AdminSystemInfoSettingsView(BaseAp'
169 166
170 167 @LoginRequired()
171 168 @HasPermissionAllDecorator('hg.admin')
172 @view_config(
173 route_name='admin_settings_system_update', request_method='GET',
174 renderer='rhodecode:templates/admin/settings/settings_system_update.mako')
175 169 def settings_system_info_check_update(self):
176 170 _ = self.request.translate
177 171 c = self.load_default_context()
@@ -24,7 +24,7 b' import formencode'
24 24 import formencode.htmlfill
25 25
26 26 from pyramid.httpexceptions import HTTPFound
27 from pyramid.view import view_config
27
28 28 from pyramid.response import Response
29 29 from pyramid.renderers import render
30 30
@@ -51,19 +51,14 b' class AdminUserGroupsView(BaseAppView, D'
51 51
52 52 def load_default_context(self):
53 53 c = self._get_local_tmpl_context()
54
55 54 PermissionModel().set_global_permission_choices(
56 55 c, gettext_translator=self.request.translate)
57
58 56 return c
59 57
60 58 # permission check in data loading of
61 59 # `user_groups_list_data` via UserGroupList
62 60 @LoginRequired()
63 61 @NotAnonymous()
64 @view_config(
65 route_name='user_groups', request_method='GET',
66 renderer='rhodecode:templates/admin/user_groups/user_groups.mako')
67 62 def user_groups_list(self):
68 63 c = self.load_default_context()
69 64 return self._get_template_context(c)
@@ -71,9 +66,6 b' class AdminUserGroupsView(BaseAppView, D'
71 66 # permission check inside
72 67 @LoginRequired()
73 68 @NotAnonymous()
74 @view_config(
75 route_name='user_groups_data', request_method='GET',
76 renderer='json_ext', xhr=True)
77 69 def user_groups_list_data(self):
78 70 self.load_default_context()
79 71 column_map = {
@@ -197,9 +189,6 b' class AdminUserGroupsView(BaseAppView, D'
197 189
198 190 @LoginRequired()
199 191 @HasPermissionAnyDecorator('hg.admin', 'hg.usergroup.create.true')
200 @view_config(
201 route_name='user_groups_new', request_method='GET',
202 renderer='rhodecode:templates/admin/user_groups/user_group_add.mako')
203 192 def user_groups_new(self):
204 193 c = self.load_default_context()
205 194 return self._get_template_context(c)
@@ -207,9 +196,6 b' class AdminUserGroupsView(BaseAppView, D'
207 196 @LoginRequired()
208 197 @HasPermissionAnyDecorator('hg.admin', 'hg.usergroup.create.true')
209 198 @CSRFRequired()
210 @view_config(
211 route_name='user_groups_create', request_method='POST',
212 renderer='rhodecode:templates/admin/user_groups/user_group_add.mako')
213 199 def user_groups_create(self):
214 200 _ = self.request.translate
215 201 c = self.load_default_context()
@@ -24,7 +24,6 b' import formencode'
24 24 import formencode.htmlfill
25 25
26 26 from pyramid.httpexceptions import HTTPFound
27 from pyramid.view import view_config
28 27 from pyramid.renderers import render
29 28 from pyramid.response import Response
30 29
@@ -72,19 +71,12 b' class AdminUsersView(BaseAppView, DataGr'
72 71
73 72 @LoginRequired()
74 73 @HasPermissionAllDecorator('hg.admin')
75 @view_config(
76 route_name='users', request_method='GET',
77 renderer='rhodecode:templates/admin/users/users.mako')
78 74 def users_list(self):
79 75 c = self.load_default_context()
80 76 return self._get_template_context(c)
81 77
82 78 @LoginRequired()
83 79 @HasPermissionAllDecorator('hg.admin')
84 @view_config(
85 # renderer defined below
86 route_name='users_data', request_method='GET',
87 renderer='json_ext', xhr=True)
88 80 def users_list_data(self):
89 81 self.load_default_context()
90 82 column_map = {
@@ -183,9 +175,6 b' class AdminUsersView(BaseAppView, DataGr'
183 175
184 176 @LoginRequired()
185 177 @HasPermissionAllDecorator('hg.admin')
186 @view_config(
187 route_name='users_new', request_method='GET',
188 renderer='rhodecode:templates/admin/users/user_add.mako')
189 178 def users_new(self):
190 179 _ = self.request.translate
191 180 c = self.load_default_context()
@@ -196,9 +185,6 b' class AdminUsersView(BaseAppView, DataGr'
196 185 @LoginRequired()
197 186 @HasPermissionAllDecorator('hg.admin')
198 187 @CSRFRequired()
199 @view_config(
200 route_name='users_create', request_method='POST',
201 renderer='rhodecode:templates/admin/users/user_add.mako')
202 188 def users_create(self):
203 189 _ = self.request.translate
204 190 c = self.load_default_context()
@@ -309,9 +295,6 b' class UsersView(UserAppView):'
309 295 @LoginRequired()
310 296 @HasPermissionAllDecorator('hg.admin')
311 297 @CSRFRequired()
312 @view_config(
313 route_name='user_update', request_method='POST',
314 renderer='rhodecode:templates/admin/users/user_edit.mako')
315 298 def user_update(self):
316 299 _ = self.request.translate
317 300 c = self.load_default_context()
@@ -371,9 +354,6 b' class UsersView(UserAppView):'
371 354 @LoginRequired()
372 355 @HasPermissionAllDecorator('hg.admin')
373 356 @CSRFRequired()
374 @view_config(
375 route_name='user_delete', request_method='POST',
376 renderer='rhodecode:templates/admin/users/user_edit.mako')
377 357 def user_delete(self):
378 358 _ = self.request.translate
379 359 c = self.load_default_context()
@@ -496,9 +476,6 b' class UsersView(UserAppView):'
496 476
497 477 @LoginRequired()
498 478 @HasPermissionAllDecorator('hg.admin')
499 @view_config(
500 route_name='user_edit', request_method='GET',
501 renderer='rhodecode:templates/admin/users/user_edit.mako')
502 479 def user_edit(self):
503 480 _ = self.request.translate
504 481 c = self.load_default_context()
@@ -525,9 +502,6 b' class UsersView(UserAppView):'
525 502
526 503 @LoginRequired()
527 504 @HasPermissionAllDecorator('hg.admin')
528 @view_config(
529 route_name='user_edit_advanced', request_method='GET',
530 renderer='rhodecode:templates/admin/users/user_edit.mako')
531 505 def user_edit_advanced(self):
532 506 _ = self.request.translate
533 507 c = self.load_default_context()
@@ -584,9 +558,6 b' class UsersView(UserAppView):'
584 558
585 559 @LoginRequired()
586 560 @HasPermissionAllDecorator('hg.admin')
587 @view_config(
588 route_name='user_edit_global_perms', request_method='GET',
589 renderer='rhodecode:templates/admin/users/user_edit.mako')
590 561 def user_edit_global_perms(self):
591 562 _ = self.request.translate
592 563 c = self.load_default_context()
@@ -614,9 +585,6 b' class UsersView(UserAppView):'
614 585 @LoginRequired()
615 586 @HasPermissionAllDecorator('hg.admin')
616 587 @CSRFRequired()
617 @view_config(
618 route_name='user_edit_global_perms_update', request_method='POST',
619 renderer='rhodecode:templates/admin/users/user_edit.mako')
620 588 def user_edit_global_perms_update(self):
621 589 _ = self.request.translate
622 590 c = self.load_default_context()
@@ -682,9 +650,6 b' class UsersView(UserAppView):'
682 650 @LoginRequired()
683 651 @HasPermissionAllDecorator('hg.admin')
684 652 @CSRFRequired()
685 @view_config(
686 route_name='user_enable_force_password_reset', request_method='POST',
687 renderer='rhodecode:templates/admin/users/user_edit.mako')
688 653 def user_enable_force_password_reset(self):
689 654 _ = self.request.translate
690 655 c = self.load_default_context()
@@ -711,9 +676,6 b' class UsersView(UserAppView):'
711 676 @LoginRequired()
712 677 @HasPermissionAllDecorator('hg.admin')
713 678 @CSRFRequired()
714 @view_config(
715 route_name='user_disable_force_password_reset', request_method='POST',
716 renderer='rhodecode:templates/admin/users/user_edit.mako')
717 679 def user_disable_force_password_reset(self):
718 680 _ = self.request.translate
719 681 c = self.load_default_context()
@@ -741,9 +703,6 b' class UsersView(UserAppView):'
741 703 @LoginRequired()
742 704 @HasPermissionAllDecorator('hg.admin')
743 705 @CSRFRequired()
744 @view_config(
745 route_name='user_notice_dismiss', request_method='POST',
746 renderer='json_ext', xhr=True)
747 706 def user_notice_dismiss(self):
748 707 _ = self.request.translate
749 708 c = self.load_default_context()
@@ -767,9 +726,6 b' class UsersView(UserAppView):'
767 726 @LoginRequired()
768 727 @HasPermissionAllDecorator('hg.admin')
769 728 @CSRFRequired()
770 @view_config(
771 route_name='user_create_personal_repo_group', request_method='POST',
772 renderer='rhodecode:templates/admin/users/user_edit.mako')
773 729 def user_create_personal_repo_group(self):
774 730 """
775 731 Create personal repository group for this user
@@ -821,9 +777,6 b' class UsersView(UserAppView):'
821 777
822 778 @LoginRequired()
823 779 @HasPermissionAllDecorator('hg.admin')
824 @view_config(
825 route_name='edit_user_auth_tokens', request_method='GET',
826 renderer='rhodecode:templates/admin/users/user_edit.mako')
827 780 def auth_tokens(self):
828 781 _ = self.request.translate
829 782 c = self.load_default_context()
@@ -843,9 +796,6 b' class UsersView(UserAppView):'
843 796
844 797 @LoginRequired()
845 798 @HasPermissionAllDecorator('hg.admin')
846 @view_config(
847 route_name='edit_user_auth_tokens_view', request_method='POST',
848 renderer='json_ext', xhr=True)
849 799 def auth_tokens_view(self):
850 800 _ = self.request.translate
851 801 c = self.load_default_context()
@@ -867,8 +817,6 b' class UsersView(UserAppView):'
867 817 @LoginRequired()
868 818 @HasPermissionAllDecorator('hg.admin')
869 819 @CSRFRequired()
870 @view_config(
871 route_name='edit_user_auth_tokens_add', request_method='POST')
872 820 def auth_tokens_add(self):
873 821 _ = self.request.translate
874 822 c = self.load_default_context()
@@ -899,8 +847,6 b' class UsersView(UserAppView):'
899 847 @LoginRequired()
900 848 @HasPermissionAllDecorator('hg.admin')
901 849 @CSRFRequired()
902 @view_config(
903 route_name='edit_user_auth_tokens_delete', request_method='POST')
904 850 def auth_tokens_delete(self):
905 851 _ = self.request.translate
906 852 c = self.load_default_context()
@@ -928,9 +874,6 b' class UsersView(UserAppView):'
928 874
929 875 @LoginRequired()
930 876 @HasPermissionAllDecorator('hg.admin')
931 @view_config(
932 route_name='edit_user_ssh_keys', request_method='GET',
933 renderer='rhodecode:templates/admin/users/user_edit.mako')
934 877 def ssh_keys(self):
935 878 _ = self.request.translate
936 879 c = self.load_default_context()
@@ -943,9 +886,6 b' class UsersView(UserAppView):'
943 886
944 887 @LoginRequired()
945 888 @HasPermissionAllDecorator('hg.admin')
946 @view_config(
947 route_name='edit_user_ssh_keys_generate_keypair', request_method='GET',
948 renderer='rhodecode:templates/admin/users/user_edit.mako')
949 889 def ssh_keys_generate_keypair(self):
950 890 _ = self.request.translate
951 891 c = self.load_default_context()
@@ -964,8 +904,6 b' class UsersView(UserAppView):'
964 904 @LoginRequired()
965 905 @HasPermissionAllDecorator('hg.admin')
966 906 @CSRFRequired()
967 @view_config(
968 route_name='edit_user_ssh_keys_add', request_method='POST')
969 907 def ssh_keys_add(self):
970 908 _ = self.request.translate
971 909 c = self.load_default_context()
@@ -1017,8 +955,6 b' class UsersView(UserAppView):'
1017 955 @LoginRequired()
1018 956 @HasPermissionAllDecorator('hg.admin')
1019 957 @CSRFRequired()
1020 @view_config(
1021 route_name='edit_user_ssh_keys_delete', request_method='POST')
1022 958 def ssh_keys_delete(self):
1023 959 _ = self.request.translate
1024 960 c = self.load_default_context()
@@ -1048,9 +984,6 b' class UsersView(UserAppView):'
1048 984
1049 985 @LoginRequired()
1050 986 @HasPermissionAllDecorator('hg.admin')
1051 @view_config(
1052 route_name='edit_user_emails', request_method='GET',
1053 renderer='rhodecode:templates/admin/users/user_edit.mako')
1054 987 def emails(self):
1055 988 _ = self.request.translate
1056 989 c = self.load_default_context()
@@ -1065,8 +998,6 b' class UsersView(UserAppView):'
1065 998 @LoginRequired()
1066 999 @HasPermissionAllDecorator('hg.admin')
1067 1000 @CSRFRequired()
1068 @view_config(
1069 route_name='edit_user_emails_add', request_method='POST')
1070 1001 def emails_add(self):
1071 1002 _ = self.request.translate
1072 1003 c = self.load_default_context()
@@ -1105,8 +1036,6 b' class UsersView(UserAppView):'
1105 1036 @LoginRequired()
1106 1037 @HasPermissionAllDecorator('hg.admin')
1107 1038 @CSRFRequired()
1108 @view_config(
1109 route_name='edit_user_emails_delete', request_method='POST')
1110 1039 def emails_delete(self):
1111 1040 _ = self.request.translate
1112 1041 c = self.load_default_context()
@@ -1131,9 +1060,6 b' class UsersView(UserAppView):'
1131 1060
1132 1061 @LoginRequired()
1133 1062 @HasPermissionAllDecorator('hg.admin')
1134 @view_config(
1135 route_name='edit_user_ips', request_method='GET',
1136 renderer='rhodecode:templates/admin/users/user_edit.mako')
1137 1063 def ips(self):
1138 1064 _ = self.request.translate
1139 1065 c = self.load_default_context()
@@ -1152,8 +1078,6 b' class UsersView(UserAppView):'
1152 1078 @LoginRequired()
1153 1079 @HasPermissionAllDecorator('hg.admin')
1154 1080 @CSRFRequired()
1155 @view_config(
1156 route_name='edit_user_ips_add', request_method='POST')
1157 1081 # NOTE(marcink): this view is allowed for default users, as we can
1158 1082 # edit their IP white list
1159 1083 def ips_add(self):
@@ -1207,8 +1131,6 b' class UsersView(UserAppView):'
1207 1131 @LoginRequired()
1208 1132 @HasPermissionAllDecorator('hg.admin')
1209 1133 @CSRFRequired()
1210 @view_config(
1211 route_name='edit_user_ips_delete', request_method='POST')
1212 1134 # NOTE(marcink): this view is allowed for default users, as we can
1213 1135 # edit their IP white list
1214 1136 def ips_delete(self):
@@ -1236,9 +1158,6 b' class UsersView(UserAppView):'
1236 1158
1237 1159 @LoginRequired()
1238 1160 @HasPermissionAllDecorator('hg.admin')
1239 @view_config(
1240 route_name='edit_user_groups_management', request_method='GET',
1241 renderer='rhodecode:templates/admin/users/user_edit.mako')
1242 1161 def groups_management(self):
1243 1162 c = self.load_default_context()
1244 1163 c.user = self.db_user
@@ -1254,8 +1173,6 b' class UsersView(UserAppView):'
1254 1173 @LoginRequired()
1255 1174 @HasPermissionAllDecorator('hg.admin')
1256 1175 @CSRFRequired()
1257 @view_config(
1258 route_name='edit_user_groups_management_updates', request_method='POST')
1259 1176 def groups_management_updates(self):
1260 1177 _ = self.request.translate
1261 1178 c = self.load_default_context()
@@ -1299,9 +1216,6 b' class UsersView(UserAppView):'
1299 1216
1300 1217 @LoginRequired()
1301 1218 @HasPermissionAllDecorator('hg.admin')
1302 @view_config(
1303 route_name='edit_user_audit_logs', request_method='GET',
1304 renderer='rhodecode:templates/admin/users/user_edit.mako')
1305 1219 def user_audit_logs(self):
1306 1220 _ = self.request.translate
1307 1221 c = self.load_default_context()
@@ -1329,9 +1243,6 b' class UsersView(UserAppView):'
1329 1243
1330 1244 @LoginRequired()
1331 1245 @HasPermissionAllDecorator('hg.admin')
1332 @view_config(
1333 route_name='edit_user_audit_logs_download', request_method='GET',
1334 renderer='string')
1335 1246 def user_audit_logs_download(self):
1336 1247 _ = self.request.translate
1337 1248 c = self.load_default_context()
@@ -1352,9 +1263,6 b' class UsersView(UserAppView):'
1352 1263
1353 1264 @LoginRequired()
1354 1265 @HasPermissionAllDecorator('hg.admin')
1355 @view_config(
1356 route_name='edit_user_perms_summary', request_method='GET',
1357 renderer='rhodecode:templates/admin/users/user_edit.mako')
1358 1266 def user_perms_summary(self):
1359 1267 _ = self.request.translate
1360 1268 c = self.load_default_context()
@@ -1367,9 +1275,6 b' class UsersView(UserAppView):'
1367 1275
1368 1276 @LoginRequired()
1369 1277 @HasPermissionAllDecorator('hg.admin')
1370 @view_config(
1371 route_name='edit_user_perms_summary_json', request_method='GET',
1372 renderer='json_ext')
1373 1278 def user_perms_summary_json(self):
1374 1279 self.load_default_context()
1375 1280 perm_user = self.db_user.AuthUser(ip_addr=self.request.remote_addr)
@@ -1378,9 +1283,6 b' class UsersView(UserAppView):'
1378 1283
1379 1284 @LoginRequired()
1380 1285 @HasPermissionAllDecorator('hg.admin')
1381 @view_config(
1382 route_name='edit_user_caches', request_method='GET',
1383 renderer='rhodecode:templates/admin/users/user_edit.mako')
1384 1286 def user_caches(self):
1385 1287 _ = self.request.translate
1386 1288 c = self.load_default_context()
@@ -1399,8 +1301,6 b' class UsersView(UserAppView):'
1399 1301 @LoginRequired()
1400 1302 @HasPermissionAllDecorator('hg.admin')
1401 1303 @CSRFRequired()
1402 @view_config(
1403 route_name='edit_user_caches_update', request_method='POST')
1404 1304 def user_caches_update(self):
1405 1305 _ = self.request.translate
1406 1306 c = self.load_default_context()
@@ -67,6 +67,8 b' def maybe_create_history_store(event):'
67 67
68 68
69 69 def includeme(config):
70 from rhodecode.apps.channelstream.views import ChannelstreamView
71
70 72 settings = config.registry.settings
71 73 PLUGIN_DEFINITION['config']['enabled'] = asbool(
72 74 settings.get('channelstream.enabled'))
@@ -85,12 +87,20 b' def includeme(config):'
85 87 config.add_route(
86 88 name='channelstream_connect',
87 89 pattern=ADMIN_PREFIX + '/channelstream/connect')
90 config.add_view(
91 ChannelstreamView,
92 attr='channelstream_connect',
93 route_name='channelstream_connect', renderer='json_ext')
94
88 95 config.add_route(
89 96 name='channelstream_subscribe',
90 97 pattern=ADMIN_PREFIX + '/channelstream/subscribe')
98 config.add_view(
99 ChannelstreamView,
100 attr='channelstream_subscribe',
101 route_name='channelstream_subscribe', renderer='json_ext')
102
91 103 config.add_route(
92 104 name='channelstream_proxy',
93 105 pattern=settings.get('channelstream.proxy_path') or '/_channelstream')
94 106
95 # Scan module for configuration decorators.
96 config.scan('.views', ignore='.tests')
@@ -21,7 +21,7 b''
21 21 import logging
22 22 import uuid
23 23
24 from pyramid.view import view_config
24
25 25 from pyramid.httpexceptions import HTTPBadRequest, HTTPForbidden, HTTPBadGateway
26 26
27 27 from rhodecode.apps._base import BaseAppView
@@ -54,8 +54,7 b' class ChannelstreamView(BaseAppView):'
54 54 return c
55 55
56 56 @NotAnonymous()
57 @view_config(route_name='channelstream_connect', renderer='json_ext')
58 def connect(self):
57 def channelstream_connect(self):
59 58 """ handle authorization of users trying to connect """
60 59
61 60 self.load_default_context()
@@ -132,8 +131,7 b' class ChannelstreamView(BaseAppView):'
132 131 return connect_result
133 132
134 133 @NotAnonymous()
135 @view_config(route_name='channelstream_subscribe', renderer='json_ext')
136 def subscribe(self):
134 def channelstream_subscribe(self):
137 135 """ can be used to subscribe specific connection to other channels """
138 136 self.load_default_context()
139 137 try:
@@ -35,6 +35,8 b' class DebugStylePredicate(object):'
35 35
36 36
37 37 def includeme(config):
38 from rhodecode.apps.debug_style.views import DebugStyleView
39
38 40 config.add_route_predicate(
39 41 'debug_style', DebugStylePredicate)
40 42
@@ -42,18 +44,38 b' def includeme(config):'
42 44 name='debug_style_home',
43 45 pattern=ADMIN_PREFIX + '/debug_style',
44 46 debug_style=True)
47 config.add_view(
48 DebugStyleView,
49 attr='index',
50 route_name='debug_style_home', request_method='GET',
51 renderer=None)
52
45 53 config.add_route(
46 54 name='debug_style_email',
47 55 pattern=ADMIN_PREFIX + '/debug_style/email/{email_id}',
48 56 debug_style=True)
57 config.add_view(
58 DebugStyleView,
59 attr='render_email',
60 route_name='debug_style_email', request_method='GET',
61 renderer=None)
62
49 63 config.add_route(
50 64 name='debug_style_email_plain_rendered',
51 65 pattern=ADMIN_PREFIX + '/debug_style/email-rendered/{email_id}',
52 66 debug_style=True)
67 config.add_view(
68 DebugStyleView,
69 attr='render_email',
70 route_name='debug_style_email_plain_rendered', request_method='GET',
71 renderer=None)
72
53 73 config.add_route(
54 74 name='debug_style_template',
55 75 pattern=ADMIN_PREFIX + '/debug_style/t/{t_path}',
56 76 debug_style=True)
57
58 # Scan module for configuration decorators.
59 config.scan('.views', ignore='.tests')
77 config.add_view(
78 DebugStyleView,
79 attr='template',
80 route_name='debug_style_template', request_method='GET',
81 renderer=None)
@@ -22,7 +22,6 b' import os'
22 22 import logging
23 23 import datetime
24 24
25 from pyramid.view import view_config
26 25 from pyramid.renderers import render_to_response
27 26 from rhodecode.apps._base import BaseAppView
28 27 from rhodecode.lib.celerylib import run_task, tasks
@@ -37,12 +36,8 b' class DebugStyleView(BaseAppView):'
37 36
38 37 def load_default_context(self):
39 38 c = self._get_local_tmpl_context()
40
41 39 return c
42 40
43 @view_config(
44 route_name='debug_style_home', request_method='GET',
45 renderer=None)
46 41 def index(self):
47 42 c = self.load_default_context()
48 43 c.active = 'index'
@@ -51,12 +46,6 b' class DebugStyleView(BaseAppView):'
51 46 'debug_style/index.html', self._get_template_context(c),
52 47 request=self.request)
53 48
54 @view_config(
55 route_name='debug_style_email', request_method='GET',
56 renderer=None)
57 @view_config(
58 route_name='debug_style_email_plain_rendered', request_method='GET',
59 renderer=None)
60 49 def render_email(self):
61 50 c = self.load_default_context()
62 51 email_id = self.request.matchdict['email_id']
@@ -457,9 +446,6 b' users: description edit fixes'
457 446 template, self._get_template_context(c),
458 447 request=self.request)
459 448
460 @view_config(
461 route_name='debug_style_template', request_method='GET',
462 renderer=None)
463 449 def template(self):
464 450 t_path = self.request.matchdict['t_path']
465 451 c = self.load_default_context()
@@ -483,4 +469,3 b' users: description edit fixes'
483 469 return render_to_response(
484 470 'debug_style/' + t_path, self._get_template_context(c),
485 471 request=self.request)
486
@@ -35,18 +35,31 b' def _sanitize_settings_and_apply_default'
35 35
36 36
37 37 def includeme(config):
38 from rhodecode.apps.file_store.views import FileStoreView
39
38 40 settings = config.registry.settings
39 41 _sanitize_settings_and_apply_defaults(settings)
40 42
41 43 config.add_route(
42 44 name='upload_file',
43 45 pattern='/_file_store/upload')
46 config.add_view(
47 FileStoreView,
48 attr='upload_file',
49 route_name='upload_file', request_method='POST', renderer='json_ext')
50
44 51 config.add_route(
45 52 name='download_file',
46 53 pattern='/_file_store/download/{fid:.*}')
54 config.add_view(
55 FileStoreView,
56 attr='download_file',
57 route_name='download_file')
58
47 59 config.add_route(
48 60 name='download_file_by_token',
49 61 pattern='/_file_store/token-download/{_auth_token}/{fid:.*}')
50
51 # Scan module for configuration decorators.
52 config.scan('.views', ignore='.tests')
62 config.add_view(
63 FileStoreView,
64 attr='download_file_by_token',
65 route_name='download_file_by_token')
@@ -21,7 +21,6 b''
21 21 import os
22 22 import time
23 23 import errno
24 import shutil
25 24 import hashlib
26 25
27 26 from rhodecode.lib.ext_json import json
@@ -212,10 +211,19 b' class LocalFileStorage(object):'
212 211 filename, path = self.resolve_name(uid_filename, dest_directory)
213 212 stored_file_dir = os.path.dirname(path)
214 213
215 file_obj.seek(0)
214 no_body_seek = kwargs.pop('no_body_seek', False)
215 if no_body_seek:
216 pass
217 else:
218 file_obj.seek(0)
216 219
217 220 with open(path, "wb") as dest:
218 shutil.copyfileobj(file_obj, dest)
221 length = 256 * 1024
222 while 1:
223 buf = file_obj.read(length)
224 if not buf:
225 break
226 dest.write(buf)
219 227
220 228 metadata = {}
221 229 if extra_metadata:
@@ -19,7 +19,7 b''
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20 import logging
21 21
22 from pyramid.view import view_config
22
23 23 from pyramid.response import FileResponse
24 24 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
25 25
@@ -57,7 +57,6 b' class FileStoreView(BaseAppView):'
57 57 return _content_type, _encoding
58 58
59 59 def _serve_file(self, file_uid):
60
61 60 if not self.storage.exists(file_uid):
62 61 store_path = self.storage.store_path(file_uid)
63 62 log.debug('File with FID:%s not found in the store under `%s`',
@@ -112,13 +111,23 b' class FileStoreView(BaseAppView):'
112 111 # For file store we don't submit any session data, this logic tells the
113 112 # Session lib to skip it
114 113 setattr(self.request, '_file_response', True)
115 return FileResponse(file_path, request=self.request,
116 content_type=content_type, content_encoding=content_encoding)
114 response = FileResponse(
115 file_path, request=self.request,
116 content_type=content_type, content_encoding=content_encoding)
117
118 file_name = db_obj.file_display_name
119
120 response.headers["Content-Disposition"] = (
121 'attachment; filename="{}"'.format(str(file_name))
122 )
123 response.headers["X-RC-Artifact-Id"] = str(db_obj.file_store_id)
124 response.headers["X-RC-Artifact-Desc"] = str(db_obj.file_description)
125 response.headers["X-RC-Artifact-Sha256"] = str(db_obj.file_hash)
126 return response
117 127
118 128 @LoginRequired()
119 129 @NotAnonymous()
120 130 @CSRFRequired()
121 @view_config(route_name='upload_file', request_method='POST', renderer='json_ext')
122 131 def upload_file(self):
123 132 self.load_default_context()
124 133 file_obj = self.request.POST.get(self.upload_key)
@@ -172,7 +181,6 b' class FileStoreView(BaseAppView):'
172 181 'access_path': h.route_path('download_file', fid=store_uid)}
173 182
174 183 # ACL is checked by scopes, if no scope the file is accessible to all
175 @view_config(route_name='download_file')
176 184 def download_file(self):
177 185 self.load_default_context()
178 186 file_uid = self.request.matchdict['fid']
@@ -182,7 +190,6 b' class FileStoreView(BaseAppView):'
182 190 # in addition to @LoginRequired ACL is checked by scopes
183 191 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_ARTIFACT_DOWNLOAD])
184 192 @NotAnonymous()
185 @view_config(route_name='download_file_by_token')
186 193 def download_file_by_token(self):
187 194 """
188 195 Special view that allows to access the download file by special URL that
@@ -21,42 +21,100 b' from rhodecode.apps._base import ADMIN_P'
21 21
22 22
23 23 def admin_routes(config):
24 from rhodecode.apps.gist.views import GistView
25
24 26 config.add_route(
25 27 name='gists_show', pattern='/gists')
28 config.add_view(
29 GistView,
30 attr='gist_show_all',
31 route_name='gists_show', request_method='GET',
32 renderer='rhodecode:templates/admin/gists/gist_index.mako')
33
26 34 config.add_route(
27 35 name='gists_new', pattern='/gists/new')
36 config.add_view(
37 GistView,
38 attr='gist_new',
39 route_name='gists_new', request_method='GET',
40 renderer='rhodecode:templates/admin/gists/gist_new.mako')
41
28 42 config.add_route(
29 43 name='gists_create', pattern='/gists/create')
44 config.add_view(
45 GistView,
46 attr='gist_create',
47 route_name='gists_create', request_method='POST',
48 renderer='rhodecode:templates/admin/gists/gist_new.mako')
30 49
31 50 config.add_route(
32 51 name='gist_show', pattern='/gists/{gist_id}')
52 config.add_view(
53 GistView,
54 attr='gist_show',
55 route_name='gist_show', request_method='GET',
56 renderer='rhodecode:templates/admin/gists/gist_show.mako')
57
58 config.add_route(
59 name='gist_show_rev',
60 pattern='/gists/{gist_id}/rev/{revision}')
61
62 config.add_view(
63 GistView,
64 attr='gist_show',
65 route_name='gist_show_rev', request_method='GET',
66 renderer='rhodecode:templates/admin/gists/gist_show.mako')
67
68 config.add_route(
69 name='gist_show_formatted',
70 pattern='/gists/{gist_id}/rev/{revision}/{format}')
71 config.add_view(
72 GistView,
73 attr='gist_show',
74 route_name='gist_show_formatted', request_method='GET',
75 renderer=None)
76
77 config.add_route(
78 name='gist_show_formatted_path',
79 pattern='/gists/{gist_id}/rev/{revision}/{format}/{f_path:.*}')
80 config.add_view(
81 GistView,
82 attr='gist_show',
83 route_name='gist_show_formatted_path', request_method='GET',
84 renderer=None)
33 85
34 86 config.add_route(
35 87 name='gist_delete', pattern='/gists/{gist_id}/delete')
88 config.add_view(
89 GistView,
90 attr='gist_delete',
91 route_name='gist_delete', request_method='POST')
36 92
37 93 config.add_route(
38 94 name='gist_edit', pattern='/gists/{gist_id}/edit')
95 config.add_view(
96 GistView,
97 attr='gist_edit',
98 route_name='gist_edit', request_method='GET',
99 renderer='rhodecode:templates/admin/gists/gist_edit.mako')
100
101 config.add_route(
102 name='gist_update', pattern='/gists/{gist_id}/update')
103 config.add_view(
104 GistView,
105 attr='gist_update',
106 route_name='gist_update', request_method='POST',
107 renderer='rhodecode:templates/admin/gists/gist_edit.mako')
39 108
40 109 config.add_route(
41 110 name='gist_edit_check_revision',
42 111 pattern='/gists/{gist_id}/edit/check_revision')
43
44 config.add_route(
45 name='gist_update', pattern='/gists/{gist_id}/update')
46
47 config.add_route(
48 name='gist_show_rev',
49 pattern='/gists/{gist_id}/{revision}')
50 config.add_route(
51 name='gist_show_formatted',
52 pattern='/gists/{gist_id}/{revision}/{format}')
53
54 config.add_route(
55 name='gist_show_formatted_path',
56 pattern='/gists/{gist_id}/{revision}/{format}/{f_path:.*}')
112 config.add_view(
113 GistView,
114 attr='gist_edit_check_revision',
115 route_name='gist_edit_check_revision', request_method='GET',
116 renderer='json_ext')
57 117
58 118
59 119 def includeme(config):
60 120 config.include(admin_routes, route_prefix=ADMIN_PREFIX)
61 # Scan module for configuration decorators.
62 config.scan('.views', ignore='.tests')
@@ -43,9 +43,9 b' def route_path(name, params=None, **kwar'
43 43 'gist_edit': ADMIN_PREFIX + '/gists/{gist_id}/edit',
44 44 'gist_edit_check_revision': ADMIN_PREFIX + '/gists/{gist_id}/edit/check_revision',
45 45 'gist_update': ADMIN_PREFIX + '/gists/{gist_id}/update',
46 'gist_show_rev': ADMIN_PREFIX + '/gists/{gist_id}/{revision}',
47 'gist_show_formatted': ADMIN_PREFIX + '/gists/{gist_id}/{revision}/{format}',
48 'gist_show_formatted_path': ADMIN_PREFIX + '/gists/{gist_id}/{revision}/{format}/{f_path}',
46 'gist_show_rev': ADMIN_PREFIX + '/gists/{gist_id}/rev/{revision}',
47 'gist_show_formatted': ADMIN_PREFIX + '/gists/{gist_id}/rev/{revision}/{format}',
48 'gist_show_formatted_path': ADMIN_PREFIX + '/gists/{gist_id}/rev/{revision}/{format}/{f_path}',
49 49
50 50 }[name].format(**kwargs)
51 51
@@ -26,7 +26,6 b' import formencode.htmlfill'
26 26 import peppercorn
27 27
28 28 from pyramid.httpexceptions import HTTPNotFound, HTTPFound, HTTPBadRequest
29 from pyramid.view import view_config
30 29 from pyramid.renderers import render
31 30 from pyramid.response import Response
32 31
@@ -70,9 +69,6 b' class GistView(BaseAppView):'
70 69 return c
71 70
72 71 @LoginRequired()
73 @view_config(
74 route_name='gists_show', request_method='GET',
75 renderer='rhodecode:templates/admin/gists/gist_index.mako')
76 72 def gist_show_all(self):
77 73 c = self.load_default_context()
78 74
@@ -134,9 +130,6 b' class GistView(BaseAppView):'
134 130
135 131 @LoginRequired()
136 132 @NotAnonymous()
137 @view_config(
138 route_name='gists_new', request_method='GET',
139 renderer='rhodecode:templates/admin/gists/gist_new.mako')
140 133 def gist_new(self):
141 134 c = self.load_default_context()
142 135 return self._get_template_context(c)
@@ -144,9 +137,6 b' class GistView(BaseAppView):'
144 137 @LoginRequired()
145 138 @NotAnonymous()
146 139 @CSRFRequired()
147 @view_config(
148 route_name='gists_create', request_method='POST',
149 renderer='rhodecode:templates/admin/gists/gist_new.mako')
150 140 def gist_create(self):
151 141 _ = self.request.translate
152 142 c = self.load_default_context()
@@ -222,8 +212,6 b' class GistView(BaseAppView):'
222 212 @LoginRequired()
223 213 @NotAnonymous()
224 214 @CSRFRequired()
225 @view_config(
226 route_name='gist_delete', request_method='POST')
227 215 def gist_delete(self):
228 216 _ = self.request.translate
229 217 gist_id = self.request.matchdict['gist_id']
@@ -263,18 +251,6 b' class GistView(BaseAppView):'
263 251 return gist
264 252
265 253 @LoginRequired()
266 @view_config(
267 route_name='gist_show', request_method='GET',
268 renderer='rhodecode:templates/admin/gists/gist_show.mako')
269 @view_config(
270 route_name='gist_show_rev', request_method='GET',
271 renderer='rhodecode:templates/admin/gists/gist_show.mako')
272 @view_config(
273 route_name='gist_show_formatted', request_method='GET',
274 renderer=None)
275 @view_config(
276 route_name='gist_show_formatted_path', request_method='GET',
277 renderer=None)
278 254 def gist_show(self):
279 255 gist_id = self.request.matchdict['gist_id']
280 256
@@ -307,9 +283,6 b' class GistView(BaseAppView):'
307 283
308 284 @LoginRequired()
309 285 @NotAnonymous()
310 @view_config(
311 route_name='gist_edit', request_method='GET',
312 renderer='rhodecode:templates/admin/gists/gist_edit.mako')
313 286 def gist_edit(self):
314 287 _ = self.request.translate
315 288 gist_id = self.request.matchdict['gist_id']
@@ -341,9 +314,6 b' class GistView(BaseAppView):'
341 314 @LoginRequired()
342 315 @NotAnonymous()
343 316 @CSRFRequired()
344 @view_config(
345 route_name='gist_update', request_method='POST',
346 renderer='rhodecode:templates/admin/gists/gist_edit.mako')
347 317 def gist_update(self):
348 318 _ = self.request.translate
349 319 gist_id = self.request.matchdict['gist_id']
@@ -397,9 +367,6 b' class GistView(BaseAppView):'
397 367
398 368 @LoginRequired()
399 369 @NotAnonymous()
400 @view_config(
401 route_name='gist_edit_check_revision', request_method='GET',
402 renderer='json_ext')
403 370 def gist_edit_check_revision(self):
404 371 _ = self.request.translate
405 372 gist_id = self.request.matchdict['gist_id']
@@ -38,56 +38,110 b' class VCSCallPredicate(object):'
38 38
39 39
40 40 def includeme(config):
41 from rhodecode.apps.home.views import HomeView
42
43 config.add_route_predicate(
44 'skip_vcs_call', VCSCallPredicate)
41 45
42 46 config.add_route(
43 47 name='home',
44 48 pattern='/')
49 config.add_view(
50 HomeView,
51 attr='main_page',
52 route_name='home', request_method='GET',
53 renderer='rhodecode:templates/index.mako')
45 54
46 55 config.add_route(
47 56 name='main_page_repos_data',
48 57 pattern='/_home_repos')
58 config.add_view(
59 HomeView,
60 attr='main_page_repos_data',
61 route_name='main_page_repos_data',
62 request_method='GET', renderer='json_ext', xhr=True)
49 63
50 64 config.add_route(
51 65 name='main_page_repo_groups_data',
52 66 pattern='/_home_repo_groups')
67 config.add_view(
68 HomeView,
69 attr='main_page_repo_groups_data',
70 route_name='main_page_repo_groups_data',
71 request_method='GET', renderer='json_ext', xhr=True)
53 72
54 73 config.add_route(
55 74 name='user_autocomplete_data',
56 75 pattern='/_users')
76 config.add_view(
77 HomeView,
78 attr='user_autocomplete_data',
79 route_name='user_autocomplete_data', request_method='GET',
80 renderer='json_ext', xhr=True)
57 81
58 82 config.add_route(
59 83 name='user_group_autocomplete_data',
60 84 pattern='/_user_groups')
85 config.add_view(
86 HomeView,
87 attr='user_group_autocomplete_data',
88 route_name='user_group_autocomplete_data', request_method='GET',
89 renderer='json_ext', xhr=True)
61 90
62 91 config.add_route(
63 92 name='repo_list_data',
64 93 pattern='/_repos')
94 config.add_view(
95 HomeView,
96 attr='repo_list_data',
97 route_name='repo_list_data', request_method='GET',
98 renderer='json_ext', xhr=True)
65 99
66 100 config.add_route(
67 101 name='repo_group_list_data',
68 102 pattern='/_repo_groups')
103 config.add_view(
104 HomeView,
105 attr='repo_group_list_data',
106 route_name='repo_group_list_data', request_method='GET',
107 renderer='json_ext', xhr=True)
69 108
70 109 config.add_route(
71 110 name='goto_switcher_data',
72 111 pattern='/_goto_data')
112 config.add_view(
113 HomeView,
114 attr='goto_switcher_data',
115 route_name='goto_switcher_data', request_method='GET',
116 renderer='json_ext', xhr=True)
73 117
74 118 config.add_route(
75 119 name='markup_preview',
76 120 pattern='/_markup_preview')
121 config.add_view(
122 HomeView,
123 attr='markup_preview',
124 route_name='markup_preview', request_method='POST',
125 renderer='string', xhr=True)
77 126
78 127 config.add_route(
79 128 name='file_preview',
80 129 pattern='/_file_preview')
130 config.add_view(
131 HomeView,
132 attr='file_preview',
133 route_name='file_preview', request_method='POST',
134 renderer='string', xhr=True)
81 135
82 136 config.add_route(
83 137 name='store_user_session_value',
84 138 pattern='/_store_session_attr')
139 config.add_view(
140 HomeView,
141 attr='store_user_session_attr',
142 route_name='store_user_session_value', request_method='POST',
143 renderer='string', xhr=True)
85 144
86 145 # register our static links via redirection mechanism
87 146 routing_links.connect_redirection_links(config)
88 147
89 # Scan module for configuration decorators.
90 config.scan('.views', ignore='.tests')
91
92 config.add_route_predicate(
93 'skip_vcs_call', VCSCallPredicate)
@@ -23,7 +23,6 b' import logging'
23 23 import collections
24 24
25 25 from pyramid.httpexceptions import HTTPNotFound
26 from pyramid.view import view_config
27 26
28 27 from rhodecode.apps._base import BaseAppView, DataGridAppView
29 28 from rhodecode.lib import helpers as h
@@ -50,13 +49,9 b' class HomeView(BaseAppView, DataGridAppV'
50 49 def load_default_context(self):
51 50 c = self._get_local_tmpl_context()
52 51 c.user = c.auth_user.get_instance()
53
54 52 return c
55 53
56 54 @LoginRequired()
57 @view_config(
58 route_name='user_autocomplete_data', request_method='GET',
59 renderer='json_ext', xhr=True)
60 55 def user_autocomplete_data(self):
61 56 self.load_default_context()
62 57 query = self.request.GET.get('query')
@@ -88,9 +83,6 b' class HomeView(BaseAppView, DataGridAppV'
88 83
89 84 @LoginRequired()
90 85 @NotAnonymous()
91 @view_config(
92 route_name='user_group_autocomplete_data', request_method='GET',
93 renderer='json_ext', xhr=True)
94 86 def user_group_autocomplete_data(self):
95 87 self.load_default_context()
96 88 query = self.request.GET.get('query')
@@ -434,9 +426,6 b' class HomeView(BaseAppView, DataGridAppV'
434 426 return files, True
435 427
436 428 @LoginRequired()
437 @view_config(
438 route_name='repo_list_data', request_method='GET',
439 renderer='json_ext', xhr=True)
440 429 def repo_list_data(self):
441 430 _ = self.request.translate
442 431 self.load_default_context()
@@ -461,9 +450,6 b' class HomeView(BaseAppView, DataGridAppV'
461 450 return data
462 451
463 452 @LoginRequired()
464 @view_config(
465 route_name='repo_group_list_data', request_method='GET',
466 renderer='json_ext', xhr=True)
467 453 def repo_group_list_data(self):
468 454 _ = self.request.translate
469 455 self.load_default_context()
@@ -619,9 +605,6 b' class HomeView(BaseAppView, DataGridAppV'
619 605 return queries
620 606
621 607 @LoginRequired()
622 @view_config(
623 route_name='goto_switcher_data', request_method='GET',
624 renderer='json_ext', xhr=True)
625 608 def goto_switcher_data(self):
626 609 c = self.load_default_context()
627 610
@@ -750,9 +733,6 b' class HomeView(BaseAppView, DataGridAppV'
750 733 return {'suggestions': res}
751 734
752 735 @LoginRequired()
753 @view_config(
754 route_name='home', request_method='GET',
755 renderer='rhodecode:templates/index.mako')
756 736 def main_page(self):
757 737 c = self.load_default_context()
758 738 c.repo_group = None
@@ -789,9 +769,6 b' class HomeView(BaseAppView, DataGridAppV'
789 769 self._rhodecode_user, repo_group_id)
790 770
791 771 @LoginRequired()
792 @view_config(
793 route_name='main_page_repo_groups_data',
794 request_method='GET', renderer='json_ext', xhr=True)
795 772 def main_page_repo_groups_data(self):
796 773 self.load_default_context()
797 774 repo_group_id = safe_int(self.request.GET.get('repo_group_id'))
@@ -806,9 +783,6 b' class HomeView(BaseAppView, DataGridAppV'
806 783 return self._main_page_repo_groups_data(repo_group_id)
807 784
808 785 @LoginRequired()
809 @view_config(
810 route_name='main_page_repos_data',
811 request_method='GET', renderer='json_ext', xhr=True)
812 786 def main_page_repos_data(self):
813 787 self.load_default_context()
814 788 repo_group_id = safe_int(self.request.GET.get('repo_group_id'))
@@ -824,12 +798,6 b' class HomeView(BaseAppView, DataGridAppV'
824 798
825 799 @LoginRequired()
826 800 @HasRepoGroupPermissionAnyDecorator(*AuthUser.repo_group_read_perms)
827 @view_config(
828 route_name='repo_group_home', request_method='GET',
829 renderer='rhodecode:templates/index_repo_group.mako')
830 @view_config(
831 route_name='repo_group_home_slash', request_method='GET',
832 renderer='rhodecode:templates/index_repo_group.mako')
833 801 def repo_group_main_page(self):
834 802 c = self.load_default_context()
835 803 c.repo_group = self.request.db_repo_group
@@ -837,9 +805,6 b' class HomeView(BaseAppView, DataGridAppV'
837 805
838 806 @LoginRequired()
839 807 @CSRFRequired()
840 @view_config(
841 route_name='markup_preview', request_method='POST',
842 renderer='string', xhr=True)
843 808 def markup_preview(self):
844 809 # Technically a CSRF token is not needed as no state changes with this
845 810 # call. However, as this is a POST is better to have it, so automated
@@ -855,9 +820,6 b' class HomeView(BaseAppView, DataGridAppV'
855 820
856 821 @LoginRequired()
857 822 @CSRFRequired()
858 @view_config(
859 route_name='file_preview', request_method='POST',
860 renderer='string', xhr=True)
861 823 def file_preview(self):
862 824 # Technically a CSRF token is not needed as no state changes with this
863 825 # call. However, as this is a POST is better to have it, so automated
@@ -883,9 +845,6 b' class HomeView(BaseAppView, DataGridAppV'
883 845
884 846 @LoginRequired()
885 847 @CSRFRequired()
886 @view_config(
887 route_name='store_user_session_value', request_method='POST',
888 renderer='string', xhr=True)
889 848 def store_user_session_attr(self):
890 849 key = self.request.POST.get('key')
891 850 val = self.request.POST.get('val')
@@ -20,26 +20,48 b''
20 20
21 21
22 22 def includeme(config):
23
23 from rhodecode.apps.hovercards.views import HoverCardsView, HoverCardsRepoView
24 24 config.add_route(
25 25 name='hovercard_user',
26 26 pattern='/_hovercard/user/{user_id}')
27 config.add_view(
28 HoverCardsView,
29 attr='hovercard_user',
30 route_name='hovercard_user', request_method='GET', xhr=True,
31 renderer='rhodecode:templates/hovercards/hovercard_user.mako')
27 32
28 33 config.add_route(
29 34 name='hovercard_username',
30 35 pattern='/_hovercard/username/{username}')
36 config.add_view(
37 HoverCardsView,
38 attr='hovercard_username',
39 route_name='hovercard_username', request_method='GET', xhr=True,
40 renderer='rhodecode:templates/hovercards/hovercard_user.mako')
31 41
32 42 config.add_route(
33 43 name='hovercard_user_group',
34 44 pattern='/_hovercard/user_group/{user_group_id}')
45 config.add_view(
46 HoverCardsView,
47 attr='hovercard_user_group',
48 route_name='hovercard_user_group', request_method='GET', xhr=True,
49 renderer='rhodecode:templates/hovercards/hovercard_user_group.mako')
35 50
36 51 config.add_route(
37 52 name='hovercard_pull_request',
38 53 pattern='/_hovercard/pull_request/{pull_request_id}')
54 config.add_view(
55 HoverCardsView,
56 attr='hovercard_pull_request',
57 route_name='hovercard_pull_request', request_method='GET', xhr=True,
58 renderer='rhodecode:templates/hovercards/hovercard_pull_request.mako')
39 59
40 60 config.add_route(
41 61 name='hovercard_repo_commit',
42 62 pattern='/_hovercard/commit/{repo_name:.*?[^/]}/{commit_id}', repo_route=True)
43
44 # Scan module for configuration decorators.
45 config.scan('.views', ignore='.tests')
63 config.add_view(
64 HoverCardsRepoView,
65 attr='hovercard_repo_commit',
66 route_name='hovercard_repo_commit', request_method='GET', xhr=True,
67 renderer='rhodecode:templates/hovercards/hovercard_repo_commit.mako')
@@ -23,7 +23,7 b' import logging'
23 23 import collections
24 24
25 25 from pyramid.httpexceptions import HTTPNotFound
26 from pyramid.view import view_config
26
27 27
28 28 from rhodecode.apps._base import BaseAppView, RepoAppView
29 29 from rhodecode.lib import helpers as h
@@ -54,9 +54,6 b' class HoverCardsView(BaseAppView):'
54 54 return c
55 55
56 56 @LoginRequired()
57 @view_config(
58 route_name='hovercard_user', request_method='GET', xhr=True,
59 renderer='rhodecode:templates/hovercards/hovercard_user.mako')
60 57 def hovercard_user(self):
61 58 c = self.load_default_context()
62 59 user_id = self.request.matchdict['user_id']
@@ -64,9 +61,6 b' class HoverCardsView(BaseAppView):'
64 61 return self._get_template_context(c)
65 62
66 63 @LoginRequired()
67 @view_config(
68 route_name='hovercard_username', request_method='GET', xhr=True,
69 renderer='rhodecode:templates/hovercards/hovercard_user.mako')
70 64 def hovercard_username(self):
71 65 c = self.load_default_context()
72 66 username = self.request.matchdict['username']
@@ -77,9 +71,6 b' class HoverCardsView(BaseAppView):'
77 71 return self._get_template_context(c)
78 72
79 73 @LoginRequired()
80 @view_config(
81 route_name='hovercard_user_group', request_method='GET', xhr=True,
82 renderer='rhodecode:templates/hovercards/hovercard_user_group.mako')
83 74 def hovercard_user_group(self):
84 75 c = self.load_default_context()
85 76 user_group_id = self.request.matchdict['user_group_id']
@@ -87,9 +78,6 b' class HoverCardsView(BaseAppView):'
87 78 return self._get_template_context(c)
88 79
89 80 @LoginRequired()
90 @view_config(
91 route_name='hovercard_pull_request', request_method='GET', xhr=True,
92 renderer='rhodecode:templates/hovercards/hovercard_pull_request.mako')
93 81 def hovercard_pull_request(self):
94 82 c = self.load_default_context()
95 83 c.pull_request = PullRequest.get_or_404(
@@ -107,9 +95,6 b' class HoverCardsRepoView(RepoAppView):'
107 95
108 96 @LoginRequired()
109 97 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', 'repository.admin')
110 @view_config(
111 route_name='hovercard_repo_commit', request_method='GET', xhr=True,
112 renderer='rhodecode:templates/hovercards/hovercard_repo_commit.mako')
113 98 def hovercard_repo_commit(self):
114 99 c = self.load_default_context()
115 100 commit_id = self.request.matchdict['commit_id']
@@ -23,31 +23,80 b' from rhodecode.apps._base import ADMIN_P'
23 23
24 24
25 25 def admin_routes(config):
26 from rhodecode.apps.journal.views import JournalView
26 27
27 28 config.add_route(
28 29 name='journal', pattern='/journal')
30 config.add_view(
31 JournalView,
32 attr='journal',
33 route_name='journal', request_method='GET',
34 renderer=None)
35
29 36 config.add_route(
30 37 name='journal_rss', pattern='/journal/rss')
38 config.add_view(
39 JournalView,
40 attr='journal_rss',
41 route_name='journal_rss', request_method='GET',
42 renderer=None)
43
31 44 config.add_route(
32 45 name='journal_atom', pattern='/journal/atom')
46 config.add_view(
47 JournalView,
48 attr='journal_atom',
49 route_name='journal_atom', request_method='GET',
50 renderer=None)
33 51
34 52 config.add_route(
35 53 name='journal_public', pattern='/public_journal')
54 config.add_view(
55 JournalView,
56 attr='journal_public',
57 route_name='journal_public', request_method='GET',
58 renderer=None)
59
36 60 config.add_route(
37 61 name='journal_public_atom', pattern='/public_journal/atom')
62 config.add_view(
63 JournalView,
64 attr='journal_public_atom',
65 route_name='journal_public_atom', request_method='GET',
66 renderer=None)
67
38 68 config.add_route(
39 69 name='journal_public_atom_old', pattern='/public_journal_atom')
70 config.add_view(
71 JournalView,
72 attr='journal_public_atom',
73 route_name='journal_public_atom_old', request_method='GET',
74 renderer=None)
40 75
41 76 config.add_route(
42 77 name='journal_public_rss', pattern='/public_journal/rss')
78 config.add_view(
79 JournalView,
80 attr='journal_public_rss',
81 route_name='journal_public_rss', request_method='GET',
82 renderer=None)
83
43 84 config.add_route(
44 85 name='journal_public_rss_old', pattern='/public_journal_rss')
86 config.add_view(
87 JournalView,
88 attr='journal_public_rss',
89 route_name='journal_public_rss_old', request_method='GET',
90 renderer=None)
45 91
46 92 config.add_route(
47 93 name='toggle_following', pattern='/toggle_following')
94 config.add_view(
95 JournalView,
96 attr='toggle_following',
97 route_name='toggle_following', request_method='POST',
98 renderer='json_ext')
48 99
49 100
50 101 def includeme(config):
51 102 config.include(admin_routes, route_prefix=ADMIN_PREFIX)
52 # Scan module for configuration decorators.
53 config.scan('.views', ignore='.tests')
@@ -18,13 +18,9 b''
18 18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20
21
22 21 import logging
23 22 import itertools
24 23
25
26
27 from pyramid.view import view_config
28 24 from pyramid.httpexceptions import HTTPBadRequest
29 25 from pyramid.response import Response
30 26 from pyramid.renderers import render
@@ -218,9 +214,6 b' class JournalView(BaseAppView):'
218 214
219 215 @LoginRequired()
220 216 @NotAnonymous()
221 @view_config(
222 route_name='journal', request_method='GET',
223 renderer=None)
224 217 def journal(self):
225 218 c = self.load_default_context()
226 219
@@ -258,9 +251,6 b' class JournalView(BaseAppView):'
258 251
259 252 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
260 253 @NotAnonymous()
261 @view_config(
262 route_name='journal_atom', request_method='GET',
263 renderer=None)
264 254 def journal_atom(self):
265 255 """
266 256 Produce an atom-1.0 feed via feedgenerator module
@@ -274,9 +264,6 b' class JournalView(BaseAppView):'
274 264
275 265 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
276 266 @NotAnonymous()
277 @view_config(
278 route_name='journal_rss', request_method='GET',
279 renderer=None)
280 267 def journal_rss(self):
281 268 """
282 269 Produce an rss feed via feedgenerator module
@@ -289,39 +276,6 b' class JournalView(BaseAppView):'
289 276 return self._rss_feed(following_repos, c.search_term, public=False)
290 277
291 278 @LoginRequired()
292 @NotAnonymous()
293 @CSRFRequired()
294 @view_config(
295 route_name='toggle_following', request_method='POST',
296 renderer='json_ext')
297 def toggle_following(self):
298 user_id = self.request.POST.get('follows_user_id')
299 if user_id:
300 try:
301 ScmModel().toggle_following_user(user_id, self._rhodecode_user.user_id)
302 Session().commit()
303 return 'ok'
304 except Exception:
305 raise HTTPBadRequest()
306
307 repo_id = self.request.POST.get('follows_repo_id')
308 repo = Repository.get_or_404(repo_id)
309 perm_set = ['repository.read', 'repository.write', 'repository.admin']
310 has_perm = HasRepoPermissionAny(*perm_set)(repo.repo_name, 'RepoWatch check')
311 if repo and has_perm:
312 try:
313 ScmModel().toggle_following_repo(repo_id, self._rhodecode_user.user_id)
314 Session().commit()
315 return 'ok'
316 except Exception:
317 raise HTTPBadRequest()
318
319 raise HTTPBadRequest()
320
321 @LoginRequired()
322 @view_config(
323 route_name='journal_public', request_method='GET',
324 renderer=None)
325 279 def journal_public(self):
326 280 c = self.load_default_context()
327 281 # Return a rendered template
@@ -357,9 +311,6 b' class JournalView(BaseAppView):'
357 311 return Response(html)
358 312
359 313 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
360 @view_config(
361 route_name='journal_public_atom', request_method='GET',
362 renderer=None)
363 314 def journal_public_atom(self):
364 315 """
365 316 Produce an atom-1.0 feed via feedgenerator module
@@ -373,9 +324,6 b' class JournalView(BaseAppView):'
373 324 return self._atom_feed(following_repos, c.search_term)
374 325
375 326 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
376 @view_config(
377 route_name='journal_public_rss', request_method='GET',
378 renderer=None)
379 327 def journal_public_rss(self):
380 328 """
381 329 Produce an rss2 feed via feedgenerator module
@@ -387,3 +335,30 b' class JournalView(BaseAppView):'
387 335 .all()
388 336
389 337 return self._rss_feed(following_repos, c.search_term)
338
339 @LoginRequired()
340 @NotAnonymous()
341 @CSRFRequired()
342 def toggle_following(self):
343 user_id = self.request.POST.get('follows_user_id')
344 if user_id:
345 try:
346 ScmModel().toggle_following_user(user_id, self._rhodecode_user.user_id)
347 Session().commit()
348 return 'ok'
349 except Exception:
350 raise HTTPBadRequest()
351
352 repo_id = self.request.POST.get('follows_repo_id')
353 repo = Repository.get_or_404(repo_id)
354 perm_set = ['repository.read', 'repository.write', 'repository.admin']
355 has_perm = HasRepoPermissionAny(*perm_set)(repo.repo_name, 'RepoWatch check')
356 if repo and has_perm:
357 try:
358 ScmModel().toggle_following_repo(repo_id, self._rhodecode_user.user_id)
359 Session().commit()
360 return 'ok'
361 except Exception:
362 raise HTTPBadRequest()
363
364 raise HTTPBadRequest()
@@ -23,22 +23,57 b' from rhodecode.apps._base import ADMIN_P'
23 23
24 24
25 25 def includeme(config):
26
26 from rhodecode.apps.login.views import LoginView
27
27 28 config.add_route(
28 29 name='login',
29 30 pattern=ADMIN_PREFIX + '/login')
31 config.add_view(
32 LoginView,
33 attr='login',
34 route_name='login', request_method='GET',
35 renderer='rhodecode:templates/login.mako')
36 config.add_view(
37 LoginView,
38 attr='login_post',
39 route_name='login', request_method='POST',
40 renderer='rhodecode:templates/login.mako')
41
30 42 config.add_route(
31 43 name='logout',
32 44 pattern=ADMIN_PREFIX + '/logout')
45 config.add_view(
46 LoginView,
47 attr='logout',
48 route_name='logout', request_method='POST')
49
33 50 config.add_route(
34 51 name='register',
35 52 pattern=ADMIN_PREFIX + '/register')
53 config.add_view(
54 LoginView,
55 attr='register',
56 route_name='register', request_method='GET',
57 renderer='rhodecode:templates/register.mako')
58 config.add_view(
59 LoginView,
60 attr='register_post',
61 route_name='register', request_method='POST',
62 renderer='rhodecode:templates/register.mako')
63
36 64 config.add_route(
37 65 name='reset_password',
38 66 pattern=ADMIN_PREFIX + '/password_reset')
67 config.add_view(
68 LoginView,
69 attr='password_reset',
70 route_name='reset_password', request_method=('GET', 'POST'),
71 renderer='rhodecode:templates/password_reset.mako')
72
39 73 config.add_route(
40 74 name='reset_password_confirmation',
41 75 pattern=ADMIN_PREFIX + '/password_reset_confirmation')
42
43 # Scan module for configuration decorators.
44 config.scan('.views', ignore='.tests')
76 config.add_view(
77 LoginView,
78 attr='password_reset_confirmation',
79 route_name='reset_password_confirmation', request_method='GET')
@@ -28,7 +28,7 b' import urlparse'
28 28 import requests
29 29
30 30 from pyramid.httpexceptions import HTTPFound
31 from pyramid.view import view_config
31
32 32
33 33 from rhodecode.apps._base import BaseAppView
34 34 from rhodecode.authentication.base import authenticate, HTTP_TYPE
@@ -114,7 +114,6 b' class LoginView(BaseAppView):'
114 114 def load_default_context(self):
115 115 c = self._get_local_tmpl_context()
116 116 c.came_from = get_came_from(self.request)
117
118 117 return c
119 118
120 119 def _get_captcha_data(self):
@@ -148,9 +147,6 b' class LoginView(BaseAppView):'
148 147
149 148 return captcha_status, captcha_message
150 149
151 @view_config(
152 route_name='login', request_method='GET',
153 renderer='rhodecode:templates/login.mako')
154 150 def login(self):
155 151 c = self.load_default_context()
156 152 auth_user = self._rhodecode_user
@@ -175,9 +171,6 b' class LoginView(BaseAppView):'
175 171
176 172 return self._get_template_context(c)
177 173
178 @view_config(
179 route_name='login', request_method='POST',
180 renderer='rhodecode:templates/login.mako')
181 174 def login_post(self):
182 175 c = self.load_default_context()
183 176
@@ -229,7 +222,6 b' class LoginView(BaseAppView):'
229 222 return self._get_template_context(c)
230 223
231 224 @CSRFRequired()
232 @view_config(route_name='logout', request_method='POST')
233 225 def logout(self):
234 226 auth_user = self._rhodecode_user
235 227 log.info('Deleting session for user: `%s`', auth_user)
@@ -243,9 +235,6 b' class LoginView(BaseAppView):'
243 235
244 236 @HasPermissionAnyDecorator(
245 237 'hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate')
246 @view_config(
247 route_name='register', request_method='GET',
248 renderer='rhodecode:templates/register.mako',)
249 238 def register(self, defaults=None, errors=None):
250 239 c = self.load_default_context()
251 240 defaults = defaults or {}
@@ -270,9 +259,6 b' class LoginView(BaseAppView):'
270 259
271 260 @HasPermissionAnyDecorator(
272 261 'hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate')
273 @view_config(
274 route_name='register', request_method='POST',
275 renderer='rhodecode:templates/register.mako')
276 262 def register_post(self):
277 263 from rhodecode.authentication.plugins import auth_rhodecode
278 264
@@ -353,9 +339,6 b' class LoginView(BaseAppView):'
353 339 h.flash(e, category='error')
354 340 return self.register()
355 341
356 @view_config(
357 route_name='reset_password', request_method=('GET', 'POST'),
358 renderer='rhodecode:templates/password_reset.mako')
359 342 def password_reset(self):
360 343 c = self.load_default_context()
361 344 captcha = self._get_captcha_data()
@@ -454,8 +437,6 b' class LoginView(BaseAppView):'
454 437
455 438 return self._get_template_context(c, **template_context)
456 439
457 @view_config(route_name='reset_password_confirmation',
458 request_method='GET')
459 440 def password_reset_confirmation(self):
460 441 self.load_default_context()
461 442 if self.request.GET and self.request.GET.get('key'):
@@ -23,138 +23,311 b' from rhodecode.apps._base import ADMIN_P'
23 23
24 24
25 25 def includeme(config):
26 from rhodecode.apps.my_account.views.my_account import MyAccountView
27 from rhodecode.apps.my_account.views.my_account_notifications import MyAccountNotificationsView
28 from rhodecode.apps.my_account.views.my_account_ssh_keys import MyAccountSshKeysView
26 29
27 30 config.add_route(
28 31 name='my_account_profile',
29 32 pattern=ADMIN_PREFIX + '/my_account/profile')
33 config.add_view(
34 MyAccountView,
35 attr='my_account_profile',
36 route_name='my_account_profile', request_method='GET',
37 renderer='rhodecode:templates/admin/my_account/my_account.mako')
30 38
31 39 # my account edit details
32 40 config.add_route(
33 41 name='my_account_edit',
34 42 pattern=ADMIN_PREFIX + '/my_account/edit')
43 config.add_view(
44 MyAccountView,
45 attr='my_account_edit',
46 route_name='my_account_edit',
47 request_method='GET',
48 renderer='rhodecode:templates/admin/my_account/my_account.mako')
49
35 50 config.add_route(
36 51 name='my_account_update',
37 52 pattern=ADMIN_PREFIX + '/my_account/update')
53 config.add_view(
54 MyAccountView,
55 attr='my_account_update',
56 route_name='my_account_update',
57 request_method='POST',
58 renderer='rhodecode:templates/admin/my_account/my_account.mako')
38 59
39 60 # my account password
40 61 config.add_route(
41 62 name='my_account_password',
42 63 pattern=ADMIN_PREFIX + '/my_account/password')
64 config.add_view(
65 MyAccountView,
66 attr='my_account_password',
67 route_name='my_account_password', request_method='GET',
68 renderer='rhodecode:templates/admin/my_account/my_account.mako')
43 69
44 70 config.add_route(
45 71 name='my_account_password_update',
46 72 pattern=ADMIN_PREFIX + '/my_account/password/update')
73 config.add_view(
74 MyAccountView,
75 attr='my_account_password_update',
76 route_name='my_account_password_update', request_method='POST',
77 renderer='rhodecode:templates/admin/my_account/my_account.mako')
47 78
48 79 # my account tokens
49 80 config.add_route(
50 81 name='my_account_auth_tokens',
51 82 pattern=ADMIN_PREFIX + '/my_account/auth_tokens')
83 config.add_view(
84 MyAccountView,
85 attr='my_account_auth_tokens',
86 route_name='my_account_auth_tokens', request_method='GET',
87 renderer='rhodecode:templates/admin/my_account/my_account.mako')
88
52 89 config.add_route(
53 90 name='my_account_auth_tokens_view',
54 91 pattern=ADMIN_PREFIX + '/my_account/auth_tokens/view')
92 config.add_view(
93 MyAccountView,
94 attr='my_account_auth_tokens_view',
95 route_name='my_account_auth_tokens_view', request_method='POST', xhr=True,
96 renderer='json_ext')
97
55 98 config.add_route(
56 99 name='my_account_auth_tokens_add',
57 100 pattern=ADMIN_PREFIX + '/my_account/auth_tokens/new')
101 config.add_view(
102 MyAccountView,
103 attr='my_account_auth_tokens_add',
104 route_name='my_account_auth_tokens_add', request_method='POST')
105
58 106 config.add_route(
59 107 name='my_account_auth_tokens_delete',
60 108 pattern=ADMIN_PREFIX + '/my_account/auth_tokens/delete')
109 config.add_view(
110 MyAccountView,
111 attr='my_account_auth_tokens_delete',
112 route_name='my_account_auth_tokens_delete', request_method='POST')
61 113
62 114 # my account ssh keys
63 115 config.add_route(
64 116 name='my_account_ssh_keys',
65 117 pattern=ADMIN_PREFIX + '/my_account/ssh_keys')
118 config.add_view(
119 MyAccountSshKeysView,
120 attr='my_account_ssh_keys',
121 route_name='my_account_ssh_keys', request_method='GET',
122 renderer='rhodecode:templates/admin/my_account/my_account.mako')
123
66 124 config.add_route(
67 125 name='my_account_ssh_keys_generate',
68 126 pattern=ADMIN_PREFIX + '/my_account/ssh_keys/generate')
127 config.add_view(
128 MyAccountSshKeysView,
129 attr='ssh_keys_generate_keypair',
130 route_name='my_account_ssh_keys_generate', request_method='GET',
131 renderer='rhodecode:templates/admin/my_account/my_account.mako')
132
69 133 config.add_route(
70 134 name='my_account_ssh_keys_add',
71 135 pattern=ADMIN_PREFIX + '/my_account/ssh_keys/new')
136 config.add_view(
137 MyAccountSshKeysView,
138 attr='my_account_ssh_keys_add',
139 route_name='my_account_ssh_keys_add', request_method='POST',)
140
72 141 config.add_route(
73 142 name='my_account_ssh_keys_delete',
74 143 pattern=ADMIN_PREFIX + '/my_account/ssh_keys/delete')
144 config.add_view(
145 MyAccountSshKeysView,
146 attr='my_account_ssh_keys_delete',
147 route_name='my_account_ssh_keys_delete', request_method='POST')
75 148
76 149 # my account user group membership
77 150 config.add_route(
78 151 name='my_account_user_group_membership',
79 152 pattern=ADMIN_PREFIX + '/my_account/user_group_membership')
153 config.add_view(
154 MyAccountView,
155 attr='my_account_user_group_membership',
156 route_name='my_account_user_group_membership',
157 request_method='GET',
158 renderer='rhodecode:templates/admin/my_account/my_account.mako')
80 159
81 160 # my account emails
82 161 config.add_route(
83 162 name='my_account_emails',
84 163 pattern=ADMIN_PREFIX + '/my_account/emails')
164 config.add_view(
165 MyAccountView,
166 attr='my_account_emails',
167 route_name='my_account_emails', request_method='GET',
168 renderer='rhodecode:templates/admin/my_account/my_account.mako')
169
85 170 config.add_route(
86 171 name='my_account_emails_add',
87 172 pattern=ADMIN_PREFIX + '/my_account/emails/new')
173 config.add_view(
174 MyAccountView,
175 attr='my_account_emails_add',
176 route_name='my_account_emails_add', request_method='POST',
177 renderer='rhodecode:templates/admin/my_account/my_account.mako')
178
88 179 config.add_route(
89 180 name='my_account_emails_delete',
90 181 pattern=ADMIN_PREFIX + '/my_account/emails/delete')
182 config.add_view(
183 MyAccountView,
184 attr='my_account_emails_delete',
185 route_name='my_account_emails_delete', request_method='POST')
91 186
92 187 config.add_route(
93 188 name='my_account_repos',
94 189 pattern=ADMIN_PREFIX + '/my_account/repos')
190 config.add_view(
191 MyAccountView,
192 attr='my_account_repos',
193 route_name='my_account_repos', request_method='GET',
194 renderer='rhodecode:templates/admin/my_account/my_account.mako')
95 195
96 196 config.add_route(
97 197 name='my_account_watched',
98 198 pattern=ADMIN_PREFIX + '/my_account/watched')
199 config.add_view(
200 MyAccountView,
201 attr='my_account_watched',
202 route_name='my_account_watched', request_method='GET',
203 renderer='rhodecode:templates/admin/my_account/my_account.mako')
99 204
100 205 config.add_route(
101 206 name='my_account_bookmarks',
102 207 pattern=ADMIN_PREFIX + '/my_account/bookmarks')
208 config.add_view(
209 MyAccountView,
210 attr='my_account_bookmarks',
211 route_name='my_account_bookmarks', request_method='GET',
212 renderer='rhodecode:templates/admin/my_account/my_account.mako')
103 213
104 214 config.add_route(
105 215 name='my_account_bookmarks_update',
106 216 pattern=ADMIN_PREFIX + '/my_account/bookmarks/update')
217 config.add_view(
218 MyAccountView,
219 attr='my_account_bookmarks_update',
220 route_name='my_account_bookmarks_update', request_method='POST')
107 221
108 222 config.add_route(
109 223 name='my_account_goto_bookmark',
110 224 pattern=ADMIN_PREFIX + '/my_account/bookmark/{bookmark_id}')
225 config.add_view(
226 MyAccountView,
227 attr='my_account_goto_bookmark',
228 route_name='my_account_goto_bookmark', request_method='GET',
229 renderer='rhodecode:templates/admin/my_account/my_account.mako')
111 230
112 231 config.add_route(
113 232 name='my_account_perms',
114 233 pattern=ADMIN_PREFIX + '/my_account/perms')
234 config.add_view(
235 MyAccountView,
236 attr='my_account_perms',
237 route_name='my_account_perms', request_method='GET',
238 renderer='rhodecode:templates/admin/my_account/my_account.mako')
115 239
116 240 config.add_route(
117 241 name='my_account_notifications',
118 242 pattern=ADMIN_PREFIX + '/my_account/notifications')
243 config.add_view(
244 MyAccountView,
245 attr='my_notifications',
246 route_name='my_account_notifications', request_method='GET',
247 renderer='rhodecode:templates/admin/my_account/my_account.mako')
119 248
120 249 config.add_route(
121 250 name='my_account_notifications_toggle_visibility',
122 251 pattern=ADMIN_PREFIX + '/my_account/toggle_visibility')
252 config.add_view(
253 MyAccountView,
254 attr='my_notifications_toggle_visibility',
255 route_name='my_account_notifications_toggle_visibility',
256 request_method='POST', renderer='json_ext')
123 257
124 258 # my account pull requests
125 259 config.add_route(
126 260 name='my_account_pullrequests',
127 261 pattern=ADMIN_PREFIX + '/my_account/pull_requests')
262 config.add_view(
263 MyAccountView,
264 attr='my_account_pullrequests',
265 route_name='my_account_pullrequests',
266 request_method='GET',
267 renderer='rhodecode:templates/admin/my_account/my_account.mako')
268
128 269 config.add_route(
129 270 name='my_account_pullrequests_data',
130 271 pattern=ADMIN_PREFIX + '/my_account/pull_requests/data')
272 config.add_view(
273 MyAccountView,
274 attr='my_account_pullrequests_data',
275 route_name='my_account_pullrequests_data',
276 request_method='GET', renderer='json_ext')
277
278 # channelstream test
279 config.add_route(
280 name='my_account_notifications_test_channelstream',
281 pattern=ADMIN_PREFIX + '/my_account/test_channelstream')
282 config.add_view(
283 MyAccountView,
284 attr='my_account_notifications_test_channelstream',
285 route_name='my_account_notifications_test_channelstream',
286 request_method='POST', renderer='json_ext')
131 287
132 288 # notifications
133 289 config.add_route(
134 290 name='notifications_show_all',
135 291 pattern=ADMIN_PREFIX + '/notifications')
292 config.add_view(
293 MyAccountNotificationsView,
294 attr='notifications_show_all',
295 route_name='notifications_show_all', request_method='GET',
296 renderer='rhodecode:templates/admin/notifications/notifications_show_all.mako')
136 297
137 298 # notifications
138 299 config.add_route(
139 300 name='notifications_mark_all_read',
140 pattern=ADMIN_PREFIX + '/notifications/mark_all_read')
301 pattern=ADMIN_PREFIX + '/notifications_mark_all_read')
302 config.add_view(
303 MyAccountNotificationsView,
304 attr='notifications_mark_all_read',
305 route_name='notifications_mark_all_read', request_method='POST',
306 renderer='rhodecode:templates/admin/notifications/notifications_show_all.mako')
141 307
142 308 config.add_route(
143 309 name='notifications_show',
144 310 pattern=ADMIN_PREFIX + '/notifications/{notification_id}')
311 config.add_view(
312 MyAccountNotificationsView,
313 attr='notifications_show',
314 route_name='notifications_show', request_method='GET',
315 renderer='rhodecode:templates/admin/notifications/notifications_show.mako')
145 316
146 317 config.add_route(
147 318 name='notifications_update',
148 319 pattern=ADMIN_PREFIX + '/notifications/{notification_id}/update')
320 config.add_view(
321 MyAccountNotificationsView,
322 attr='notification_update',
323 route_name='notifications_update', request_method='POST',
324 renderer='json_ext')
149 325
150 326 config.add_route(
151 327 name='notifications_delete',
152 328 pattern=ADMIN_PREFIX + '/notifications/{notification_id}/delete')
153
154 # channelstream test
155 config.add_route(
156 name='my_account_notifications_test_channelstream',
157 pattern=ADMIN_PREFIX + '/my_account/test_channelstream')
158
159 # Scan module for configuration decorators.
160 config.scan('.views', ignore='.tests')
329 config.add_view(
330 MyAccountNotificationsView,
331 attr='notification_delete',
332 route_name='notifications_delete', request_method='POST',
333 renderer='json_ext')
@@ -40,7 +40,7 b' def route_path(name, params=None, **kwar'
40 40
41 41 base_url = {
42 42 'notifications_show_all': ADMIN_PREFIX + '/notifications',
43 'notifications_mark_all_read': ADMIN_PREFIX + '/notifications/mark_all_read',
43 'notifications_mark_all_read': ADMIN_PREFIX + '/notifications_mark_all_read',
44 44 'notifications_show': ADMIN_PREFIX + '/notifications/{notification_id}',
45 45 'notifications_update': ADMIN_PREFIX + '/notifications/{notification_id}/update',
46 46 'notifications_delete': ADMIN_PREFIX + '/notifications/{notification_id}/delete',
@@ -60,6 +60,15 b' class TestNotificationsController(TestCo'
60 60 Session().delete(inst)
61 61 Session().commit()
62 62
63 def test_mark_all_read(self, user_util):
64 user = user_util.create_user(password='qweqwe')
65 self.log_user(user.username, 'qweqwe')
66
67 self.app.post(
68 route_path('notifications_mark_all_read'), status=302,
69 params={'csrf_token': self.csrf_token}
70 )
71
63 72 def test_show_all(self, user_util):
64 73 user = user_util.create_user(password='qweqwe')
65 74 user_id = user.user_id
@@ -26,7 +26,6 b' import formencode'
26 26 import formencode.htmlfill
27 27 import peppercorn
28 28 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
29 from pyramid.view import view_config
30 29
31 30 from rhodecode.apps._base import BaseAppView, DataGridAppView
32 31 from rhodecode import forms
@@ -65,14 +64,10 b' class MyAccountView(BaseAppView, DataGri'
65 64 c = self._get_local_tmpl_context()
66 65 c.user = c.auth_user.get_instance()
67 66 c.allow_scoped_tokens = self.ALLOW_SCOPED_TOKENS
68
69 67 return c
70 68
71 69 @LoginRequired()
72 70 @NotAnonymous()
73 @view_config(
74 route_name='my_account_profile', request_method='GET',
75 renderer='rhodecode:templates/admin/my_account/my_account.mako')
76 71 def my_account_profile(self):
77 72 c = self.load_default_context()
78 73 c.active = 'profile'
@@ -81,9 +76,75 b' class MyAccountView(BaseAppView, DataGri'
81 76
82 77 @LoginRequired()
83 78 @NotAnonymous()
84 @view_config(
85 route_name='my_account_password', request_method='GET',
86 renderer='rhodecode:templates/admin/my_account/my_account.mako')
79 def my_account_edit(self):
80 c = self.load_default_context()
81 c.active = 'profile_edit'
82 c.extern_type = c.user.extern_type
83 c.extern_name = c.user.extern_name
84
85 schema = user_schema.UserProfileSchema().bind(
86 username=c.user.username, user_emails=c.user.emails)
87 appstruct = {
88 'username': c.user.username,
89 'email': c.user.email,
90 'firstname': c.user.firstname,
91 'lastname': c.user.lastname,
92 'description': c.user.description,
93 }
94 c.form = forms.RcForm(
95 schema, appstruct=appstruct,
96 action=h.route_path('my_account_update'),
97 buttons=(forms.buttons.save, forms.buttons.reset))
98
99 return self._get_template_context(c)
100
101 @LoginRequired()
102 @NotAnonymous()
103 @CSRFRequired()
104 def my_account_update(self):
105 _ = self.request.translate
106 c = self.load_default_context()
107 c.active = 'profile_edit'
108 c.perm_user = c.auth_user
109 c.extern_type = c.user.extern_type
110 c.extern_name = c.user.extern_name
111
112 schema = user_schema.UserProfileSchema().bind(
113 username=c.user.username, user_emails=c.user.emails)
114 form = forms.RcForm(
115 schema, buttons=(forms.buttons.save, forms.buttons.reset))
116
117 controls = self.request.POST.items()
118 try:
119 valid_data = form.validate(controls)
120 skip_attrs = ['admin', 'active', 'extern_type', 'extern_name',
121 'new_password', 'password_confirmation']
122 if c.extern_type != "rhodecode":
123 # forbid updating username for external accounts
124 skip_attrs.append('username')
125 old_email = c.user.email
126 UserModel().update_user(
127 self._rhodecode_user.user_id, skip_attrs=skip_attrs,
128 **valid_data)
129 if old_email != valid_data['email']:
130 old = UserEmailMap.query() \
131 .filter(UserEmailMap.user == c.user)\
132 .filter(UserEmailMap.email == valid_data['email'])\
133 .first()
134 old.email = old_email
135 h.flash(_('Your account was updated successfully'), category='success')
136 Session().commit()
137 except forms.ValidationFailure as e:
138 c.form = e
139 return self._get_template_context(c)
140 except Exception:
141 log.exception("Exception updating user")
142 h.flash(_('Error occurred during update of user'),
143 category='error')
144 raise HTTPFound(h.route_path('my_account_profile'))
145
146 @LoginRequired()
147 @NotAnonymous()
87 148 def my_account_password(self):
88 149 c = self.load_default_context()
89 150 c.active = 'password'
@@ -103,9 +164,6 b' class MyAccountView(BaseAppView, DataGri'
103 164 @LoginRequired()
104 165 @NotAnonymous()
105 166 @CSRFRequired()
106 @view_config(
107 route_name='my_account_password_update', request_method='POST',
108 renderer='rhodecode:templates/admin/my_account/my_account.mako')
109 167 def my_account_password_update(self):
110 168 _ = self.request.translate
111 169 c = self.load_default_context()
@@ -146,9 +204,6 b' class MyAccountView(BaseAppView, DataGri'
146 204
147 205 @LoginRequired()
148 206 @NotAnonymous()
149 @view_config(
150 route_name='my_account_auth_tokens', request_method='GET',
151 renderer='rhodecode:templates/admin/my_account/my_account.mako')
152 207 def my_account_auth_tokens(self):
153 208 _ = self.request.translate
154 209
@@ -167,9 +222,6 b' class MyAccountView(BaseAppView, DataGri'
167 222 @LoginRequired()
168 223 @NotAnonymous()
169 224 @CSRFRequired()
170 @view_config(
171 route_name='my_account_auth_tokens_view', request_method='POST', xhr=True,
172 renderer='json_ext')
173 225 def my_account_auth_tokens_view(self):
174 226 _ = self.request.translate
175 227 c = self.load_default_context()
@@ -192,8 +244,6 b' class MyAccountView(BaseAppView, DataGri'
192 244 @LoginRequired()
193 245 @NotAnonymous()
194 246 @CSRFRequired()
195 @view_config(
196 route_name='my_account_auth_tokens_add', request_method='POST',)
197 247 def my_account_auth_tokens_add(self):
198 248 _ = self.request.translate
199 249 c = self.load_default_context()
@@ -220,8 +270,6 b' class MyAccountView(BaseAppView, DataGri'
220 270 @LoginRequired()
221 271 @NotAnonymous()
222 272 @CSRFRequired()
223 @view_config(
224 route_name='my_account_auth_tokens_delete', request_method='POST')
225 273 def my_account_auth_tokens_delete(self):
226 274 _ = self.request.translate
227 275 c = self.load_default_context()
@@ -244,9 +292,6 b' class MyAccountView(BaseAppView, DataGri'
244 292
245 293 @LoginRequired()
246 294 @NotAnonymous()
247 @view_config(
248 route_name='my_account_emails', request_method='GET',
249 renderer='rhodecode:templates/admin/my_account/my_account.mako')
250 295 def my_account_emails(self):
251 296 _ = self.request.translate
252 297
@@ -269,9 +314,6 b' class MyAccountView(BaseAppView, DataGri'
269 314 @LoginRequired()
270 315 @NotAnonymous()
271 316 @CSRFRequired()
272 @view_config(
273 route_name='my_account_emails_add', request_method='POST',
274 renderer='rhodecode:templates/admin/my_account/my_account.mako')
275 317 def my_account_emails_add(self):
276 318 _ = self.request.translate
277 319 c = self.load_default_context()
@@ -312,8 +354,6 b' class MyAccountView(BaseAppView, DataGri'
312 354 @LoginRequired()
313 355 @NotAnonymous()
314 356 @CSRFRequired()
315 @view_config(
316 route_name='my_account_emails_delete', request_method='POST')
317 357 def my_account_emails_delete(self):
318 358 _ = self.request.translate
319 359 c = self.load_default_context()
@@ -334,9 +374,6 b' class MyAccountView(BaseAppView, DataGri'
334 374 @LoginRequired()
335 375 @NotAnonymous()
336 376 @CSRFRequired()
337 @view_config(
338 route_name='my_account_notifications_test_channelstream',
339 request_method='POST', renderer='json_ext')
340 377 def my_account_notifications_test_channelstream(self):
341 378 message = 'Test message sent via Channelstream by user: {}, on {}'.format(
342 379 self._rhodecode_user.username, datetime.datetime.now())
@@ -424,9 +461,6 b' class MyAccountView(BaseAppView, DataGri'
424 461
425 462 @LoginRequired()
426 463 @NotAnonymous()
427 @view_config(
428 route_name='my_account_repos', request_method='GET',
429 renderer='rhodecode:templates/admin/my_account/my_account.mako')
430 464 def my_account_repos(self):
431 465 c = self.load_default_context()
432 466 c.active = 'repos'
@@ -437,9 +471,6 b' class MyAccountView(BaseAppView, DataGri'
437 471
438 472 @LoginRequired()
439 473 @NotAnonymous()
440 @view_config(
441 route_name='my_account_watched', request_method='GET',
442 renderer='rhodecode:templates/admin/my_account/my_account.mako')
443 474 def my_account_watched(self):
444 475 c = self.load_default_context()
445 476 c.active = 'watched'
@@ -450,9 +481,6 b' class MyAccountView(BaseAppView, DataGri'
450 481
451 482 @LoginRequired()
452 483 @NotAnonymous()
453 @view_config(
454 route_name='my_account_bookmarks', request_method='GET',
455 renderer='rhodecode:templates/admin/my_account/my_account.mako')
456 484 def my_account_bookmarks(self):
457 485 c = self.load_default_context()
458 486 c.active = 'bookmarks'
@@ -519,8 +547,6 b' class MyAccountView(BaseAppView, DataGri'
519 547 @LoginRequired()
520 548 @NotAnonymous()
521 549 @CSRFRequired()
522 @view_config(
523 route_name='my_account_bookmarks_update', request_method='POST')
524 550 def my_account_bookmarks_update(self):
525 551 _ = self.request.translate
526 552 c = self.load_default_context()
@@ -559,9 +585,6 b' class MyAccountView(BaseAppView, DataGri'
559 585
560 586 @LoginRequired()
561 587 @NotAnonymous()
562 @view_config(
563 route_name='my_account_goto_bookmark', request_method='GET',
564 renderer='rhodecode:templates/admin/my_account/my_account.mako')
565 588 def my_account_goto_bookmark(self):
566 589
567 590 bookmark_id = self.request.matchdict['bookmark_id']
@@ -606,9 +629,6 b' class MyAccountView(BaseAppView, DataGri'
606 629
607 630 @LoginRequired()
608 631 @NotAnonymous()
609 @view_config(
610 route_name='my_account_perms', request_method='GET',
611 renderer='rhodecode:templates/admin/my_account/my_account.mako')
612 632 def my_account_perms(self):
613 633 c = self.load_default_context()
614 634 c.active = 'perms'
@@ -618,9 +638,6 b' class MyAccountView(BaseAppView, DataGri'
618 638
619 639 @LoginRequired()
620 640 @NotAnonymous()
621 @view_config(
622 route_name='my_account_notifications', request_method='GET',
623 renderer='rhodecode:templates/admin/my_account/my_account.mako')
624 641 def my_notifications(self):
625 642 c = self.load_default_context()
626 643 c.active = 'notifications'
@@ -630,9 +647,6 b' class MyAccountView(BaseAppView, DataGri'
630 647 @LoginRequired()
631 648 @NotAnonymous()
632 649 @CSRFRequired()
633 @view_config(
634 route_name='my_account_notifications_toggle_visibility',
635 request_method='POST', renderer='json_ext')
636 650 def my_notifications_toggle_visibility(self):
637 651 user = self._rhodecode_db_user
638 652 new_status = not user.user_data.get('notification_status', True)
@@ -640,83 +654,6 b' class MyAccountView(BaseAppView, DataGri'
640 654 Session().commit()
641 655 return user.user_data['notification_status']
642 656
643 @LoginRequired()
644 @NotAnonymous()
645 @view_config(
646 route_name='my_account_edit',
647 request_method='GET',
648 renderer='rhodecode:templates/admin/my_account/my_account.mako')
649 def my_account_edit(self):
650 c = self.load_default_context()
651 c.active = 'profile_edit'
652 c.extern_type = c.user.extern_type
653 c.extern_name = c.user.extern_name
654
655 schema = user_schema.UserProfileSchema().bind(
656 username=c.user.username, user_emails=c.user.emails)
657 appstruct = {
658 'username': c.user.username,
659 'email': c.user.email,
660 'firstname': c.user.firstname,
661 'lastname': c.user.lastname,
662 'description': c.user.description,
663 }
664 c.form = forms.RcForm(
665 schema, appstruct=appstruct,
666 action=h.route_path('my_account_update'),
667 buttons=(forms.buttons.save, forms.buttons.reset))
668
669 return self._get_template_context(c)
670
671 @LoginRequired()
672 @NotAnonymous()
673 @CSRFRequired()
674 @view_config(
675 route_name='my_account_update',
676 request_method='POST',
677 renderer='rhodecode:templates/admin/my_account/my_account.mako')
678 def my_account_update(self):
679 _ = self.request.translate
680 c = self.load_default_context()
681 c.active = 'profile_edit'
682 c.perm_user = c.auth_user
683 c.extern_type = c.user.extern_type
684 c.extern_name = c.user.extern_name
685
686 schema = user_schema.UserProfileSchema().bind(
687 username=c.user.username, user_emails=c.user.emails)
688 form = forms.RcForm(
689 schema, buttons=(forms.buttons.save, forms.buttons.reset))
690
691 controls = self.request.POST.items()
692 try:
693 valid_data = form.validate(controls)
694 skip_attrs = ['admin', 'active', 'extern_type', 'extern_name',
695 'new_password', 'password_confirmation']
696 if c.extern_type != "rhodecode":
697 # forbid updating username for external accounts
698 skip_attrs.append('username')
699 old_email = c.user.email
700 UserModel().update_user(
701 self._rhodecode_user.user_id, skip_attrs=skip_attrs,
702 **valid_data)
703 if old_email != valid_data['email']:
704 old = UserEmailMap.query() \
705 .filter(UserEmailMap.user == c.user)\
706 .filter(UserEmailMap.email == valid_data['email'])\
707 .first()
708 old.email = old_email
709 h.flash(_('Your account was updated successfully'), category='success')
710 Session().commit()
711 except forms.ValidationFailure as e:
712 c.form = e
713 return self._get_template_context(c)
714 except Exception:
715 log.exception("Exception updating user")
716 h.flash(_('Error occurred during update of user'),
717 category='error')
718 raise HTTPFound(h.route_path('my_account_profile'))
719
720 657 def _get_pull_requests_list(self, statuses):
721 658 draw, start, limit = self._extract_chunk(self.request)
722 659 search_q, order_by, order_dir = self._extract_ordering(self.request)
@@ -781,10 +718,6 b' class MyAccountView(BaseAppView, DataGri'
781 718
782 719 @LoginRequired()
783 720 @NotAnonymous()
784 @view_config(
785 route_name='my_account_pullrequests',
786 request_method='GET',
787 renderer='rhodecode:templates/admin/my_account/my_account.mako')
788 721 def my_account_pullrequests(self):
789 722 c = self.load_default_context()
790 723 c.active = 'pullrequests'
@@ -796,9 +729,6 b' class MyAccountView(BaseAppView, DataGri'
796 729
797 730 @LoginRequired()
798 731 @NotAnonymous()
799 @view_config(
800 route_name='my_account_pullrequests_data',
801 request_method='GET', renderer='json_ext')
802 732 def my_account_pullrequests_data(self):
803 733 self.load_default_context()
804 734 req_get = self.request.GET
@@ -813,10 +743,6 b' class MyAccountView(BaseAppView, DataGri'
813 743
814 744 @LoginRequired()
815 745 @NotAnonymous()
816 @view_config(
817 route_name='my_account_user_group_membership',
818 request_method='GET',
819 renderer='rhodecode:templates/admin/my_account/my_account.mako')
820 746 def my_account_user_group_membership(self):
821 747 c = self.load_default_context()
822 748 c.active = 'user_group_membership'
@@ -22,7 +22,6 b' import logging'
22 22
23 23 from pyramid.httpexceptions import (
24 24 HTTPFound, HTTPNotFound, HTTPInternalServerError)
25 from pyramid.view import view_config
26 25
27 26 from rhodecode.apps._base import BaseAppView
28 27 from rhodecode.lib.auth import LoginRequired, NotAnonymous, CSRFRequired
@@ -57,9 +56,6 b' class MyAccountNotificationsView(BaseApp'
57 56
58 57 @LoginRequired()
59 58 @NotAnonymous()
60 @view_config(
61 route_name='notifications_show_all', request_method='GET',
62 renderer='rhodecode:templates/admin/notifications/notifications_show_all.mako')
63 59 def notifications_show_all(self):
64 60 c = self.load_default_context()
65 61
@@ -105,22 +101,6 b' class MyAccountNotificationsView(BaseApp'
105 101
106 102 @LoginRequired()
107 103 @NotAnonymous()
108 @CSRFRequired()
109 @view_config(
110 route_name='notifications_mark_all_read', request_method='POST',
111 renderer='rhodecode:templates/admin/notifications/notifications_show_all.mako')
112 def notifications_mark_all_read(self):
113 NotificationModel().mark_all_read_for_user(
114 self._rhodecode_db_user.user_id,
115 filter_=self.request.GET.getall('type'))
116 Session().commit()
117 raise HTTPFound(h.route_path('notifications_show_all'))
118
119 @LoginRequired()
120 @NotAnonymous()
121 @view_config(
122 route_name='notifications_show', request_method='GET',
123 renderer='rhodecode:templates/admin/notifications/notifications_show.mako')
124 104 def notifications_show(self):
125 105 c = self.load_default_context()
126 106 notification_id = self.request.matchdict['notification_id']
@@ -150,9 +130,16 b' class MyAccountNotificationsView(BaseApp'
150 130 @LoginRequired()
151 131 @NotAnonymous()
152 132 @CSRFRequired()
153 @view_config(
154 route_name='notifications_update', request_method='POST',
155 renderer='json_ext')
133 def notifications_mark_all_read(self):
134 NotificationModel().mark_all_read_for_user(
135 self._rhodecode_db_user.user_id,
136 filter_=self.request.GET.getall('type'))
137 Session().commit()
138 raise HTTPFound(h.route_path('notifications_show_all'))
139
140 @LoginRequired()
141 @NotAnonymous()
142 @CSRFRequired()
156 143 def notification_update(self):
157 144 notification_id = self.request.matchdict['notification_id']
158 145 notification = Notification.get_or_404(notification_id)
@@ -177,9 +164,6 b' class MyAccountNotificationsView(BaseApp'
177 164 @LoginRequired()
178 165 @NotAnonymous()
179 166 @CSRFRequired()
180 @view_config(
181 route_name='notifications_delete', request_method='POST',
182 renderer='json_ext')
183 167 def notification_delete(self):
184 168 notification_id = self.request.matchdict['notification_id']
185 169 notification = Notification.get_or_404(notification_id)
@@ -21,7 +21,6 b''
21 21 import logging
22 22
23 23 from pyramid.httpexceptions import HTTPFound
24 from pyramid.view import view_config
25 24
26 25 from rhodecode.apps._base import BaseAppView, DataGridAppView
27 26 from rhodecode.apps.ssh_support import SshKeyFileChangeEvent
@@ -41,17 +40,12 b' class MyAccountSshKeysView(BaseAppView, '
41 40 def load_default_context(self):
42 41 c = self._get_local_tmpl_context()
43 42 c.user = c.auth_user.get_instance()
44
45 43 c.ssh_enabled = self.request.registry.settings.get(
46 44 'ssh.generate_authorized_keyfile')
47
48 45 return c
49 46
50 47 @LoginRequired()
51 48 @NotAnonymous()
52 @view_config(
53 route_name='my_account_ssh_keys', request_method='GET',
54 renderer='rhodecode:templates/admin/my_account/my_account.mako')
55 49 def my_account_ssh_keys(self):
56 50 _ = self.request.translate
57 51
@@ -63,9 +57,6 b' class MyAccountSshKeysView(BaseAppView, '
63 57
64 58 @LoginRequired()
65 59 @NotAnonymous()
66 @view_config(
67 route_name='my_account_ssh_keys_generate', request_method='GET',
68 renderer='rhodecode:templates/admin/my_account/my_account.mako')
69 60 def ssh_keys_generate_keypair(self):
70 61 _ = self.request.translate
71 62 c = self.load_default_context()
@@ -84,8 +75,6 b' class MyAccountSshKeysView(BaseAppView, '
84 75 @LoginRequired()
85 76 @NotAnonymous()
86 77 @CSRFRequired()
87 @view_config(
88 route_name='my_account_ssh_keys_add', request_method='POST',)
89 78 def my_account_ssh_keys_add(self):
90 79 _ = self.request.translate
91 80 c = self.load_default_context()
@@ -132,8 +121,6 b' class MyAccountSshKeysView(BaseAppView, '
132 121 @LoginRequired()
133 122 @NotAnonymous()
134 123 @CSRFRequired()
135 @view_config(
136 route_name='my_account_ssh_keys_delete', request_method='POST')
137 124 def my_account_ssh_keys_delete(self):
138 125 _ = self.request.translate
139 126 c = self.load_default_context()
@@ -22,25 +22,35 b' from rhodecode.apps._base import ADMIN_P'
22 22
23 23
24 24 def admin_routes(config):
25 from rhodecode.apps.ops.views import OpsView
26
25 27 config.add_route(
26 28 name='ops_ping',
27 29 pattern='/ping')
30 config.add_view(
31 OpsView,
32 attr='ops_ping',
33 route_name='ops_ping', request_method='GET',
34 renderer='json_ext')
35
28 36 config.add_route(
29 37 name='ops_error_test',
30 38 pattern='/error')
39 config.add_view(
40 OpsView,
41 attr='ops_error_test',
42 route_name='ops_error_test', request_method='GET',
43 renderer='json_ext')
44
31 45 config.add_route(
32 46 name='ops_redirect_test',
33 47 pattern='/redirect')
48 config.add_view(
49 OpsView,
50 attr='ops_redirect_test',
51 route_name='ops_redirect_test', request_method='GET',
52 renderer='json_ext')
34 53
35 54
36 55 def includeme(config):
37
38 56 config.include(admin_routes, route_prefix=ADMIN_PREFIX + '/ops')
39 # make OLD entries from <4.10.0 work
40 config.add_route(
41 name='ops_ping_legacy', pattern=ADMIN_PREFIX + '/ping')
42 config.add_route(
43 name='ops_error_test_legacy', pattern=ADMIN_PREFIX + '/error_test')
44
45 # Scan module for configuration decorators.
46 config.scan('.views', ignore='.tests')
@@ -21,7 +21,7 b''
21 21 import time
22 22 import logging
23 23
24 from pyramid.view import view_config
24
25 25 from pyramid.httpexceptions import HTTPFound
26 26
27 27 from rhodecode.apps._base import BaseAppView
@@ -38,12 +38,6 b' class OpsView(BaseAppView):'
38 38
39 39 return c
40 40
41 @view_config(
42 route_name='ops_ping', request_method='GET',
43 renderer='json_ext')
44 @view_config(
45 route_name='ops_ping_legacy', request_method='GET',
46 renderer='json_ext')
47 41 def ops_ping(self):
48 42 data = {
49 43 'instance': self.request.registry.settings.get('instance_id'),
@@ -59,12 +53,6 b' class OpsView(BaseAppView):'
59 53 })
60 54 return {'ok': data}
61 55
62 @view_config(
63 route_name='ops_error_test', request_method='GET',
64 renderer='json_ext')
65 @view_config(
66 route_name='ops_error_test_legacy', request_method='GET',
67 renderer='json_ext')
68 56 def ops_error_test(self):
69 57 """
70 58 Test exception handling and emails on errors
@@ -78,9 +66,6 b' class OpsView(BaseAppView):'
78 66 'Client:{}. Generation time: {}.'.format(self.request.user, time.time()))
79 67 raise TestException(msg)
80 68
81 @view_config(
82 route_name='ops_redirect_test', request_method='GET',
83 renderer='json_ext')
84 69 def ops_redirect_test(self):
85 70 """
86 71 Test redirect handling
@@ -18,6 +18,10 b''
18 18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20 from rhodecode.apps._base import add_route_with_slash
21 from rhodecode.apps.repo_group.views.repo_group_settings import RepoGroupSettingsView
22 from rhodecode.apps.repo_group.views.repo_group_advanced import RepoGroupAdvancedSettingsView
23 from rhodecode.apps.repo_group.views.repo_group_permissions import RepoGroupPermissionsView
24 from rhodecode.apps.home.views import HomeView
21 25
22 26
23 27 def includeme(config):
@@ -27,35 +31,72 b' def includeme(config):'
27 31 name='edit_repo_group',
28 32 pattern='/{repo_group_name:.*?[^/]}/_edit',
29 33 repo_group_route=True)
30 # update is POST on edit_repo_group
34 config.add_view(
35 RepoGroupSettingsView,
36 attr='edit_settings',
37 route_name='edit_repo_group', request_method='GET',
38 renderer='rhodecode:templates/admin/repo_groups/repo_group_edit.mako')
39 config.add_view(
40 RepoGroupSettingsView,
41 attr='edit_settings_update',
42 route_name='edit_repo_group', request_method='POST',
43 renderer='rhodecode:templates/admin/repo_groups/repo_group_edit.mako')
31 44
32 45 # Settings advanced
33 46 config.add_route(
34 47 name='edit_repo_group_advanced',
35 48 pattern='/{repo_group_name:.*?[^/]}/_settings/advanced',
36 49 repo_group_route=True)
50 config.add_view(
51 RepoGroupAdvancedSettingsView,
52 attr='edit_repo_group_advanced',
53 route_name='edit_repo_group_advanced', request_method='GET',
54 renderer='rhodecode:templates/admin/repo_groups/repo_group_edit.mako')
37 55
38 56 config.add_route(
39 57 name='edit_repo_group_advanced_delete',
40 58 pattern='/{repo_group_name:.*?[^/]}/_settings/advanced/delete',
41 59 repo_group_route=True)
60 config.add_view(
61 RepoGroupAdvancedSettingsView,
62 attr='edit_repo_group_delete',
63 route_name='edit_repo_group_advanced_delete', request_method='POST',
64 renderer='rhodecode:templates/admin/repo_groups/repo_group_edit.mako')
42 65
43 66 # settings permissions
44 67 config.add_route(
45 68 name='edit_repo_group_perms',
46 69 pattern='/{repo_group_name:.*?[^/]}/_settings/permissions',
47 70 repo_group_route=True)
71 config.add_view(
72 RepoGroupPermissionsView,
73 attr='edit_repo_group_permissions',
74 route_name='edit_repo_group_perms', request_method='GET',
75 renderer='rhodecode:templates/admin/repo_groups/repo_group_edit.mako')
48 76
49 77 config.add_route(
50 78 name='edit_repo_group_perms_update',
51 79 pattern='/{repo_group_name:.*?[^/]}/_settings/permissions/update',
52 80 repo_group_route=True)
81 config.add_view(
82 RepoGroupPermissionsView,
83 attr='edit_repo_groups_permissions_update',
84 route_name='edit_repo_group_perms_update', request_method='POST',
85 renderer='rhodecode:templates/admin/repo_groups/repo_group_edit.mako')
53 86
54 87 # Summary, NOTE(marcink): needs to be at the end for catch-all
55 88 add_route_with_slash(
56 89 config,
57 90 name='repo_group_home',
58 91 pattern='/{repo_group_name:.*?[^/]}', repo_group_route=True)
92 config.add_view(
93 HomeView,
94 attr='repo_group_main_page',
95 route_name='repo_group_home', request_method='GET',
96 renderer='rhodecode:templates/index_repo_group.mako')
97 config.add_view(
98 HomeView,
99 attr='repo_group_main_page',
100 route_name='repo_group_home_slash', request_method='GET',
101 renderer='rhodecode:templates/index_repo_group.mako')
59 102
60 # Scan module for configuration decorators.
61 config.scan('.views', ignore='.tests')
@@ -20,7 +20,7 b''
20 20
21 21 import logging
22 22
23 from pyramid.view import view_config
23
24 24 from pyramid.httpexceptions import HTTPFound
25 25
26 26 from rhodecode.apps._base import RepoGroupAppView
@@ -34,17 +34,13 b' from rhodecode.model.meta import Session'
34 34 log = logging.getLogger(__name__)
35 35
36 36
37 class RepoGroupSettingsView(RepoGroupAppView):
37 class RepoGroupAdvancedSettingsView(RepoGroupAppView):
38 38 def load_default_context(self):
39 39 c = self._get_local_tmpl_context()
40
41 40 return c
42 41
43 42 @LoginRequired()
44 43 @HasRepoGroupPermissionAnyDecorator('group.admin')
45 @view_config(
46 route_name='edit_repo_group_advanced', request_method='GET',
47 renderer='rhodecode:templates/admin/repo_groups/repo_group_edit.mako')
48 44 def edit_repo_group_advanced(self):
49 45 _ = self.request.translate
50 46 c = self.load_default_context()
@@ -61,9 +57,6 b' class RepoGroupSettingsView(RepoGroupApp'
61 57 @LoginRequired()
62 58 @HasRepoGroupPermissionAnyDecorator('group.admin')
63 59 @CSRFRequired()
64 @view_config(
65 route_name='edit_repo_group_advanced_delete', request_method='POST',
66 renderer='rhodecode:templates/admin/repo_groups/repo_group_edit.mako')
67 60 def edit_repo_group_delete(self):
68 61 _ = self.request.translate
69 62 _ungettext = self.request.plularize
@@ -20,7 +20,7 b''
20 20
21 21 import logging
22 22
23 from pyramid.view import view_config
23
24 24 from pyramid.httpexceptions import HTTPFound
25 25
26 26 from rhodecode.apps._base import RepoGroupAppView
@@ -45,9 +45,6 b' class RepoGroupPermissionsView(RepoGroup'
45 45
46 46 @LoginRequired()
47 47 @HasRepoGroupPermissionAnyDecorator('group.admin')
48 @view_config(
49 route_name='edit_repo_group_perms', request_method='GET',
50 renderer='rhodecode:templates/admin/repo_groups/repo_group_edit.mako')
51 48 def edit_repo_group_permissions(self):
52 49 c = self.load_default_context()
53 50 c.active = 'permissions'
@@ -57,9 +54,6 b' class RepoGroupPermissionsView(RepoGroup'
57 54 @LoginRequired()
58 55 @HasRepoGroupPermissionAnyDecorator('group.admin')
59 56 @CSRFRequired()
60 @view_config(
61 route_name='edit_repo_group_perms_update', request_method='POST',
62 renderer='rhodecode:templates/admin/repo_groups/repo_group_edit.mako')
63 57 def edit_repo_groups_permissions_update(self):
64 58 _ = self.request.translate
65 59 c = self.load_default_context()
@@ -21,7 +21,7 b''
21 21 import logging
22 22 import deform
23 23
24 from pyramid.view import view_config
24
25 25 from pyramid.httpexceptions import HTTPFound
26 26
27 27 from rhodecode import events
@@ -109,9 +109,6 b' class RepoGroupSettingsView(RepoGroupApp'
109 109
110 110 @LoginRequired()
111 111 @HasRepoGroupPermissionAnyDecorator('group.admin')
112 @view_config(
113 route_name='edit_repo_group', request_method='GET',
114 renderer='rhodecode:templates/admin/repo_groups/repo_group_edit.mako')
115 112 def edit_settings(self):
116 113 c = self.load_default_context()
117 114 c.active = 'settings'
@@ -126,9 +123,6 b' class RepoGroupSettingsView(RepoGroupApp'
126 123 @LoginRequired()
127 124 @HasRepoGroupPermissionAnyDecorator('group.admin')
128 125 @CSRFRequired()
129 @view_config(
130 route_name='edit_repo_group', request_method='POST',
131 renderer='rhodecode:templates/admin/repo_groups/repo_group_edit.mako')
132 126 def edit_settings_update(self):
133 127 _ = self.request.translate
134 128 c = self.load_default_context()
This diff has been collapsed as it changes many lines, (707 lines changed) Show them Hide them
@@ -21,15 +21,52 b' from rhodecode.apps._base import add_rou'
21 21
22 22
23 23 def includeme(config):
24 from rhodecode.apps.repository.views.repo_artifacts import RepoArtifactsView
25 from rhodecode.apps.repository.views.repo_audit_logs import AuditLogsView
26 from rhodecode.apps.repository.views.repo_automation import RepoAutomationView
27 from rhodecode.apps.repository.views.repo_bookmarks import RepoBookmarksView
28 from rhodecode.apps.repository.views.repo_branch_permissions import RepoSettingsBranchPermissionsView
29 from rhodecode.apps.repository.views.repo_branches import RepoBranchesView
30 from rhodecode.apps.repository.views.repo_caches import RepoCachesView
31 from rhodecode.apps.repository.views.repo_changelog import RepoChangelogView
32 from rhodecode.apps.repository.views.repo_checks import RepoChecksView
33 from rhodecode.apps.repository.views.repo_commits import RepoCommitsView
34 from rhodecode.apps.repository.views.repo_compare import RepoCompareView
35 from rhodecode.apps.repository.views.repo_feed import RepoFeedView
36 from rhodecode.apps.repository.views.repo_files import RepoFilesView
37 from rhodecode.apps.repository.views.repo_forks import RepoForksView
38 from rhodecode.apps.repository.views.repo_maintainance import RepoMaintenanceView
39 from rhodecode.apps.repository.views.repo_permissions import RepoSettingsPermissionsView
40 from rhodecode.apps.repository.views.repo_pull_requests import RepoPullRequestsView
41 from rhodecode.apps.repository.views.repo_review_rules import RepoReviewRulesView
42 from rhodecode.apps.repository.views.repo_settings import RepoSettingsView
43 from rhodecode.apps.repository.views.repo_settings_advanced import RepoSettingsAdvancedView
44 from rhodecode.apps.repository.views.repo_settings_fields import RepoSettingsFieldsView
45 from rhodecode.apps.repository.views.repo_settings_issue_trackers import RepoSettingsIssueTrackersView
46 from rhodecode.apps.repository.views.repo_settings_remote import RepoSettingsRemoteView
47 from rhodecode.apps.repository.views.repo_settings_vcs import RepoSettingsVcsView
48 from rhodecode.apps.repository.views.repo_strip import RepoStripView
49 from rhodecode.apps.repository.views.repo_summary import RepoSummaryView
50 from rhodecode.apps.repository.views.repo_tags import RepoTagsView
24 51
25 52 # repo creating checks, special cases that aren't repo routes
26 53 config.add_route(
27 54 name='repo_creating',
28 55 pattern='/{repo_name:.*?[^/]}/repo_creating')
56 config.add_view(
57 RepoChecksView,
58 attr='repo_creating',
59 route_name='repo_creating', request_method='GET',
60 renderer='rhodecode:templates/admin/repos/repo_creating.mako')
29 61
30 62 config.add_route(
31 63 name='repo_creating_check',
32 64 pattern='/{repo_name:.*?[^/]}/repo_creating_check')
65 config.add_view(
66 RepoChecksView,
67 attr='repo_creating_check',
68 route_name='repo_creating_check', request_method='GET',
69 renderer='json_ext')
33 70
34 71 # Summary
35 72 # NOTE(marcink): one additional route is defined in very bottom, catch
@@ -37,191 +74,467 b' def includeme(config):'
37 74 config.add_route(
38 75 name='repo_summary_explicit',
39 76 pattern='/{repo_name:.*?[^/]}/summary', repo_route=True)
77 config.add_view(
78 RepoSummaryView,
79 attr='summary',
80 route_name='repo_summary_explicit', request_method='GET',
81 renderer='rhodecode:templates/summary/summary.mako')
82
40 83 config.add_route(
41 84 name='repo_summary_commits',
42 85 pattern='/{repo_name:.*?[^/]}/summary-commits', repo_route=True)
43
86 config.add_view(
87 RepoSummaryView,
88 attr='summary_commits',
89 route_name='repo_summary_commits', request_method='GET',
90 renderer='rhodecode:templates/summary/summary_commits.mako')
91
44 92 # Commits
45 93 config.add_route(
46 94 name='repo_commit',
47 95 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}', repo_route=True)
96 config.add_view(
97 RepoCommitsView,
98 attr='repo_commit_show',
99 route_name='repo_commit', request_method='GET',
100 renderer=None)
48 101
49 102 config.add_route(
50 103 name='repo_commit_children',
51 104 pattern='/{repo_name:.*?[^/]}/changeset_children/{commit_id}', repo_route=True)
105 config.add_view(
106 RepoCommitsView,
107 attr='repo_commit_children',
108 route_name='repo_commit_children', request_method='GET',
109 renderer='json_ext', xhr=True)
52 110
53 111 config.add_route(
54 112 name='repo_commit_parents',
55 113 pattern='/{repo_name:.*?[^/]}/changeset_parents/{commit_id}', repo_route=True)
114 config.add_view(
115 RepoCommitsView,
116 attr='repo_commit_parents',
117 route_name='repo_commit_parents', request_method='GET',
118 renderer='json_ext')
56 119
57 120 config.add_route(
58 121 name='repo_commit_raw',
59 122 pattern='/{repo_name:.*?[^/]}/changeset-diff/{commit_id}', repo_route=True)
123 config.add_view(
124 RepoCommitsView,
125 attr='repo_commit_raw',
126 route_name='repo_commit_raw', request_method='GET',
127 renderer=None)
60 128
61 129 config.add_route(
62 130 name='repo_commit_patch',
63 131 pattern='/{repo_name:.*?[^/]}/changeset-patch/{commit_id}', repo_route=True)
132 config.add_view(
133 RepoCommitsView,
134 attr='repo_commit_patch',
135 route_name='repo_commit_patch', request_method='GET',
136 renderer=None)
64 137
65 138 config.add_route(
66 139 name='repo_commit_download',
67 140 pattern='/{repo_name:.*?[^/]}/changeset-download/{commit_id}', repo_route=True)
141 config.add_view(
142 RepoCommitsView,
143 attr='repo_commit_download',
144 route_name='repo_commit_download', request_method='GET',
145 renderer=None)
68 146
69 147 config.add_route(
70 148 name='repo_commit_data',
71 149 pattern='/{repo_name:.*?[^/]}/changeset-data/{commit_id}', repo_route=True)
150 config.add_view(
151 RepoCommitsView,
152 attr='repo_commit_data',
153 route_name='repo_commit_data', request_method='GET',
154 renderer='json_ext', xhr=True)
72 155
73 156 config.add_route(
74 157 name='repo_commit_comment_create',
75 158 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}/comment/create', repo_route=True)
159 config.add_view(
160 RepoCommitsView,
161 attr='repo_commit_comment_create',
162 route_name='repo_commit_comment_create', request_method='POST',
163 renderer='json_ext')
76 164
77 165 config.add_route(
78 166 name='repo_commit_comment_preview',
79 167 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}/comment/preview', repo_route=True)
168 config.add_view(
169 RepoCommitsView,
170 attr='repo_commit_comment_preview',
171 route_name='repo_commit_comment_preview', request_method='POST',
172 renderer='string', xhr=True)
80 173
81 174 config.add_route(
82 175 name='repo_commit_comment_history_view',
83 176 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}/comment/{comment_history_id}/history_view', repo_route=True)
177 config.add_view(
178 RepoCommitsView,
179 attr='repo_commit_comment_history_view',
180 route_name='repo_commit_comment_history_view', request_method='POST',
181 renderer='string', xhr=True)
84 182
85 183 config.add_route(
86 184 name='repo_commit_comment_attachment_upload',
87 185 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}/comment/attachment_upload', repo_route=True)
186 config.add_view(
187 RepoCommitsView,
188 attr='repo_commit_comment_attachment_upload',
189 route_name='repo_commit_comment_attachment_upload', request_method='POST',
190 renderer='json_ext', xhr=True)
88 191
89 192 config.add_route(
90 193 name='repo_commit_comment_delete',
91 194 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}/comment/{comment_id}/delete', repo_route=True)
195 config.add_view(
196 RepoCommitsView,
197 attr='repo_commit_comment_delete',
198 route_name='repo_commit_comment_delete', request_method='POST',
199 renderer='json_ext')
92 200
93 201 config.add_route(
94 202 name='repo_commit_comment_edit',
95 203 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}/comment/{comment_id}/edit', repo_route=True)
204 config.add_view(
205 RepoCommitsView,
206 attr='repo_commit_comment_edit',
207 route_name='repo_commit_comment_edit', request_method='POST',
208 renderer='json_ext')
96 209
97 210 # still working url for backward compat.
98 211 config.add_route(
99 212 name='repo_commit_raw_deprecated',
100 213 pattern='/{repo_name:.*?[^/]}/raw-changeset/{commit_id}', repo_route=True)
214 config.add_view(
215 RepoCommitsView,
216 attr='repo_commit_raw',
217 route_name='repo_commit_raw_deprecated', request_method='GET',
218 renderer=None)
101 219
102 220 # Files
103 221 config.add_route(
104 222 name='repo_archivefile',
105 223 pattern='/{repo_name:.*?[^/]}/archive/{fname:.*}', repo_route=True)
224 config.add_view(
225 RepoFilesView,
226 attr='repo_archivefile',
227 route_name='repo_archivefile', request_method='GET',
228 renderer=None)
106 229
107 230 config.add_route(
108 231 name='repo_files_diff',
109 232 pattern='/{repo_name:.*?[^/]}/diff/{f_path:.*}', repo_route=True)
233 config.add_view(
234 RepoFilesView,
235 attr='repo_files_diff',
236 route_name='repo_files_diff', request_method='GET',
237 renderer=None)
238
110 239 config.add_route( # legacy route to make old links work
111 240 name='repo_files_diff_2way_redirect',
112 241 pattern='/{repo_name:.*?[^/]}/diff-2way/{f_path:.*}', repo_route=True)
242 config.add_view(
243 RepoFilesView,
244 attr='repo_files_diff_2way_redirect',
245 route_name='repo_files_diff_2way_redirect', request_method='GET',
246 renderer=None)
113 247
114 248 config.add_route(
115 249 name='repo_files',
116 250 pattern='/{repo_name:.*?[^/]}/files/{commit_id}/{f_path:.*}', repo_route=True)
251 config.add_view(
252 RepoFilesView,
253 attr='repo_files',
254 route_name='repo_files', request_method='GET',
255 renderer=None)
256
117 257 config.add_route(
118 258 name='repo_files:default_path',
119 259 pattern='/{repo_name:.*?[^/]}/files/{commit_id}/', repo_route=True)
260 config.add_view(
261 RepoFilesView,
262 attr='repo_files',
263 route_name='repo_files:default_path', request_method='GET',
264 renderer=None)
265
120 266 config.add_route(
121 267 name='repo_files:default_commit',
122 268 pattern='/{repo_name:.*?[^/]}/files', repo_route=True)
269 config.add_view(
270 RepoFilesView,
271 attr='repo_files',
272 route_name='repo_files:default_commit', request_method='GET',
273 renderer=None)
123 274
124 275 config.add_route(
125 276 name='repo_files:rendered',
126 277 pattern='/{repo_name:.*?[^/]}/render/{commit_id}/{f_path:.*}', repo_route=True)
278 config.add_view(
279 RepoFilesView,
280 attr='repo_files',
281 route_name='repo_files:rendered', request_method='GET',
282 renderer=None)
127 283
128 284 config.add_route(
129 285 name='repo_files:annotated',
130 286 pattern='/{repo_name:.*?[^/]}/annotate/{commit_id}/{f_path:.*}', repo_route=True)
287 config.add_view(
288 RepoFilesView,
289 attr='repo_files',
290 route_name='repo_files:annotated', request_method='GET',
291 renderer=None)
292
131 293 config.add_route(
132 294 name='repo_files:annotated_previous',
133 295 pattern='/{repo_name:.*?[^/]}/annotate-previous/{commit_id}/{f_path:.*}', repo_route=True)
296 config.add_view(
297 RepoFilesView,
298 attr='repo_files_annotated_previous',
299 route_name='repo_files:annotated_previous', request_method='GET',
300 renderer=None)
134 301
135 302 config.add_route(
136 303 name='repo_nodetree_full',
137 304 pattern='/{repo_name:.*?[^/]}/nodetree_full/{commit_id}/{f_path:.*}', repo_route=True)
305 config.add_view(
306 RepoFilesView,
307 attr='repo_nodetree_full',
308 route_name='repo_nodetree_full', request_method='GET',
309 renderer=None, xhr=True)
310
138 311 config.add_route(
139 312 name='repo_nodetree_full:default_path',
140 313 pattern='/{repo_name:.*?[^/]}/nodetree_full/{commit_id}/', repo_route=True)
314 config.add_view(
315 RepoFilesView,
316 attr='repo_nodetree_full',
317 route_name='repo_nodetree_full:default_path', request_method='GET',
318 renderer=None, xhr=True)
141 319
142 320 config.add_route(
143 321 name='repo_files_nodelist',
144 322 pattern='/{repo_name:.*?[^/]}/nodelist/{commit_id}/{f_path:.*}', repo_route=True)
323 config.add_view(
324 RepoFilesView,
325 attr='repo_nodelist',
326 route_name='repo_files_nodelist', request_method='GET',
327 renderer='json_ext', xhr=True)
145 328
146 329 config.add_route(
147 330 name='repo_file_raw',
148 331 pattern='/{repo_name:.*?[^/]}/raw/{commit_id}/{f_path:.*}', repo_route=True)
332 config.add_view(
333 RepoFilesView,
334 attr='repo_file_raw',
335 route_name='repo_file_raw', request_method='GET',
336 renderer=None)
149 337
150 338 config.add_route(
151 339 name='repo_file_download',
152 340 pattern='/{repo_name:.*?[^/]}/download/{commit_id}/{f_path:.*}', repo_route=True)
341 config.add_view(
342 RepoFilesView,
343 attr='repo_file_download',
344 route_name='repo_file_download', request_method='GET',
345 renderer=None)
346
153 347 config.add_route( # backward compat to keep old links working
154 348 name='repo_file_download:legacy',
155 349 pattern='/{repo_name:.*?[^/]}/rawfile/{commit_id}/{f_path:.*}',
156 350 repo_route=True)
351 config.add_view(
352 RepoFilesView,
353 attr='repo_file_download',
354 route_name='repo_file_download:legacy', request_method='GET',
355 renderer=None)
157 356
158 357 config.add_route(
159 358 name='repo_file_history',
160 359 pattern='/{repo_name:.*?[^/]}/history/{commit_id}/{f_path:.*}', repo_route=True)
360 config.add_view(
361 RepoFilesView,
362 attr='repo_file_history',
363 route_name='repo_file_history', request_method='GET',
364 renderer='json_ext')
161 365
162 366 config.add_route(
163 367 name='repo_file_authors',
164 368 pattern='/{repo_name:.*?[^/]}/authors/{commit_id}/{f_path:.*}', repo_route=True)
369 config.add_view(
370 RepoFilesView,
371 attr='repo_file_authors',
372 route_name='repo_file_authors', request_method='GET',
373 renderer='rhodecode:templates/files/file_authors_box.mako')
165 374
166 375 config.add_route(
167 376 name='repo_files_check_head',
168 377 pattern='/{repo_name:.*?[^/]}/check_head/{commit_id}/{f_path:.*}',
169 378 repo_route=True)
379 config.add_view(
380 RepoFilesView,
381 attr='repo_files_check_head',
382 route_name='repo_files_check_head', request_method='POST',
383 renderer='json_ext', xhr=True)
384
170 385 config.add_route(
171 386 name='repo_files_remove_file',
172 387 pattern='/{repo_name:.*?[^/]}/remove_file/{commit_id}/{f_path:.*}',
173 388 repo_route=True)
389 config.add_view(
390 RepoFilesView,
391 attr='repo_files_remove_file',
392 route_name='repo_files_remove_file', request_method='GET',
393 renderer='rhodecode:templates/files/files_delete.mako')
394
174 395 config.add_route(
175 396 name='repo_files_delete_file',
176 397 pattern='/{repo_name:.*?[^/]}/delete_file/{commit_id}/{f_path:.*}',
177 398 repo_route=True)
399 config.add_view(
400 RepoFilesView,
401 attr='repo_files_delete_file',
402 route_name='repo_files_delete_file', request_method='POST',
403 renderer=None)
404
178 405 config.add_route(
179 406 name='repo_files_edit_file',
180 407 pattern='/{repo_name:.*?[^/]}/edit_file/{commit_id}/{f_path:.*}',
181 408 repo_route=True)
409 config.add_view(
410 RepoFilesView,
411 attr='repo_files_edit_file',
412 route_name='repo_files_edit_file', request_method='GET',
413 renderer='rhodecode:templates/files/files_edit.mako')
414
182 415 config.add_route(
183 416 name='repo_files_update_file',
184 417 pattern='/{repo_name:.*?[^/]}/update_file/{commit_id}/{f_path:.*}',
185 418 repo_route=True)
419 config.add_view(
420 RepoFilesView,
421 attr='repo_files_update_file',
422 route_name='repo_files_update_file', request_method='POST',
423 renderer=None)
424
186 425 config.add_route(
187 426 name='repo_files_add_file',
188 427 pattern='/{repo_name:.*?[^/]}/add_file/{commit_id}/{f_path:.*}',
189 428 repo_route=True)
429 config.add_view(
430 RepoFilesView,
431 attr='repo_files_add_file',
432 route_name='repo_files_add_file', request_method='GET',
433 renderer='rhodecode:templates/files/files_add.mako')
434
190 435 config.add_route(
191 436 name='repo_files_upload_file',
192 437 pattern='/{repo_name:.*?[^/]}/upload_file/{commit_id}/{f_path:.*}',
193 438 repo_route=True)
439 config.add_view(
440 RepoFilesView,
441 attr='repo_files_add_file',
442 route_name='repo_files_upload_file', request_method='GET',
443 renderer='rhodecode:templates/files/files_upload.mako')
444 config.add_view( # POST creates
445 RepoFilesView,
446 attr='repo_files_upload_file',
447 route_name='repo_files_upload_file', request_method='POST',
448 renderer='json_ext')
449
194 450 config.add_route(
195 451 name='repo_files_create_file',
196 452 pattern='/{repo_name:.*?[^/]}/create_file/{commit_id}/{f_path:.*}',
197 453 repo_route=True)
454 config.add_view( # POST creates
455 RepoFilesView,
456 attr='repo_files_create_file',
457 route_name='repo_files_create_file', request_method='POST',
458 renderer=None)
198 459
199 460 # Refs data
200 461 config.add_route(
201 462 name='repo_refs_data',
202 463 pattern='/{repo_name:.*?[^/]}/refs-data', repo_route=True)
464 config.add_view(
465 RepoSummaryView,
466 attr='repo_refs_data',
467 route_name='repo_refs_data', request_method='GET',
468 renderer='json_ext')
203 469
204 470 config.add_route(
205 471 name='repo_refs_changelog_data',
206 472 pattern='/{repo_name:.*?[^/]}/refs-data-changelog', repo_route=True)
473 config.add_view(
474 RepoSummaryView,
475 attr='repo_refs_changelog_data',
476 route_name='repo_refs_changelog_data', request_method='GET',
477 renderer='json_ext')
207 478
208 479 config.add_route(
209 480 name='repo_stats',
210 481 pattern='/{repo_name:.*?[^/]}/repo_stats/{commit_id}', repo_route=True)
482 config.add_view(
483 RepoSummaryView,
484 attr='repo_stats',
485 route_name='repo_stats', request_method='GET',
486 renderer='json_ext')
211 487
212 488 # Commits
213 489 config.add_route(
214 490 name='repo_commits',
215 491 pattern='/{repo_name:.*?[^/]}/commits', repo_route=True)
492 config.add_view(
493 RepoChangelogView,
494 attr='repo_changelog',
495 route_name='repo_commits', request_method='GET',
496 renderer='rhodecode:templates/commits/changelog.mako')
497 # old routes for backward compat
498 config.add_view(
499 RepoChangelogView,
500 attr='repo_changelog',
501 route_name='repo_changelog', request_method='GET',
502 renderer='rhodecode:templates/commits/changelog.mako')
503
504 config.add_route(
505 name='repo_commits_elements',
506 pattern='/{repo_name:.*?[^/]}/commits_elements', repo_route=True)
507 config.add_view(
508 RepoChangelogView,
509 attr='repo_commits_elements',
510 route_name='repo_commits_elements', request_method=('GET', 'POST'),
511 renderer='rhodecode:templates/commits/changelog_elements.mako',
512 xhr=True)
513
514 config.add_route(
515 name='repo_commits_elements_file',
516 pattern='/{repo_name:.*?[^/]}/commits_elements/{commit_id}/{f_path:.*}', repo_route=True)
517 config.add_view(
518 RepoChangelogView,
519 attr='repo_commits_elements',
520 route_name='repo_commits_elements_file', request_method=('GET', 'POST'),
521 renderer='rhodecode:templates/commits/changelog_elements.mako',
522 xhr=True)
523
216 524 config.add_route(
217 525 name='repo_commits_file',
218 526 pattern='/{repo_name:.*?[^/]}/commits/{commit_id}/{f_path:.*}', repo_route=True)
219 config.add_route(
220 name='repo_commits_elements',
221 pattern='/{repo_name:.*?[^/]}/commits_elements', repo_route=True)
222 config.add_route(
223 name='repo_commits_elements_file',
224 pattern='/{repo_name:.*?[^/]}/commits_elements/{commit_id}/{f_path:.*}', repo_route=True)
527 config.add_view(
528 RepoChangelogView,
529 attr='repo_changelog',
530 route_name='repo_commits_file', request_method='GET',
531 renderer='rhodecode:templates/commits/changelog.mako')
532 # old routes for backward compat
533 config.add_view(
534 RepoChangelogView,
535 attr='repo_changelog',
536 route_name='repo_changelog_file', request_method='GET',
537 renderer='rhodecode:templates/commits/changelog.mako')
225 538
226 539 # Changelog (old deprecated name for commits page)
227 540 config.add_route(
@@ -235,25 +548,50 b' def includeme(config):'
235 548 config.add_route(
236 549 name='repo_compare_select',
237 550 pattern='/{repo_name:.*?[^/]}/compare', repo_route=True)
551 config.add_view(
552 RepoCompareView,
553 attr='compare_select',
554 route_name='repo_compare_select', request_method='GET',
555 renderer='rhodecode:templates/compare/compare_diff.mako')
238 556
239 557 config.add_route(
240 558 name='repo_compare',
241 559 pattern='/{repo_name:.*?[^/]}/compare/{source_ref_type}@{source_ref:.*?}...{target_ref_type}@{target_ref:.*?}', repo_route=True)
560 config.add_view(
561 RepoCompareView,
562 attr='compare',
563 route_name='repo_compare', request_method='GET',
564 renderer=None)
242 565
243 566 # Tags
244 567 config.add_route(
245 568 name='tags_home',
246 569 pattern='/{repo_name:.*?[^/]}/tags', repo_route=True)
570 config.add_view(
571 RepoTagsView,
572 attr='tags',
573 route_name='tags_home', request_method='GET',
574 renderer='rhodecode:templates/tags/tags.mako')
247 575
248 576 # Branches
249 577 config.add_route(
250 578 name='branches_home',
251 579 pattern='/{repo_name:.*?[^/]}/branches', repo_route=True)
580 config.add_view(
581 RepoBranchesView,
582 attr='branches',
583 route_name='branches_home', request_method='GET',
584 renderer='rhodecode:templates/branches/branches.mako')
252 585
253 586 # Bookmarks
254 587 config.add_route(
255 588 name='bookmarks_home',
256 589 pattern='/{repo_name:.*?[^/]}/bookmarks', repo_route=True)
590 config.add_view(
591 RepoBookmarksView,
592 attr='bookmarks',
593 route_name='bookmarks_home', request_method='GET',
594 renderer='rhodecode:templates/bookmarks/bookmarks.mako')
257 595
258 596 # Forks
259 597 config.add_route(
@@ -261,195 +599,426 b' def includeme(config):'
261 599 pattern='/{repo_name:.*?[^/]}/fork', repo_route=True,
262 600 repo_forbid_when_archived=True,
263 601 repo_accepted_types=['hg', 'git'])
602 config.add_view(
603 RepoForksView,
604 attr='repo_fork_new',
605 route_name='repo_fork_new', request_method='GET',
606 renderer='rhodecode:templates/forks/forks.mako')
264 607
265 608 config.add_route(
266 609 name='repo_fork_create',
267 610 pattern='/{repo_name:.*?[^/]}/fork/create', repo_route=True,
268 611 repo_forbid_when_archived=True,
269 612 repo_accepted_types=['hg', 'git'])
613 config.add_view(
614 RepoForksView,
615 attr='repo_fork_create',
616 route_name='repo_fork_create', request_method='POST',
617 renderer='rhodecode:templates/forks/fork.mako')
270 618
271 619 config.add_route(
272 620 name='repo_forks_show_all',
273 621 pattern='/{repo_name:.*?[^/]}/forks', repo_route=True,
274 622 repo_accepted_types=['hg', 'git'])
623 config.add_view(
624 RepoForksView,
625 attr='repo_forks_show_all',
626 route_name='repo_forks_show_all', request_method='GET',
627 renderer='rhodecode:templates/forks/forks.mako')
628
275 629 config.add_route(
276 630 name='repo_forks_data',
277 631 pattern='/{repo_name:.*?[^/]}/forks/data', repo_route=True,
278 632 repo_accepted_types=['hg', 'git'])
633 config.add_view(
634 RepoForksView,
635 attr='repo_forks_data',
636 route_name='repo_forks_data', request_method='GET',
637 renderer='json_ext', xhr=True)
279 638
280 639 # Pull Requests
281 640 config.add_route(
282 641 name='pullrequest_show',
283 642 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}',
284 643 repo_route=True)
644 config.add_view(
645 RepoPullRequestsView,
646 attr='pull_request_show',
647 route_name='pullrequest_show', request_method='GET',
648 renderer='rhodecode:templates/pullrequests/pullrequest_show.mako')
285 649
286 650 config.add_route(
287 651 name='pullrequest_show_all',
288 652 pattern='/{repo_name:.*?[^/]}/pull-request',
289 653 repo_route=True, repo_accepted_types=['hg', 'git'])
654 config.add_view(
655 RepoPullRequestsView,
656 attr='pull_request_list',
657 route_name='pullrequest_show_all', request_method='GET',
658 renderer='rhodecode:templates/pullrequests/pullrequests.mako')
290 659
291 660 config.add_route(
292 661 name='pullrequest_show_all_data',
293 662 pattern='/{repo_name:.*?[^/]}/pull-request-data',
294 663 repo_route=True, repo_accepted_types=['hg', 'git'])
664 config.add_view(
665 RepoPullRequestsView,
666 attr='pull_request_list_data',
667 route_name='pullrequest_show_all_data', request_method='GET',
668 renderer='json_ext', xhr=True)
295 669
296 670 config.add_route(
297 671 name='pullrequest_repo_refs',
298 672 pattern='/{repo_name:.*?[^/]}/pull-request/refs/{target_repo_name:.*?[^/]}',
299 673 repo_route=True)
674 config.add_view(
675 RepoPullRequestsView,
676 attr='pull_request_repo_refs',
677 route_name='pullrequest_repo_refs', request_method='GET',
678 renderer='json_ext', xhr=True)
300 679
301 680 config.add_route(
302 681 name='pullrequest_repo_targets',
303 682 pattern='/{repo_name:.*?[^/]}/pull-request/repo-targets',
304 683 repo_route=True)
684 config.add_view(
685 RepoPullRequestsView,
686 attr='pullrequest_repo_targets',
687 route_name='pullrequest_repo_targets', request_method='GET',
688 renderer='json_ext', xhr=True)
305 689
306 690 config.add_route(
307 691 name='pullrequest_new',
308 692 pattern='/{repo_name:.*?[^/]}/pull-request/new',
309 693 repo_route=True, repo_accepted_types=['hg', 'git'],
310 694 repo_forbid_when_archived=True)
695 config.add_view(
696 RepoPullRequestsView,
697 attr='pull_request_new',
698 route_name='pullrequest_new', request_method='GET',
699 renderer='rhodecode:templates/pullrequests/pullrequest.mako')
311 700
312 701 config.add_route(
313 702 name='pullrequest_create',
314 703 pattern='/{repo_name:.*?[^/]}/pull-request/create',
315 704 repo_route=True, repo_accepted_types=['hg', 'git'],
316 705 repo_forbid_when_archived=True)
706 config.add_view(
707 RepoPullRequestsView,
708 attr='pull_request_create',
709 route_name='pullrequest_create', request_method='POST',
710 renderer=None)
317 711
318 712 config.add_route(
319 713 name='pullrequest_update',
320 714 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/update',
321 715 repo_route=True, repo_forbid_when_archived=True)
716 config.add_view(
717 RepoPullRequestsView,
718 attr='pull_request_update',
719 route_name='pullrequest_update', request_method='POST',
720 renderer='json_ext')
322 721
323 722 config.add_route(
324 723 name='pullrequest_merge',
325 724 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/merge',
326 725 repo_route=True, repo_forbid_when_archived=True)
726 config.add_view(
727 RepoPullRequestsView,
728 attr='pull_request_merge',
729 route_name='pullrequest_merge', request_method='POST',
730 renderer='json_ext')
327 731
328 732 config.add_route(
329 733 name='pullrequest_delete',
330 734 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/delete',
331 735 repo_route=True, repo_forbid_when_archived=True)
736 config.add_view(
737 RepoPullRequestsView,
738 attr='pull_request_delete',
739 route_name='pullrequest_delete', request_method='POST',
740 renderer='json_ext')
332 741
333 742 config.add_route(
334 743 name='pullrequest_comment_create',
335 744 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/comment',
336 745 repo_route=True)
746 config.add_view(
747 RepoPullRequestsView,
748 attr='pull_request_comment_create',
749 route_name='pullrequest_comment_create', request_method='POST',
750 renderer='json_ext')
337 751
338 752 config.add_route(
339 753 name='pullrequest_comment_edit',
340 754 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/comment/{comment_id}/edit',
341 755 repo_route=True, repo_accepted_types=['hg', 'git'])
756 config.add_view(
757 RepoPullRequestsView,
758 attr='pull_request_comment_edit',
759 route_name='pullrequest_comment_edit', request_method='POST',
760 renderer='json_ext')
342 761
343 762 config.add_route(
344 763 name='pullrequest_comment_delete',
345 764 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/comment/{comment_id}/delete',
346 765 repo_route=True, repo_accepted_types=['hg', 'git'])
766 config.add_view(
767 RepoPullRequestsView,
768 attr='pull_request_comment_delete',
769 route_name='pullrequest_comment_delete', request_method='POST',
770 renderer='json_ext')
347 771
348 772 config.add_route(
349 773 name='pullrequest_comments',
350 774 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/comments',
351 775 repo_route=True)
776 config.add_view(
777 RepoPullRequestsView,
778 attr='pullrequest_comments',
779 route_name='pullrequest_comments', request_method='POST',
780 renderer='string_html', xhr=True)
352 781
353 782 config.add_route(
354 783 name='pullrequest_todos',
355 784 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/todos',
356 785 repo_route=True)
786 config.add_view(
787 RepoPullRequestsView,
788 attr='pullrequest_todos',
789 route_name='pullrequest_todos', request_method='POST',
790 renderer='string_html', xhr=True)
357 791
358 792 config.add_route(
359 793 name='pullrequest_drafts',
360 794 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/drafts',
361 795 repo_route=True)
796 config.add_view(
797 RepoPullRequestsView,
798 attr='pullrequest_drafts',
799 route_name='pullrequest_drafts', request_method='POST',
800 renderer='string_html', xhr=True)
362 801
363 802 # Artifacts, (EE feature)
364 803 config.add_route(
365 804 name='repo_artifacts_list',
366 805 pattern='/{repo_name:.*?[^/]}/artifacts', repo_route=True)
806 config.add_view(
807 RepoArtifactsView,
808 attr='repo_artifacts',
809 route_name='repo_artifacts_list', request_method='GET',
810 renderer='rhodecode:templates/artifacts/artifact_list.mako')
367 811
368 812 # Settings
369 813 config.add_route(
370 814 name='edit_repo',
371 815 pattern='/{repo_name:.*?[^/]}/settings', repo_route=True)
816 config.add_view(
817 RepoSettingsView,
818 attr='edit_settings',
819 route_name='edit_repo', request_method='GET',
820 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
372 821 # update is POST on edit_repo
822 config.add_view(
823 RepoSettingsView,
824 attr='edit_settings_update',
825 route_name='edit_repo', request_method='POST',
826 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
373 827
374 828 # Settings advanced
375 829 config.add_route(
376 830 name='edit_repo_advanced',
377 831 pattern='/{repo_name:.*?[^/]}/settings/advanced', repo_route=True)
832 config.add_view(
833 RepoSettingsAdvancedView,
834 attr='edit_advanced',
835 route_name='edit_repo_advanced', request_method='GET',
836 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
837
378 838 config.add_route(
379 839 name='edit_repo_advanced_archive',
380 840 pattern='/{repo_name:.*?[^/]}/settings/advanced/archive', repo_route=True)
841 config.add_view(
842 RepoSettingsAdvancedView,
843 attr='edit_advanced_archive',
844 route_name='edit_repo_advanced_archive', request_method='POST',
845 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
846
381 847 config.add_route(
382 848 name='edit_repo_advanced_delete',
383 849 pattern='/{repo_name:.*?[^/]}/settings/advanced/delete', repo_route=True)
850 config.add_view(
851 RepoSettingsAdvancedView,
852 attr='edit_advanced_delete',
853 route_name='edit_repo_advanced_delete', request_method='POST',
854 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
855
384 856 config.add_route(
385 857 name='edit_repo_advanced_locking',
386 858 pattern='/{repo_name:.*?[^/]}/settings/advanced/locking', repo_route=True)
859 config.add_view(
860 RepoSettingsAdvancedView,
861 attr='edit_advanced_toggle_locking',
862 route_name='edit_repo_advanced_locking', request_method='POST',
863 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
864
387 865 config.add_route(
388 866 name='edit_repo_advanced_journal',
389 867 pattern='/{repo_name:.*?[^/]}/settings/advanced/journal', repo_route=True)
868 config.add_view(
869 RepoSettingsAdvancedView,
870 attr='edit_advanced_journal',
871 route_name='edit_repo_advanced_journal', request_method='POST',
872 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
873
390 874 config.add_route(
391 875 name='edit_repo_advanced_fork',
392 876 pattern='/{repo_name:.*?[^/]}/settings/advanced/fork', repo_route=True)
877 config.add_view(
878 RepoSettingsAdvancedView,
879 attr='edit_advanced_fork',
880 route_name='edit_repo_advanced_fork', request_method='POST',
881 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
393 882
394 883 config.add_route(
395 884 name='edit_repo_advanced_hooks',
396 885 pattern='/{repo_name:.*?[^/]}/settings/advanced/hooks', repo_route=True)
886 config.add_view(
887 RepoSettingsAdvancedView,
888 attr='edit_advanced_install_hooks',
889 route_name='edit_repo_advanced_hooks', request_method='GET',
890 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
397 891
398 892 # Caches
399 893 config.add_route(
400 894 name='edit_repo_caches',
401 895 pattern='/{repo_name:.*?[^/]}/settings/caches', repo_route=True)
896 config.add_view(
897 RepoCachesView,
898 attr='repo_caches',
899 route_name='edit_repo_caches', request_method='GET',
900 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
901 config.add_view(
902 RepoCachesView,
903 attr='repo_caches_purge',
904 route_name='edit_repo_caches', request_method='POST')
402 905
403 906 # Permissions
404 907 config.add_route(
405 908 name='edit_repo_perms',
406 909 pattern='/{repo_name:.*?[^/]}/settings/permissions', repo_route=True)
910 config.add_view(
911 RepoSettingsPermissionsView,
912 attr='edit_permissions',
913 route_name='edit_repo_perms', request_method='GET',
914 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
915 config.add_view(
916 RepoSettingsPermissionsView,
917 attr='edit_permissions_update',
918 route_name='edit_repo_perms', request_method='POST',
919 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
407 920
408 921 config.add_route(
409 922 name='edit_repo_perms_set_private',
410 923 pattern='/{repo_name:.*?[^/]}/settings/permissions/set_private', repo_route=True)
924 config.add_view(
925 RepoSettingsPermissionsView,
926 attr='edit_permissions_set_private_repo',
927 route_name='edit_repo_perms_set_private', request_method='POST',
928 renderer='json_ext')
411 929
412 930 # Permissions Branch (EE feature)
413 931 config.add_route(
414 932 name='edit_repo_perms_branch',
415 933 pattern='/{repo_name:.*?[^/]}/settings/branch_permissions', repo_route=True)
934 config.add_view(
935 RepoBranchesView,
936 attr='branches',
937 route_name='edit_repo_perms_branch', request_method='GET',
938 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
939
416 940 config.add_route(
417 941 name='edit_repo_perms_branch_delete',
418 942 pattern='/{repo_name:.*?[^/]}/settings/branch_permissions/{rule_id}/delete',
419 943 repo_route=True)
944 ## Only implemented in EE
420 945
421 946 # Maintenance
422 947 config.add_route(
423 948 name='edit_repo_maintenance',
424 949 pattern='/{repo_name:.*?[^/]}/settings/maintenance', repo_route=True)
950 config.add_view(
951 RepoMaintenanceView,
952 attr='repo_maintenance',
953 route_name='edit_repo_maintenance_execute', request_method='GET',
954 renderer='json', xhr=True)
425 955
426 956 config.add_route(
427 957 name='edit_repo_maintenance_execute',
428 958 pattern='/{repo_name:.*?[^/]}/settings/maintenance/execute', repo_route=True)
959 config.add_view(
960 RepoMaintenanceView,
961 attr='repo_maintenance_execute',
962 route_name='edit_repo_maintenance', request_method='GET',
963 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
429 964
430 965 # Fields
431 966 config.add_route(
432 967 name='edit_repo_fields',
433 968 pattern='/{repo_name:.*?[^/]}/settings/fields', repo_route=True)
969 config.add_view(
970 RepoSettingsFieldsView,
971 attr='repo_field_edit',
972 route_name='edit_repo_fields', request_method='GET',
973 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
974
434 975 config.add_route(
435 976 name='edit_repo_fields_create',
436 977 pattern='/{repo_name:.*?[^/]}/settings/fields/create', repo_route=True)
978 config.add_view(
979 RepoSettingsFieldsView,
980 attr='repo_field_create',
981 route_name='edit_repo_fields_create', request_method='POST',
982 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
983
437 984 config.add_route(
438 985 name='edit_repo_fields_delete',
439 986 pattern='/{repo_name:.*?[^/]}/settings/fields/{field_id}/delete', repo_route=True)
987 config.add_view(
988 RepoSettingsFieldsView,
989 attr='repo_field_delete',
990 route_name='edit_repo_fields_delete', request_method='POST',
991 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
440 992
441 993 # Locking
442 994 config.add_route(
443 995 name='repo_edit_toggle_locking',
444 996 pattern='/{repo_name:.*?[^/]}/settings/toggle_locking', repo_route=True)
997 config.add_view(
998 RepoSettingsView,
999 attr='edit_advanced_toggle_locking',
1000 route_name='repo_edit_toggle_locking', request_method='GET',
1001 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
445 1002
446 1003 # Remote
447 1004 config.add_route(
448 1005 name='edit_repo_remote',
449 1006 pattern='/{repo_name:.*?[^/]}/settings/remote', repo_route=True)
1007 config.add_view(
1008 RepoSettingsRemoteView,
1009 attr='repo_remote_edit_form',
1010 route_name='edit_repo_remote', request_method='GET',
1011 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
1012
450 1013 config.add_route(
451 1014 name='edit_repo_remote_pull',
452 1015 pattern='/{repo_name:.*?[^/]}/settings/remote/pull', repo_route=True)
1016 config.add_view(
1017 RepoSettingsRemoteView,
1018 attr='repo_remote_pull_changes',
1019 route_name='edit_repo_remote_pull', request_method='POST',
1020 renderer=None)
1021
453 1022 config.add_route(
454 1023 name='edit_repo_remote_push',
455 1024 pattern='/{repo_name:.*?[^/]}/settings/remote/push', repo_route=True)
@@ -458,91 +1027,201 b' def includeme(config):'
458 1027 config.add_route(
459 1028 name='edit_repo_statistics',
460 1029 pattern='/{repo_name:.*?[^/]}/settings/statistics', repo_route=True)
1030 config.add_view(
1031 RepoSettingsView,
1032 attr='edit_statistics_form',
1033 route_name='edit_repo_statistics', request_method='GET',
1034 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
1035
461 1036 config.add_route(
462 1037 name='edit_repo_statistics_reset',
463 1038 pattern='/{repo_name:.*?[^/]}/settings/statistics/update', repo_route=True)
1039 config.add_view(
1040 RepoSettingsView,
1041 attr='repo_statistics_reset',
1042 route_name='edit_repo_statistics_reset', request_method='POST',
1043 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
464 1044
465 1045 # Issue trackers
466 1046 config.add_route(
467 1047 name='edit_repo_issuetracker',
468 1048 pattern='/{repo_name:.*?[^/]}/settings/issue_trackers', repo_route=True)
1049 config.add_view(
1050 RepoSettingsIssueTrackersView,
1051 attr='repo_issuetracker',
1052 route_name='edit_repo_issuetracker', request_method='GET',
1053 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
1054
469 1055 config.add_route(
470 1056 name='edit_repo_issuetracker_test',
471 1057 pattern='/{repo_name:.*?[^/]}/settings/issue_trackers/test', repo_route=True)
1058 config.add_view(
1059 RepoSettingsIssueTrackersView,
1060 attr='repo_issuetracker_test',
1061 route_name='edit_repo_issuetracker_test', request_method='POST',
1062 renderer='string', xhr=True)
1063
472 1064 config.add_route(
473 1065 name='edit_repo_issuetracker_delete',
474 1066 pattern='/{repo_name:.*?[^/]}/settings/issue_trackers/delete', repo_route=True)
1067 config.add_view(
1068 RepoSettingsIssueTrackersView,
1069 attr='repo_issuetracker_delete',
1070 route_name='edit_repo_issuetracker_delete', request_method='POST',
1071 renderer='json_ext', xhr=True)
1072
475 1073 config.add_route(
476 1074 name='edit_repo_issuetracker_update',
477 1075 pattern='/{repo_name:.*?[^/]}/settings/issue_trackers/update', repo_route=True)
1076 config.add_view(
1077 RepoSettingsIssueTrackersView,
1078 attr='repo_issuetracker_update',
1079 route_name='edit_repo_issuetracker_update', request_method='POST',
1080 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
478 1081
479 1082 # VCS Settings
480 1083 config.add_route(
481 1084 name='edit_repo_vcs',
482 1085 pattern='/{repo_name:.*?[^/]}/settings/vcs', repo_route=True)
1086 config.add_view(
1087 RepoSettingsVcsView,
1088 attr='repo_vcs_settings',
1089 route_name='edit_repo_vcs', request_method='GET',
1090 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
1091
483 1092 config.add_route(
484 1093 name='edit_repo_vcs_update',
485 1094 pattern='/{repo_name:.*?[^/]}/settings/vcs/update', repo_route=True)
1095 config.add_view(
1096 RepoSettingsVcsView,
1097 attr='repo_settings_vcs_update',
1098 route_name='edit_repo_vcs_update', request_method='POST',
1099 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
486 1100
487 1101 # svn pattern
488 1102 config.add_route(
489 1103 name='edit_repo_vcs_svn_pattern_delete',
490 1104 pattern='/{repo_name:.*?[^/]}/settings/vcs/svn_pattern/delete', repo_route=True)
1105 config.add_view(
1106 RepoSettingsVcsView,
1107 attr='repo_settings_delete_svn_pattern',
1108 route_name='edit_repo_vcs_svn_pattern_delete', request_method='POST',
1109 renderer='json_ext', xhr=True)
491 1110
492 1111 # Repo Review Rules (EE feature)
493 1112 config.add_route(
494 1113 name='repo_reviewers',
495 1114 pattern='/{repo_name:.*?[^/]}/settings/review/rules', repo_route=True)
1115 config.add_view(
1116 RepoReviewRulesView,
1117 attr='repo_review_rules',
1118 route_name='repo_reviewers', request_method='GET',
1119 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
496 1120
497 1121 config.add_route(
498 1122 name='repo_default_reviewers_data',
499 1123 pattern='/{repo_name:.*?[^/]}/settings/review/default-reviewers', repo_route=True)
1124 config.add_view(
1125 RepoReviewRulesView,
1126 attr='repo_default_reviewers_data',
1127 route_name='repo_default_reviewers_data', request_method='GET',
1128 renderer='json_ext')
500 1129
501 1130 # Repo Automation (EE feature)
502 1131 config.add_route(
503 1132 name='repo_automation',
504 1133 pattern='/{repo_name:.*?[^/]}/settings/automation', repo_route=True)
1134 config.add_view(
1135 RepoAutomationView,
1136 attr='repo_automation',
1137 route_name='repo_automation', request_method='GET',
1138 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
505 1139
506 1140 # Strip
507 1141 config.add_route(
508 1142 name='edit_repo_strip',
509 1143 pattern='/{repo_name:.*?[^/]}/settings/strip', repo_route=True)
1144 config.add_view(
1145 RepoStripView,
1146 attr='strip',
1147 route_name='edit_repo_strip', request_method='GET',
1148 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
510 1149
511 1150 config.add_route(
512 1151 name='strip_check',
513 1152 pattern='/{repo_name:.*?[^/]}/settings/strip_check', repo_route=True)
1153 config.add_view(
1154 RepoStripView,
1155 attr='strip_check',
1156 route_name='strip_check', request_method='POST',
1157 renderer='json', xhr=True)
514 1158
515 1159 config.add_route(
516 1160 name='strip_execute',
517 1161 pattern='/{repo_name:.*?[^/]}/settings/strip_execute', repo_route=True)
1162 config.add_view(
1163 RepoStripView,
1164 attr='strip_execute',
1165 route_name='strip_execute', request_method='POST',
1166 renderer='json', xhr=True)
518 1167
519 1168 # Audit logs
520 1169 config.add_route(
521 1170 name='edit_repo_audit_logs',
522 1171 pattern='/{repo_name:.*?[^/]}/settings/audit_logs', repo_route=True)
1172 config.add_view(
1173 AuditLogsView,
1174 attr='repo_audit_logs',
1175 route_name='edit_repo_audit_logs', request_method='GET',
1176 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
523 1177
524 1178 # ATOM/RSS Feed, shouldn't contain slashes for outlook compatibility
525 1179 config.add_route(
526 1180 name='rss_feed_home',
527 1181 pattern='/{repo_name:.*?[^/]}/feed-rss', repo_route=True)
1182 config.add_view(
1183 RepoFeedView,
1184 attr='rss',
1185 route_name='rss_feed_home', request_method='GET', renderer=None)
1186
1187 config.add_route(
1188 name='rss_feed_home_old',
1189 pattern='/{repo_name:.*?[^/]}/feed/rss', repo_route=True)
1190 config.add_view(
1191 RepoFeedView,
1192 attr='rss',
1193 route_name='rss_feed_home_old', request_method='GET', renderer=None)
528 1194
529 1195 config.add_route(
530 1196 name='atom_feed_home',
531 1197 pattern='/{repo_name:.*?[^/]}/feed-atom', repo_route=True)
532
533 config.add_route(
534 name='rss_feed_home_old',
535 pattern='/{repo_name:.*?[^/]}/feed/rss', repo_route=True)
1198 config.add_view(
1199 RepoFeedView,
1200 attr='atom',
1201 route_name='atom_feed_home', request_method='GET', renderer=None)
536 1202
537 1203 config.add_route(
538 1204 name='atom_feed_home_old',
539 1205 pattern='/{repo_name:.*?[^/]}/feed/atom', repo_route=True)
1206 config.add_view(
1207 RepoFeedView,
1208 attr='atom',
1209 route_name='atom_feed_home_old', request_method='GET', renderer=None)
540 1210
541 1211 # NOTE(marcink): needs to be at the end for catch-all
542 1212 add_route_with_slash(
543 1213 config,
544 1214 name='repo_summary',
545 1215 pattern='/{repo_name:.*?[^/]}', repo_route=True)
546
547 # Scan module for configuration decorators.
548 config.scan('.views', ignore='.tests')
1216 config.add_view(
1217 RepoSummaryView,
1218 attr='summary',
1219 route_name='repo_summary', request_method='GET',
1220 renderer='rhodecode:templates/summary/summary.mako')
1221
1222 # TODO(marcink): there's no such route??
1223 config.add_view(
1224 RepoSummaryView,
1225 attr='summary',
1226 route_name='repo_summary_slash', request_method='GET',
1227 renderer='rhodecode:templates/summary/summary.mako') No newline at end of file
@@ -20,7 +20,7 b''
20 20
21 21 import logging
22 22
23 from pyramid.view import view_config
23
24 24
25 25 from rhodecode.apps._base import RepoAppView
26 26 from rhodecode.lib.auth import (
@@ -39,9 +39,6 b' class RepoArtifactsView(RepoAppView):'
39 39 @LoginRequired()
40 40 @HasRepoPermissionAnyDecorator(
41 41 'repository.read', 'repository.write', 'repository.admin')
42 @view_config(
43 route_name='repo_artifacts_list', request_method='GET',
44 renderer='rhodecode:templates/artifacts/artifact_list.mako')
45 42 def repo_artifacts(self):
46 43 c = self.load_default_context()
47 44 c.active = 'artifacts'
@@ -19,7 +19,7 b''
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20
21 21 import logging
22 from pyramid.view import view_config
22
23 23
24 24 from rhodecode.apps._base import RepoAppView
25 25 from rhodecode.lib.helpers import SqlPage
@@ -38,9 +38,6 b' class AuditLogsView(RepoAppView):'
38 38
39 39 @LoginRequired()
40 40 @HasRepoPermissionAnyDecorator('repository.admin')
41 @view_config(
42 route_name='edit_repo_audit_logs', request_method='GET',
43 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
44 41 def repo_audit_logs(self):
45 42 _ = self.request.translate
46 43 c = self.load_default_context()
@@ -20,7 +20,7 b''
20 20
21 21 import logging
22 22
23 from pyramid.view import view_config
23
24 24
25 25 from rhodecode.apps._base import RepoAppView
26 26 from rhodecode.apps.repository.utils import get_default_reviewers_data
@@ -36,9 +36,6 b' class RepoAutomationView(RepoAppView):'
36 36
37 37 @LoginRequired()
38 38 @HasRepoPermissionAnyDecorator('repository.admin')
39 @view_config(
40 route_name='repo_automation', request_method='GET',
41 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
42 39 def repo_automation(self):
43 40 c = self.load_default_context()
44 41 c.active = 'automation'
@@ -20,7 +20,7 b''
20 20 import logging
21 21
22 22 from pyramid.httpexceptions import HTTPNotFound
23 from pyramid.view import view_config
23
24 24
25 25 from rhodecode.apps._base import BaseReferencesView
26 26 from rhodecode.lib.ext_json import json
@@ -36,9 +36,6 b' class RepoBookmarksView(BaseReferencesVi'
36 36 @LoginRequired()
37 37 @HasRepoPermissionAnyDecorator(
38 38 'repository.read', 'repository.write', 'repository.admin')
39 @view_config(
40 route_name='bookmarks_home', request_method='GET',
41 renderer='rhodecode:templates/bookmarks/bookmarks.mako')
42 39 def bookmarks(self):
43 40 c = self.load_default_context()
44 41
@@ -20,7 +20,7 b''
20 20
21 21 import logging
22 22
23 from pyramid.view import view_config
23
24 24
25 25 from rhodecode.apps._base import RepoAppView
26 26 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
@@ -36,9 +36,6 b' class RepoSettingsBranchPermissionsView('
36 36
37 37 @LoginRequired()
38 38 @HasRepoPermissionAnyDecorator('repository.admin')
39 @view_config(
40 route_name='edit_repo_perms_branch', request_method='GET',
41 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
42 39 def branch_permissions(self):
43 40 c = self.load_default_context()
44 41 c.active = 'permissions_branch'
@@ -19,7 +19,7 b''
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20
21 21 import logging
22 from pyramid.view import view_config
22
23 23
24 24 from rhodecode.apps._base import BaseReferencesView
25 25 from rhodecode.lib.ext_json import json
@@ -34,9 +34,6 b' class RepoBranchesView(BaseReferencesVie'
34 34 @LoginRequired()
35 35 @HasRepoPermissionAnyDecorator(
36 36 'repository.read', 'repository.write', 'repository.admin')
37 @view_config(
38 route_name='branches_home', request_method='GET',
39 renderer='rhodecode:templates/branches/branches.mako')
40 37 def branches(self):
41 38 c = self.load_default_context()
42 39
@@ -22,7 +22,7 b' import os'
22 22 import logging
23 23
24 24 from pyramid.httpexceptions import HTTPFound
25 from pyramid.view import view_config
25
26 26
27 27 from rhodecode.apps._base import RepoAppView
28 28 from rhodecode.lib.auth import (
@@ -42,9 +42,6 b' class RepoCachesView(RepoAppView):'
42 42
43 43 @LoginRequired()
44 44 @HasRepoPermissionAnyDecorator('repository.admin')
45 @view_config(
46 route_name='edit_repo_caches', request_method='GET',
47 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
48 45 def repo_caches(self):
49 46 c = self.load_default_context()
50 47 c.active = 'caches'
@@ -65,8 +62,6 b' class RepoCachesView(RepoAppView):'
65 62 @LoginRequired()
66 63 @HasRepoPermissionAnyDecorator('repository.admin')
67 64 @CSRFRequired()
68 @view_config(
69 route_name='edit_repo_caches', request_method='POST')
70 65 def repo_caches_purge(self):
71 66 _ = self.request.translate
72 67 c = self.load_default_context()
@@ -22,7 +22,7 b''
22 22 import logging
23 23
24 24 from pyramid.httpexceptions import HTTPNotFound, HTTPFound
25 from pyramid.view import view_config
25
26 26 from pyramid.renderers import render
27 27 from pyramid.response import Response
28 28
@@ -176,19 +176,6 b' class RepoChangelogView(RepoAppView):'
176 176 @LoginRequired()
177 177 @HasRepoPermissionAnyDecorator(
178 178 'repository.read', 'repository.write', 'repository.admin')
179 @view_config(
180 route_name='repo_commits', request_method='GET',
181 renderer='rhodecode:templates/commits/changelog.mako')
182 @view_config(
183 route_name='repo_commits_file', request_method='GET',
184 renderer='rhodecode:templates/commits/changelog.mako')
185 # old routes for backward compat
186 @view_config(
187 route_name='repo_changelog', request_method='GET',
188 renderer='rhodecode:templates/commits/changelog.mako')
189 @view_config(
190 route_name='repo_changelog_file', request_method='GET',
191 renderer='rhodecode:templates/commits/changelog.mako')
192 179 def repo_changelog(self):
193 180 c = self.load_default_context()
194 181
@@ -216,6 +203,7 b' class RepoChangelogView(RepoAppView):'
216 203 pre_load = self._get_preload_attrs()
217 204
218 205 partial_xhr = self.request.environ.get('HTTP_X_PARTIAL_XHR')
206
219 207 try:
220 208 if f_path:
221 209 log.debug('generating changelog for path %s', f_path)
@@ -258,8 +246,15 b' class RepoChangelogView(RepoAppView):'
258 246 except (RepositoryError, CommitDoesNotExistError, Exception) as e:
259 247 log.exception(safe_str(e))
260 248 h.flash(safe_str(h.escape(e)), category='error')
261 raise HTTPFound(
262 h.route_path('repo_commits', repo_name=self.db_repo_name))
249
250 if commit_id:
251 # from single commit page, we redirect to main commits
252 raise HTTPFound(
253 h.route_path('repo_commits', repo_name=self.db_repo_name))
254 else:
255 # otherwise we redirect to summary
256 raise HTTPFound(
257 h.route_path('repo_summary', repo_name=self.db_repo_name))
263 258
264 259 if partial_xhr or self.request.environ.get('HTTP_X_PJAX'):
265 260 # case when loading dynamic file history in file view
@@ -283,14 +278,6 b' class RepoChangelogView(RepoAppView):'
283 278 @LoginRequired()
284 279 @HasRepoPermissionAnyDecorator(
285 280 'repository.read', 'repository.write', 'repository.admin')
286 @view_config(
287 route_name='repo_commits_elements', request_method=('GET', 'POST'),
288 renderer='rhodecode:templates/commits/changelog_elements.mako',
289 xhr=True)
290 @view_config(
291 route_name='repo_commits_elements_file', request_method=('GET', 'POST'),
292 renderer='rhodecode:templates/commits/changelog_elements.mako',
293 xhr=True)
294 281 def repo_commits_elements(self):
295 282 c = self.load_default_context()
296 283 commit_id = self.request.matchdict.get('commit_id')
@@ -20,10 +20,8 b''
20 20
21 21 import logging
22 22
23 from pyramid.view import view_config
24 23 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
25 24
26 from rhodecode import events
27 25 from rhodecode.apps._base import BaseAppView
28 26 from rhodecode.lib import helpers as h
29 27 from rhodecode.lib.auth import (NotAnonymous, HasRepoPermissionAny)
@@ -37,13 +35,9 b' log = logging.getLogger(__name__)'
37 35 class RepoChecksView(BaseAppView):
38 36 def load_default_context(self):
39 37 c = self._get_local_tmpl_context()
40
41 38 return c
42 39
43 40 @NotAnonymous()
44 @view_config(
45 route_name='repo_creating', request_method='GET',
46 renderer='rhodecode:templates/admin/repos/repo_creating.mako')
47 41 def repo_creating(self):
48 42 c = self.load_default_context()
49 43 repo_name = self.request.matchdict['repo_name']
@@ -71,9 +65,6 b' class RepoChecksView(BaseAppView):'
71 65 return self._get_template_context(c)
72 66
73 67 @NotAnonymous()
74 @view_config(
75 route_name='repo_creating_check', request_method='GET',
76 renderer='json_ext')
77 68 def repo_creating_check(self):
78 69 _ = self.request.translate
79 70 task_id = self.request.GET.get('task_id')
@@ -23,7 +23,6 b' import collections'
23 23
24 24 from pyramid.httpexceptions import (
25 25 HTTPNotFound, HTTPBadRequest, HTTPFound, HTTPForbidden, HTTPConflict)
26 from pyramid.view import view_config
27 26 from pyramid.renderers import render
28 27 from pyramid.response import Response
29 28
@@ -41,7 +40,7 b' from rhodecode.lib.diffs import ('
41 40 get_diff_whitespace_flag)
42 41 from rhodecode.lib.exceptions import StatusChangeOnClosedPullRequestError, CommentVersionMismatch
43 42 import rhodecode.lib.helpers as h
44 from rhodecode.lib.utils2 import safe_unicode, str2bool, StrictAttributeDict
43 from rhodecode.lib.utils2 import safe_unicode, str2bool, StrictAttributeDict, safe_str
45 44 from rhodecode.lib.vcs.backends.base import EmptyCommit
46 45 from rhodecode.lib.vcs.exceptions import (
47 46 RepositoryError, CommitDoesNotExistError)
@@ -110,7 +109,7 b' class RepoCommitsView(RepoAppView):'
110 109 if not c.commit_ranges:
111 110 raise RepositoryError('The commit range returned an empty result')
112 111 except CommitDoesNotExistError as e:
113 msg = _('No such commit exists. Org exception: `{}`').format(e)
112 msg = _('No such commit exists. Org exception: `{}`').format(safe_str(e))
114 113 h.flash(msg, category='error')
115 114 raise HTTPNotFound()
116 115 except Exception:
@@ -340,9 +339,6 b' class RepoCommitsView(RepoAppView):'
340 339 @LoginRequired()
341 340 @HasRepoPermissionAnyDecorator(
342 341 'repository.read', 'repository.write', 'repository.admin')
343 @view_config(
344 route_name='repo_commit', request_method='GET',
345 renderer=None)
346 342 def repo_commit_show(self):
347 343 commit_id = self.request.matchdict['commit_id']
348 344 return self._commit(commit_id, method='show')
@@ -350,12 +346,6 b' class RepoCommitsView(RepoAppView):'
350 346 @LoginRequired()
351 347 @HasRepoPermissionAnyDecorator(
352 348 'repository.read', 'repository.write', 'repository.admin')
353 @view_config(
354 route_name='repo_commit_raw', request_method='GET',
355 renderer=None)
356 @view_config(
357 route_name='repo_commit_raw_deprecated', request_method='GET',
358 renderer=None)
359 349 def repo_commit_raw(self):
360 350 commit_id = self.request.matchdict['commit_id']
361 351 return self._commit(commit_id, method='raw')
@@ -363,9 +353,6 b' class RepoCommitsView(RepoAppView):'
363 353 @LoginRequired()
364 354 @HasRepoPermissionAnyDecorator(
365 355 'repository.read', 'repository.write', 'repository.admin')
366 @view_config(
367 route_name='repo_commit_patch', request_method='GET',
368 renderer=None)
369 356 def repo_commit_patch(self):
370 357 commit_id = self.request.matchdict['commit_id']
371 358 return self._commit(commit_id, method='patch')
@@ -373,9 +360,6 b' class RepoCommitsView(RepoAppView):'
373 360 @LoginRequired()
374 361 @HasRepoPermissionAnyDecorator(
375 362 'repository.read', 'repository.write', 'repository.admin')
376 @view_config(
377 route_name='repo_commit_download', request_method='GET',
378 renderer=None)
379 363 def repo_commit_download(self):
380 364 commit_id = self.request.matchdict['commit_id']
381 365 return self._commit(commit_id, method='download')
@@ -500,9 +484,6 b' class RepoCommitsView(RepoAppView):'
500 484 @HasRepoPermissionAnyDecorator(
501 485 'repository.read', 'repository.write', 'repository.admin')
502 486 @CSRFRequired()
503 @view_config(
504 route_name='repo_commit_comment_create', request_method='POST',
505 renderer='json_ext')
506 487 def repo_commit_comment_create(self):
507 488 _ = self.request.translate
508 489 commit_id = self.request.matchdict['commit_id']
@@ -538,9 +519,6 b' class RepoCommitsView(RepoAppView):'
538 519 @HasRepoPermissionAnyDecorator(
539 520 'repository.read', 'repository.write', 'repository.admin')
540 521 @CSRFRequired()
541 @view_config(
542 route_name='repo_commit_comment_preview', request_method='POST',
543 renderer='string', xhr=True)
544 522 def repo_commit_comment_preview(self):
545 523 # Technically a CSRF token is not needed as no state changes with this
546 524 # call. However, as this is a POST is better to have it, so automated
@@ -559,9 +537,6 b' class RepoCommitsView(RepoAppView):'
559 537 @HasRepoPermissionAnyDecorator(
560 538 'repository.read', 'repository.write', 'repository.admin')
561 539 @CSRFRequired()
562 @view_config(
563 route_name='repo_commit_comment_history_view', request_method='POST',
564 renderer='string', xhr=True)
565 540 def repo_commit_comment_history_view(self):
566 541 c = self.load_default_context()
567 542
@@ -587,9 +562,6 b' class RepoCommitsView(RepoAppView):'
587 562 @HasRepoPermissionAnyDecorator(
588 563 'repository.read', 'repository.write', 'repository.admin')
589 564 @CSRFRequired()
590 @view_config(
591 route_name='repo_commit_comment_attachment_upload', request_method='POST',
592 renderer='json_ext', xhr=True)
593 565 def repo_commit_comment_attachment_upload(self):
594 566 c = self.load_default_context()
595 567 upload_key = 'attachment'
@@ -682,9 +654,6 b' class RepoCommitsView(RepoAppView):'
682 654 @HasRepoPermissionAnyDecorator(
683 655 'repository.read', 'repository.write', 'repository.admin')
684 656 @CSRFRequired()
685 @view_config(
686 route_name='repo_commit_comment_delete', request_method='POST',
687 renderer='json_ext')
688 657 def repo_commit_comment_delete(self):
689 658 commit_id = self.request.matchdict['commit_id']
690 659 comment_id = self.request.matchdict['comment_id']
@@ -719,9 +688,6 b' class RepoCommitsView(RepoAppView):'
719 688 @HasRepoPermissionAnyDecorator(
720 689 'repository.read', 'repository.write', 'repository.admin')
721 690 @CSRFRequired()
722 @view_config(
723 route_name='repo_commit_comment_edit', request_method='POST',
724 renderer='json_ext')
725 691 def repo_commit_comment_edit(self):
726 692 self.load_default_context()
727 693
@@ -802,9 +768,6 b' class RepoCommitsView(RepoAppView):'
802 768 @LoginRequired()
803 769 @HasRepoPermissionAnyDecorator(
804 770 'repository.read', 'repository.write', 'repository.admin')
805 @view_config(
806 route_name='repo_commit_data', request_method='GET',
807 renderer='json_ext', xhr=True)
808 771 def repo_commit_data(self):
809 772 commit_id = self.request.matchdict['commit_id']
810 773 self.load_default_context()
@@ -817,9 +780,6 b' class RepoCommitsView(RepoAppView):'
817 780 @LoginRequired()
818 781 @HasRepoPermissionAnyDecorator(
819 782 'repository.read', 'repository.write', 'repository.admin')
820 @view_config(
821 route_name='repo_commit_children', request_method='GET',
822 renderer='json_ext', xhr=True)
823 783 def repo_commit_children(self):
824 784 commit_id = self.request.matchdict['commit_id']
825 785 self.load_default_context()
@@ -836,9 +796,6 b' class RepoCommitsView(RepoAppView):'
836 796 @LoginRequired()
837 797 @HasRepoPermissionAnyDecorator(
838 798 'repository.read', 'repository.write', 'repository.admin')
839 @view_config(
840 route_name='repo_commit_parents', request_method='GET',
841 renderer='json_ext')
842 799 def repo_commit_parents(self):
843 800 commit_id = self.request.matchdict['commit_id']
844 801 self.load_default_context()
@@ -22,7 +22,7 b''
22 22 import logging
23 23
24 24 from pyramid.httpexceptions import HTTPBadRequest, HTTPNotFound, HTTPFound
25 from pyramid.view import view_config
25
26 26 from pyramid.renderers import render
27 27 from pyramid.response import Response
28 28
@@ -79,9 +79,6 b' class RepoCompareView(RepoAppView):'
79 79 @LoginRequired()
80 80 @HasRepoPermissionAnyDecorator(
81 81 'repository.read', 'repository.write', 'repository.admin')
82 @view_config(
83 route_name='repo_compare_select', request_method='GET',
84 renderer='rhodecode:templates/compare/compare_diff.mako')
85 82 def compare_select(self):
86 83 _ = self.request.translate
87 84 c = self.load_default_context()
@@ -111,9 +108,6 b' class RepoCompareView(RepoAppView):'
111 108 @LoginRequired()
112 109 @HasRepoPermissionAnyDecorator(
113 110 'repository.read', 'repository.write', 'repository.admin')
114 @view_config(
115 route_name='repo_compare', request_method='GET',
116 renderer=None)
117 111 def compare(self):
118 112 _ = self.request.translate
119 113 c = self.load_default_context()
@@ -20,10 +20,8 b''
20 20 import pytz
21 21 import logging
22 22
23 from pyramid.view import view_config
24 23 from pyramid.response import Response
25 24
26
27 25 from rhodecode.apps._base import RepoAppView
28 26 from rhodecode.lib.feedgenerator import Rss201rev2Feed, Atom1Feed
29 27 from rhodecode.lib import audit_logger
@@ -118,8 +116,6 b' class RepoFeedView(RepoAppView):'
118 116 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
119 117 @HasRepoPermissionAnyDecorator(
120 118 'repository.read', 'repository.write', 'repository.admin')
121 @view_config(route_name='atom_feed_home', request_method='GET', renderer=None)
122 @view_config(route_name='atom_feed_home_old', request_method='GET', renderer=None)
123 119 def atom(self):
124 120 """
125 121 Produce an atom-1.0 feed via feedgenerator module
@@ -166,8 +162,6 b' class RepoFeedView(RepoAppView):'
166 162 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
167 163 @HasRepoPermissionAnyDecorator(
168 164 'repository.read', 'repository.write', 'repository.admin')
169 @view_config(route_name='rss_feed_home', request_method='GET', renderer=None)
170 @view_config(route_name='rss_feed_home_old', request_method='GET', renderer=None)
171 165 def rss(self):
172 166 """
173 167 Produce an rss2 feed via feedgenerator module
@@ -28,7 +28,7 b' import urllib'
28 28 import pathlib2
29 29
30 30 from pyramid.httpexceptions import HTTPNotFound, HTTPBadRequest, HTTPFound
31 from pyramid.view import view_config
31
32 32 from pyramid.renderers import render
33 33 from pyramid.response import Response
34 34
@@ -343,9 +343,6 b' class RepoFilesView(RepoAppView):'
343 343 @LoginRequired()
344 344 @HasRepoPermissionAnyDecorator(
345 345 'repository.read', 'repository.write', 'repository.admin')
346 @view_config(
347 route_name='repo_archivefile', request_method='GET',
348 renderer=None)
349 346 def repo_archivefile(self):
350 347 # archive cache config
351 348 from rhodecode import CONFIG
@@ -496,9 +493,6 b' class RepoFilesView(RepoAppView):'
496 493 @LoginRequired()
497 494 @HasRepoPermissionAnyDecorator(
498 495 'repository.read', 'repository.write', 'repository.admin')
499 @view_config(
500 route_name='repo_files_diff', request_method='GET',
501 renderer=None)
502 496 def repo_files_diff(self):
503 497 c = self.load_default_context()
504 498 f_path = self._get_f_path(self.request.matchdict)
@@ -581,9 +575,6 b' class RepoFilesView(RepoAppView):'
581 575 @LoginRequired()
582 576 @HasRepoPermissionAnyDecorator(
583 577 'repository.read', 'repository.write', 'repository.admin')
584 @view_config(
585 route_name='repo_files_diff_2way_redirect', request_method='GET',
586 renderer=None)
587 578 def repo_files_diff_2way_redirect(self):
588 579 """
589 580 Kept only to make OLD links work
@@ -610,10 +601,11 b' class RepoFilesView(RepoAppView):'
610 601 raise HTTPFound(compare_url)
611 602
612 603 @LoginRequired()
613 @view_config(
614 route_name='repo_files:default_commit', request_method='GET',
615 renderer=None)
616 def repo_files_default(self):
604 def repo_files_default_commit_redirect(self):
605 """
606 Special page that redirects to the landing page of files based on the default
607 commit for repository
608 """
617 609 c = self.load_default_context()
618 610 ref_name = c.rhodecode_db_repo.landing_ref_name
619 611 landing_url = h.repo_files_by_ref_url(
@@ -630,18 +622,6 b' class RepoFilesView(RepoAppView):'
630 622 @LoginRequired()
631 623 @HasRepoPermissionAnyDecorator(
632 624 'repository.read', 'repository.write', 'repository.admin')
633 @view_config(
634 route_name='repo_files', request_method='GET',
635 renderer=None)
636 @view_config(
637 route_name='repo_files:default_path', request_method='GET',
638 renderer=None)
639 @view_config(
640 route_name='repo_files:rendered', request_method='GET',
641 renderer=None)
642 @view_config(
643 route_name='repo_files:annotated', request_method='GET',
644 renderer=None)
645 625 def repo_files(self):
646 626 c = self.load_default_context()
647 627
@@ -759,9 +739,6 b' class RepoFilesView(RepoAppView):'
759 739
760 740 @HasRepoPermissionAnyDecorator(
761 741 'repository.read', 'repository.write', 'repository.admin')
762 @view_config(
763 route_name='repo_files:annotated_previous', request_method='GET',
764 renderer=None)
765 742 def repo_files_annotated_previous(self):
766 743 self.load_default_context()
767 744
@@ -790,12 +767,6 b' class RepoFilesView(RepoAppView):'
790 767 @LoginRequired()
791 768 @HasRepoPermissionAnyDecorator(
792 769 'repository.read', 'repository.write', 'repository.admin')
793 @view_config(
794 route_name='repo_nodetree_full', request_method='GET',
795 renderer=None, xhr=True)
796 @view_config(
797 route_name='repo_nodetree_full:default_path', request_method='GET',
798 renderer=None, xhr=True)
799 770 def repo_nodetree_full(self):
800 771 """
801 772 Returns rendered html of file tree that contains commit date,
@@ -835,9 +806,6 b' class RepoFilesView(RepoAppView):'
835 806 @LoginRequired()
836 807 @HasRepoPermissionAnyDecorator(
837 808 'repository.read', 'repository.write', 'repository.admin')
838 @view_config(
839 route_name='repo_file_raw', request_method='GET',
840 renderer=None)
841 809 def repo_file_raw(self):
842 810 """
843 811 Action for show as raw, some mimetypes are "rendered",
@@ -902,12 +870,6 b' class RepoFilesView(RepoAppView):'
902 870 @LoginRequired()
903 871 @HasRepoPermissionAnyDecorator(
904 872 'repository.read', 'repository.write', 'repository.admin')
905 @view_config(
906 route_name='repo_file_download', request_method='GET',
907 renderer=None)
908 @view_config(
909 route_name='repo_file_download:legacy', request_method='GET',
910 renderer=None)
911 873 def repo_file_download(self):
912 874 c = self.load_default_context()
913 875
@@ -972,9 +934,6 b' class RepoFilesView(RepoAppView):'
972 934 @LoginRequired()
973 935 @HasRepoPermissionAnyDecorator(
974 936 'repository.read', 'repository.write', 'repository.admin')
975 @view_config(
976 route_name='repo_files_nodelist', request_method='GET',
977 renderer='json_ext', xhr=True)
978 937 def repo_nodelist(self):
979 938 self.load_default_context()
980 939
@@ -1059,9 +1018,6 b' class RepoFilesView(RepoAppView):'
1059 1018 @LoginRequired()
1060 1019 @HasRepoPermissionAnyDecorator(
1061 1020 'repository.read', 'repository.write', 'repository.admin')
1062 @view_config(
1063 route_name='repo_file_history', request_method='GET',
1064 renderer='json_ext')
1065 1021 def repo_file_history(self):
1066 1022 self.load_default_context()
1067 1023
@@ -1105,9 +1061,6 b' class RepoFilesView(RepoAppView):'
1105 1061 @LoginRequired()
1106 1062 @HasRepoPermissionAnyDecorator(
1107 1063 'repository.read', 'repository.write', 'repository.admin')
1108 @view_config(
1109 route_name='repo_file_authors', request_method='GET',
1110 renderer='rhodecode:templates/files/file_authors_box.mako')
1111 1064 def repo_file_authors(self):
1112 1065 c = self.load_default_context()
1113 1066
@@ -1149,9 +1102,6 b' class RepoFilesView(RepoAppView):'
1149 1102
1150 1103 @LoginRequired()
1151 1104 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1152 @view_config(
1153 route_name='repo_files_check_head', request_method='POST',
1154 renderer='json_ext', xhr=True)
1155 1105 def repo_files_check_head(self):
1156 1106 self.load_default_context()
1157 1107
@@ -1186,9 +1136,6 b' class RepoFilesView(RepoAppView):'
1186 1136
1187 1137 @LoginRequired()
1188 1138 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1189 @view_config(
1190 route_name='repo_files_remove_file', request_method='GET',
1191 renderer='rhodecode:templates/files/files_delete.mako')
1192 1139 def repo_files_remove_file(self):
1193 1140 _ = self.request.translate
1194 1141 c = self.load_default_context()
@@ -1214,9 +1161,6 b' class RepoFilesView(RepoAppView):'
1214 1161 @LoginRequired()
1215 1162 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1216 1163 @CSRFRequired()
1217 @view_config(
1218 route_name='repo_files_delete_file', request_method='POST',
1219 renderer=None)
1220 1164 def repo_files_delete_file(self):
1221 1165 _ = self.request.translate
1222 1166
@@ -1266,9 +1210,6 b' class RepoFilesView(RepoAppView):'
1266 1210
1267 1211 @LoginRequired()
1268 1212 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1269 @view_config(
1270 route_name='repo_files_edit_file', request_method='GET',
1271 renderer='rhodecode:templates/files/files_edit.mako')
1272 1213 def repo_files_edit_file(self):
1273 1214 _ = self.request.translate
1274 1215 c = self.load_default_context()
@@ -1300,9 +1241,6 b' class RepoFilesView(RepoAppView):'
1300 1241 @LoginRequired()
1301 1242 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1302 1243 @CSRFRequired()
1303 @view_config(
1304 route_name='repo_files_update_file', request_method='POST',
1305 renderer=None)
1306 1244 def repo_files_update_file(self):
1307 1245 _ = self.request.translate
1308 1246 c = self.load_default_context()
@@ -1384,12 +1322,6 b' class RepoFilesView(RepoAppView):'
1384 1322
1385 1323 @LoginRequired()
1386 1324 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1387 @view_config(
1388 route_name='repo_files_add_file', request_method='GET',
1389 renderer='rhodecode:templates/files/files_add.mako')
1390 @view_config(
1391 route_name='repo_files_upload_file', request_method='GET',
1392 renderer='rhodecode:templates/files/files_upload.mako')
1393 1325 def repo_files_add_file(self):
1394 1326 _ = self.request.translate
1395 1327 c = self.load_default_context()
@@ -1421,9 +1353,6 b' class RepoFilesView(RepoAppView):'
1421 1353 @LoginRequired()
1422 1354 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1423 1355 @CSRFRequired()
1424 @view_config(
1425 route_name='repo_files_create_file', request_method='POST',
1426 renderer=None)
1427 1356 def repo_files_create_file(self):
1428 1357 _ = self.request.translate
1429 1358 c = self.load_default_context()
@@ -1518,9 +1447,6 b' class RepoFilesView(RepoAppView):'
1518 1447 @LoginRequired()
1519 1448 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1520 1449 @CSRFRequired()
1521 @view_config(
1522 route_name='repo_files_upload_file', request_method='POST',
1523 renderer='json_ext')
1524 1450 def repo_files_upload_file(self):
1525 1451 _ = self.request.translate
1526 1452 c = self.load_default_context()
@@ -24,7 +24,7 b' import formencode'
24 24 import formencode.htmlfill
25 25
26 26 from pyramid.httpexceptions import HTTPFound
27 from pyramid.view import view_config
27
28 28 from pyramid.renderers import render
29 29 from pyramid.response import Response
30 30
@@ -64,9 +64,6 b' class RepoForksView(RepoAppView, DataGri'
64 64 @LoginRequired()
65 65 @HasRepoPermissionAnyDecorator(
66 66 'repository.read', 'repository.write', 'repository.admin')
67 @view_config(
68 route_name='repo_forks_show_all', request_method='GET',
69 renderer='rhodecode:templates/forks/forks.mako')
70 67 def repo_forks_show_all(self):
71 68 c = self.load_default_context()
72 69 return self._get_template_context(c)
@@ -74,9 +71,6 b' class RepoForksView(RepoAppView, DataGri'
74 71 @LoginRequired()
75 72 @HasRepoPermissionAnyDecorator(
76 73 'repository.read', 'repository.write', 'repository.admin')
77 @view_config(
78 route_name='repo_forks_data', request_method='GET',
79 renderer='json_ext', xhr=True)
80 74 def repo_forks_data(self):
81 75 _ = self.request.translate
82 76 self.load_default_context()
@@ -174,9 +168,6 b' class RepoForksView(RepoAppView, DataGri'
174 168 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
175 169 @HasRepoPermissionAnyDecorator(
176 170 'repository.read', 'repository.write', 'repository.admin')
177 @view_config(
178 route_name='repo_fork_new', request_method='GET',
179 renderer='rhodecode:templates/forks/forks.mako')
180 171 def repo_fork_new(self):
181 172 c = self.load_default_context()
182 173
@@ -204,9 +195,6 b' class RepoForksView(RepoAppView, DataGri'
204 195 @HasRepoPermissionAnyDecorator(
205 196 'repository.read', 'repository.write', 'repository.admin')
206 197 @CSRFRequired()
207 @view_config(
208 route_name='repo_fork_create', request_method='POST',
209 renderer='rhodecode:templates/forks/fork.mako')
210 198 def repo_fork_create(self):
211 199 _ = self.request.translate
212 200 c = self.load_default_context()
@@ -20,7 +20,7 b''
20 20
21 21 import logging
22 22
23 from pyramid.view import view_config
23
24 24
25 25 from rhodecode.apps._base import RepoAppView
26 26 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
@@ -36,9 +36,6 b' class RepoMaintenanceView(RepoAppView):'
36 36
37 37 @LoginRequired()
38 38 @HasRepoPermissionAnyDecorator('repository.admin')
39 @view_config(
40 route_name='edit_repo_maintenance', request_method='GET',
41 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
42 39 def repo_maintenance(self):
43 40 c = self.load_default_context()
44 41 c.active = 'maintenance'
@@ -48,9 +45,6 b' class RepoMaintenanceView(RepoAppView):'
48 45
49 46 @LoginRequired()
50 47 @HasRepoPermissionAnyDecorator('repository.admin')
51 @view_config(
52 route_name='edit_repo_maintenance_execute', request_method='GET',
53 renderer='json', xhr=True)
54 48 def repo_maintenance_execute(self):
55 49 c = self.load_default_context()
56 50 c.active = 'maintenance'
@@ -21,7 +21,6 b''
21 21 import logging
22 22
23 23 from pyramid.httpexceptions import HTTPFound
24 from pyramid.view import view_config
25 24
26 25 from rhodecode.apps._base import RepoAppView
27 26 from rhodecode.lib import helpers as h
@@ -46,9 +45,6 b' class RepoSettingsPermissionsView(RepoAp'
46 45
47 46 @LoginRequired()
48 47 @HasRepoPermissionAnyDecorator('repository.admin')
49 @view_config(
50 route_name='edit_repo_perms', request_method='GET',
51 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
52 48 def edit_permissions(self):
53 49 _ = self.request.translate
54 50 c = self.load_default_context()
@@ -62,9 +58,6 b' class RepoSettingsPermissionsView(RepoAp'
62 58 @LoginRequired()
63 59 @HasRepoPermissionAnyDecorator('repository.admin')
64 60 @CSRFRequired()
65 @view_config(
66 route_name='edit_repo_perms', request_method='POST',
67 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
68 61 def edit_permissions_update(self):
69 62 _ = self.request.translate
70 63 c = self.load_default_context()
@@ -104,9 +97,6 b' class RepoSettingsPermissionsView(RepoAp'
104 97 @LoginRequired()
105 98 @HasRepoPermissionAnyDecorator('repository.admin')
106 99 @CSRFRequired()
107 @view_config(
108 route_name='edit_repo_perms_set_private', request_method='POST',
109 renderer='json_ext')
110 100 def edit_permissions_set_private_repo(self):
111 101 _ = self.request.translate
112 102 self.load_default_context()
@@ -26,7 +26,7 b' import formencode.htmlfill'
26 26 import peppercorn
27 27 from pyramid.httpexceptions import (
28 28 HTTPFound, HTTPNotFound, HTTPForbidden, HTTPBadRequest, HTTPConflict)
29 from pyramid.view import view_config
29
30 30 from pyramid.renderers import render
31 31
32 32 from rhodecode.apps._base import RepoAppView, DataGridAppView
@@ -147,9 +147,6 b' class RepoPullRequestsView(RepoAppView, '
147 147 @LoginRequired()
148 148 @HasRepoPermissionAnyDecorator(
149 149 'repository.read', 'repository.write', 'repository.admin')
150 @view_config(
151 route_name='pullrequest_show_all', request_method='GET',
152 renderer='rhodecode:templates/pullrequests/pullrequests.mako')
153 150 def pull_request_list(self):
154 151 c = self.load_default_context()
155 152
@@ -177,9 +174,6 b' class RepoPullRequestsView(RepoAppView, '
177 174 @LoginRequired()
178 175 @HasRepoPermissionAnyDecorator(
179 176 'repository.read', 'repository.write', 'repository.admin')
180 @view_config(
181 route_name='pullrequest_show_all_data', request_method='GET',
182 renderer='json_ext', xhr=True)
183 177 def pull_request_list_data(self):
184 178 self.load_default_context()
185 179
@@ -221,9 +215,13 b' class RepoPullRequestsView(RepoAppView, '
221 215 target_commit, source_commit, diff_limit, file_limit,
222 216 fulldiff, hide_whitespace_changes, diff_context, use_ancestor=True):
223 217
218 target_commit_final = target_commit
219 source_commit_final = source_commit
220
224 221 if use_ancestor:
225 222 # we might want to not use it for versions
226 223 target_ref_id = ancestor_commit.raw_id
224 target_commit_final = ancestor_commit
227 225
228 226 vcs_diff = PullRequestModel().get_diff(
229 227 source_repo, source_ref_id, target_ref_id,
@@ -238,11 +236,11 b' class RepoPullRequestsView(RepoAppView, '
238 236 diffset = codeblocks.DiffSet(
239 237 repo_name=self.db_repo_name,
240 238 source_repo_name=source_repo_name,
241 source_node_getter=codeblocks.diffset_node_getter(target_commit),
242 target_node_getter=codeblocks.diffset_node_getter(source_commit),
239 source_node_getter=codeblocks.diffset_node_getter(target_commit_final),
240 target_node_getter=codeblocks.diffset_node_getter(source_commit_final),
243 241 )
244 242 diffset = self.path_filter.render_patchset_filtered(
245 diffset, _parsed, target_commit.raw_id, source_commit.raw_id)
243 diffset, _parsed, target_ref_id, source_ref_id)
246 244
247 245 return diffset
248 246
@@ -307,9 +305,6 b' class RepoPullRequestsView(RepoAppView, '
307 305 @LoginRequired()
308 306 @HasRepoPermissionAnyDecorator(
309 307 'repository.read', 'repository.write', 'repository.admin')
310 @view_config(
311 route_name='pullrequest_show', request_method='GET',
312 renderer='rhodecode:templates/pullrequests/pullrequest_show.mako')
313 308 def pull_request_show(self):
314 309 _ = self.request.translate
315 310 c = self.load_default_context()
@@ -838,9 +833,6 b' class RepoPullRequestsView(RepoAppView, '
838 833 @NotAnonymous()
839 834 @HasRepoPermissionAnyDecorator(
840 835 'repository.read', 'repository.write', 'repository.admin')
841 @view_config(
842 route_name='pullrequest_new', request_method='GET',
843 renderer='rhodecode:templates/pullrequests/pullrequest.mako')
844 836 def pull_request_new(self):
845 837 _ = self.request.translate
846 838 c = self.load_default_context()
@@ -898,9 +890,6 b' class RepoPullRequestsView(RepoAppView, '
898 890 @NotAnonymous()
899 891 @HasRepoPermissionAnyDecorator(
900 892 'repository.read', 'repository.write', 'repository.admin')
901 @view_config(
902 route_name='pullrequest_repo_refs', request_method='GET',
903 renderer='json_ext', xhr=True)
904 893 def pull_request_repo_refs(self):
905 894 self.load_default_context()
906 895 target_repo_name = self.request.matchdict['target_repo_name']
@@ -921,9 +910,6 b' class RepoPullRequestsView(RepoAppView, '
921 910 @NotAnonymous()
922 911 @HasRepoPermissionAnyDecorator(
923 912 'repository.read', 'repository.write', 'repository.admin')
924 @view_config(
925 route_name='pullrequest_repo_targets', request_method='GET',
926 renderer='json_ext', xhr=True)
927 913 def pullrequest_repo_targets(self):
928 914 _ = self.request.translate
929 915 filter_query = self.request.GET.get('query')
@@ -994,9 +980,6 b' class RepoPullRequestsView(RepoAppView, '
994 980 @NotAnonymous()
995 981 @HasRepoPermissionAnyDecorator(
996 982 'repository.read', 'repository.write', 'repository.admin')
997 @view_config(
998 route_name='pullrequest_comments', request_method='POST',
999 renderer='string_html', xhr=True)
1000 983 def pullrequest_comments(self):
1001 984 self.load_default_context()
1002 985
@@ -1034,9 +1017,6 b' class RepoPullRequestsView(RepoAppView, '
1034 1017 @NotAnonymous()
1035 1018 @HasRepoPermissionAnyDecorator(
1036 1019 'repository.read', 'repository.write', 'repository.admin')
1037 @view_config(
1038 route_name='pullrequest_todos', request_method='POST',
1039 renderer='string_html', xhr=True)
1040 1020 def pullrequest_todos(self):
1041 1021 self.load_default_context()
1042 1022
@@ -1076,9 +1056,6 b' class RepoPullRequestsView(RepoAppView, '
1076 1056 @NotAnonymous()
1077 1057 @HasRepoPermissionAnyDecorator(
1078 1058 'repository.read', 'repository.write', 'repository.admin')
1079 @view_config(
1080 route_name='pullrequest_drafts', request_method='POST',
1081 renderer='string_html', xhr=True)
1082 1059 def pullrequest_drafts(self):
1083 1060 self.load_default_context()
1084 1061
@@ -1119,9 +1096,6 b' class RepoPullRequestsView(RepoAppView, '
1119 1096 @HasRepoPermissionAnyDecorator(
1120 1097 'repository.read', 'repository.write', 'repository.admin')
1121 1098 @CSRFRequired()
1122 @view_config(
1123 route_name='pullrequest_create', request_method='POST',
1124 renderer=None)
1125 1099 def pull_request_create(self):
1126 1100 _ = self.request.translate
1127 1101 self.assure_not_empty_repo()
@@ -1277,9 +1251,6 b' class RepoPullRequestsView(RepoAppView, '
1277 1251 @HasRepoPermissionAnyDecorator(
1278 1252 'repository.read', 'repository.write', 'repository.admin')
1279 1253 @CSRFRequired()
1280 @view_config(
1281 route_name='pullrequest_update', request_method='POST',
1282 renderer='json_ext')
1283 1254 def pull_request_update(self):
1284 1255 pull_request = PullRequest.get_or_404(
1285 1256 self.request.matchdict['pull_request_id'])
@@ -1461,9 +1432,6 b' class RepoPullRequestsView(RepoAppView, '
1461 1432 @HasRepoPermissionAnyDecorator(
1462 1433 'repository.read', 'repository.write', 'repository.admin')
1463 1434 @CSRFRequired()
1464 @view_config(
1465 route_name='pullrequest_merge', request_method='POST',
1466 renderer='json_ext')
1467 1435 def pull_request_merge(self):
1468 1436 """
1469 1437 Merge will perform a server-side merge of the specified
@@ -1537,9 +1505,6 b' class RepoPullRequestsView(RepoAppView, '
1537 1505 @HasRepoPermissionAnyDecorator(
1538 1506 'repository.read', 'repository.write', 'repository.admin')
1539 1507 @CSRFRequired()
1540 @view_config(
1541 route_name='pullrequest_delete', request_method='POST',
1542 renderer='json_ext')
1543 1508 def pull_request_delete(self):
1544 1509 _ = self.request.translate
1545 1510
@@ -1715,9 +1680,6 b' class RepoPullRequestsView(RepoAppView, '
1715 1680 @HasRepoPermissionAnyDecorator(
1716 1681 'repository.read', 'repository.write', 'repository.admin')
1717 1682 @CSRFRequired()
1718 @view_config(
1719 route_name='pullrequest_comment_create', request_method='POST',
1720 renderer='json_ext')
1721 1683 def pull_request_comment_create(self):
1722 1684 _ = self.request.translate
1723 1685
@@ -1752,9 +1714,6 b' class RepoPullRequestsView(RepoAppView, '
1752 1714 @HasRepoPermissionAnyDecorator(
1753 1715 'repository.read', 'repository.write', 'repository.admin')
1754 1716 @CSRFRequired()
1755 @view_config(
1756 route_name='pullrequest_comment_delete', request_method='POST',
1757 renderer='json_ext')
1758 1717 def pull_request_comment_delete(self):
1759 1718 pull_request = PullRequest.get_or_404(
1760 1719 self.request.matchdict['pull_request_id'])
@@ -1806,9 +1765,6 b' class RepoPullRequestsView(RepoAppView, '
1806 1765 @HasRepoPermissionAnyDecorator(
1807 1766 'repository.read', 'repository.write', 'repository.admin')
1808 1767 @CSRFRequired()
1809 @view_config(
1810 route_name='pullrequest_comment_edit', request_method='POST',
1811 renderer='json_ext')
1812 1768 def pull_request_comment_edit(self):
1813 1769 self.load_default_context()
1814 1770
@@ -20,7 +20,7 b''
20 20
21 21 import logging
22 22
23 from pyramid.view import view_config
23
24 24
25 25 from rhodecode.apps._base import RepoAppView
26 26 from rhodecode.apps.repository.utils import get_default_reviewers_data
@@ -38,9 +38,6 b' class RepoReviewRulesView(RepoAppView):'
38 38
39 39 @LoginRequired()
40 40 @HasRepoPermissionAnyDecorator('repository.admin')
41 @view_config(
42 route_name='repo_reviewers', request_method='GET',
43 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
44 41 def repo_review_rules(self):
45 42 c = self.load_default_context()
46 43 c.active = 'reviewers'
@@ -50,9 +47,6 b' class RepoReviewRulesView(RepoAppView):'
50 47 @LoginRequired()
51 48 @HasRepoPermissionAnyDecorator(
52 49 'repository.read', 'repository.write', 'repository.admin')
53 @view_config(
54 route_name='repo_default_reviewers_data', request_method='GET',
55 renderer='json_ext')
56 50 def repo_default_reviewers_data(self):
57 51 self.load_default_context()
58 52
@@ -22,7 +22,6 b' import logging'
22 22
23 23 import deform
24 24 from pyramid.httpexceptions import HTTPFound
25 from pyramid.view import view_config
26 25
27 26 from rhodecode import events
28 27 from rhodecode.apps._base import RepoAppView
@@ -90,9 +89,6 b' class RepoSettingsView(RepoAppView):'
90 89
91 90 @LoginRequired()
92 91 @HasRepoPermissionAnyDecorator('repository.admin')
93 @view_config(
94 route_name='edit_repo', request_method='GET',
95 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
96 92 def edit_settings(self):
97 93 c = self.load_default_context()
98 94 c.active = 'settings'
@@ -108,9 +104,6 b' class RepoSettingsView(RepoAppView):'
108 104 @LoginRequired()
109 105 @HasRepoPermissionAnyDecorator('repository.admin')
110 106 @CSRFRequired()
111 @view_config(
112 route_name='edit_repo', request_method='POST',
113 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
114 107 def edit_settings_update(self):
115 108 _ = self.request.translate
116 109 c = self.load_default_context()
@@ -192,9 +185,6 b' class RepoSettingsView(RepoAppView):'
192 185
193 186 @LoginRequired()
194 187 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
195 @view_config(
196 route_name='repo_edit_toggle_locking', request_method='GET',
197 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
198 188 def toggle_locking(self):
199 189 """
200 190 Toggle locking of repository by simple GET call to url
@@ -224,9 +214,6 b' class RepoSettingsView(RepoAppView):'
224 214
225 215 @LoginRequired()
226 216 @HasRepoPermissionAnyDecorator('repository.admin')
227 @view_config(
228 route_name='edit_repo_statistics', request_method='GET',
229 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
230 217 def edit_statistics_form(self):
231 218 c = self.load_default_context()
232 219
@@ -250,9 +237,6 b' class RepoSettingsView(RepoAppView):'
250 237 @LoginRequired()
251 238 @HasRepoPermissionAnyDecorator('repository.admin')
252 239 @CSRFRequired()
253 @view_config(
254 route_name='edit_repo_statistics_reset', request_method='POST',
255 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
256 240 def repo_statistics_reset(self):
257 241 _ = self.request.translate
258 242
@@ -20,7 +20,7 b''
20 20
21 21 import logging
22 22
23 from pyramid.view import view_config
23
24 24 from pyramid.httpexceptions import HTTPFound
25 25 from packaging.version import Version
26 26
@@ -42,7 +42,7 b' from rhodecode.model.scm import ScmModel'
42 42 log = logging.getLogger(__name__)
43 43
44 44
45 class RepoSettingsView(RepoAppView):
45 class RepoSettingsAdvancedView(RepoAppView):
46 46
47 47 def load_default_context(self):
48 48 c = self._get_local_tmpl_context()
@@ -57,9 +57,6 b' class RepoSettingsView(RepoAppView):'
57 57
58 58 @LoginRequired()
59 59 @HasRepoPermissionAnyDecorator('repository.admin')
60 @view_config(
61 route_name='edit_repo_advanced', request_method='GET',
62 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
63 60 def edit_advanced(self):
64 61 _ = self.request.translate
65 62 c = self.load_default_context()
@@ -89,9 +86,6 b' class RepoSettingsView(RepoAppView):'
89 86 @LoginRequired()
90 87 @HasRepoPermissionAnyDecorator('repository.admin')
91 88 @CSRFRequired()
92 @view_config(
93 route_name='edit_repo_advanced_archive', request_method='POST',
94 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
95 89 def edit_advanced_archive(self):
96 90 """
97 91 Archives the repository. It will become read-only, and not visible in search
@@ -132,9 +126,6 b' class RepoSettingsView(RepoAppView):'
132 126 @LoginRequired()
133 127 @HasRepoPermissionAnyDecorator('repository.admin')
134 128 @CSRFRequired()
135 @view_config(
136 route_name='edit_repo_advanced_delete', request_method='POST',
137 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
138 129 def edit_advanced_delete(self):
139 130 """
140 131 Deletes the repository, or shows warnings if deletion is not possible
@@ -209,9 +200,6 b' class RepoSettingsView(RepoAppView):'
209 200 @LoginRequired()
210 201 @HasRepoPermissionAnyDecorator('repository.admin')
211 202 @CSRFRequired()
212 @view_config(
213 route_name='edit_repo_advanced_journal', request_method='POST',
214 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
215 203 def edit_advanced_journal(self):
216 204 """
217 205 Set's this repository to be visible in public journal,
@@ -236,9 +224,6 b' class RepoSettingsView(RepoAppView):'
236 224 @LoginRequired()
237 225 @HasRepoPermissionAnyDecorator('repository.admin')
238 226 @CSRFRequired()
239 @view_config(
240 route_name='edit_repo_advanced_fork', request_method='POST',
241 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
242 227 def edit_advanced_fork(self):
243 228 """
244 229 Mark given repository as a fork of another
@@ -281,10 +266,7 b' class RepoSettingsView(RepoAppView):'
281 266 @LoginRequired()
282 267 @HasRepoPermissionAnyDecorator('repository.admin')
283 268 @CSRFRequired()
284 @view_config(
285 route_name='edit_repo_advanced_locking', request_method='POST',
286 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
287 def edit_advanced_locking(self):
269 def edit_advanced_toggle_locking(self):
288 270 """
289 271 Toggle locking of repository
290 272 """
@@ -309,9 +291,6 b' class RepoSettingsView(RepoAppView):'
309 291
310 292 @LoginRequired()
311 293 @HasRepoPermissionAnyDecorator('repository.admin')
312 @view_config(
313 route_name='edit_repo_advanced_hooks', request_method='GET',
314 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
315 294 def edit_advanced_install_hooks(self):
316 295 """
317 296 Install Hooks for repository
@@ -24,7 +24,6 b' import formencode'
24 24 import formencode.htmlfill
25 25
26 26 from pyramid.httpexceptions import HTTPFound
27 from pyramid.view import view_config
28 27
29 28 from rhodecode.apps._base import RepoAppView
30 29 from rhodecode.lib import audit_logger
@@ -48,9 +47,6 b' class RepoSettingsFieldsView(RepoAppView'
48 47
49 48 @LoginRequired()
50 49 @HasRepoPermissionAnyDecorator('repository.admin')
51 @view_config(
52 route_name='edit_repo_fields', request_method='GET',
53 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
54 50 def repo_field_edit(self):
55 51 c = self.load_default_context()
56 52
@@ -63,9 +59,6 b' class RepoSettingsFieldsView(RepoAppView'
63 59 @LoginRequired()
64 60 @HasRepoPermissionAnyDecorator('repository.admin')
65 61 @CSRFRequired()
66 @view_config(
67 route_name='edit_repo_fields_create', request_method='POST',
68 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
69 62 def repo_field_create(self):
70 63 _ = self.request.translate
71 64
@@ -94,9 +87,6 b' class RepoSettingsFieldsView(RepoAppView'
94 87 @LoginRequired()
95 88 @HasRepoPermissionAnyDecorator('repository.admin')
96 89 @CSRFRequired()
97 @view_config(
98 route_name='edit_repo_fields_delete', request_method='POST',
99 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
100 90 def repo_field_delete(self):
101 91 _ = self.request.translate
102 92 field = RepositoryField.get_or_404(self.request.matchdict['field_id'])
@@ -21,7 +21,7 b''
21 21 import logging
22 22
23 23 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
24 from pyramid.view import view_config
24
25 25 import formencode
26 26
27 27 from rhodecode.apps._base import RepoAppView
@@ -45,9 +45,6 b' class RepoSettingsIssueTrackersView(Repo'
45 45
46 46 @LoginRequired()
47 47 @HasRepoPermissionAnyDecorator('repository.admin')
48 @view_config(
49 route_name='edit_repo_issuetracker', request_method='GET',
50 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
51 48 def repo_issuetracker(self):
52 49 c = self.load_default_context()
53 50 c.active = 'issuetracker'
@@ -62,9 +59,6 b' class RepoSettingsIssueTrackersView(Repo'
62 59 @LoginRequired()
63 60 @HasRepoPermissionAnyDecorator('repository.admin')
64 61 @CSRFRequired()
65 @view_config(
66 route_name='edit_repo_issuetracker_test', request_method='POST',
67 renderer='string', xhr=True)
68 62 def repo_issuetracker_test(self):
69 63 return h.urlify_commit_message(
70 64 self.request.POST.get('test_text', ''),
@@ -73,9 +67,6 b' class RepoSettingsIssueTrackersView(Repo'
73 67 @LoginRequired()
74 68 @HasRepoPermissionAnyDecorator('repository.admin')
75 69 @CSRFRequired()
76 @view_config(
77 route_name='edit_repo_issuetracker_delete', request_method='POST',
78 renderer='json_ext', xhr=True)
79 70 def repo_issuetracker_delete(self):
80 71 _ = self.request.translate
81 72 uid = self.request.POST.get('uid')
@@ -107,9 +98,6 b' class RepoSettingsIssueTrackersView(Repo'
107 98 @LoginRequired()
108 99 @HasRepoPermissionAnyDecorator('repository.admin')
109 100 @CSRFRequired()
110 @view_config(
111 route_name='edit_repo_issuetracker_update', request_method='POST',
112 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
113 101 def repo_issuetracker_update(self):
114 102 _ = self.request.translate
115 103 # Save inheritance
@@ -21,7 +21,7 b''
21 21 import logging
22 22
23 23 from pyramid.httpexceptions import HTTPFound
24 from pyramid.view import view_config
24
25 25
26 26 from rhodecode.apps._base import RepoAppView
27 27 from rhodecode.lib import helpers as h
@@ -39,9 +39,6 b' class RepoSettingsRemoteView(RepoAppView'
39 39
40 40 @LoginRequired()
41 41 @HasRepoPermissionAnyDecorator('repository.admin')
42 @view_config(
43 route_name='edit_repo_remote', request_method='GET',
44 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
45 42 def repo_remote_edit_form(self):
46 43 c = self.load_default_context()
47 44 c.active = 'remote'
@@ -51,9 +48,6 b' class RepoSettingsRemoteView(RepoAppView'
51 48 @LoginRequired()
52 49 @HasRepoPermissionAnyDecorator('repository.admin')
53 50 @CSRFRequired()
54 @view_config(
55 route_name='edit_repo_remote_pull', request_method='POST',
56 renderer=None)
57 51 def repo_remote_pull_changes(self):
58 52 _ = self.request.translate
59 53 self.load_default_context()
@@ -25,10 +25,8 b' import formencode.htmlfill'
25 25 from pyramid.httpexceptions import HTTPFound, HTTPBadRequest
26 26 from pyramid.response import Response
27 27 from pyramid.renderers import render
28 from pyramid.view import view_config
29 28
30 29 from rhodecode.apps._base import RepoAppView
31 from rhodecode.lib import audit_logger
32 30 from rhodecode.lib import helpers as h
33 31 from rhodecode.lib.auth import (
34 32 LoginRequired, HasRepoPermissionAnyDecorator, CSRFRequired)
@@ -71,9 +69,6 b' class RepoSettingsVcsView(RepoAppView):'
71 69
72 70 @LoginRequired()
73 71 @HasRepoPermissionAnyDecorator('repository.admin')
74 @view_config(
75 route_name='edit_repo_vcs', request_method='GET',
76 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
77 72 def repo_vcs_settings(self):
78 73 c = self.load_default_context()
79 74 model = VcsSettingsModel(repo=self.db_repo_name)
@@ -100,9 +95,6 b' class RepoSettingsVcsView(RepoAppView):'
100 95 @LoginRequired()
101 96 @HasRepoPermissionAnyDecorator('repository.admin')
102 97 @CSRFRequired()
103 @view_config(
104 route_name='edit_repo_vcs_update', request_method='POST',
105 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
106 98 def repo_settings_vcs_update(self):
107 99 _ = self.request.translate
108 100 c = self.load_default_context()
@@ -153,9 +145,6 b' class RepoSettingsVcsView(RepoAppView):'
153 145 @LoginRequired()
154 146 @HasRepoPermissionAnyDecorator('repository.admin')
155 147 @CSRFRequired()
156 @view_config(
157 route_name='edit_repo_vcs_svn_pattern_delete', request_method='POST',
158 renderer='json_ext', xhr=True)
159 148 def repo_settings_delete_svn_pattern(self):
160 149 self.load_default_context()
161 150 delete_pattern_id = self.request.POST.get('delete_svn_pattern')
@@ -19,7 +19,7 b''
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20
21 21 import logging
22 from pyramid.view import view_config
22
23 23
24 24 from rhodecode.apps._base import RepoAppView
25 25 from rhodecode.lib import audit_logger
@@ -31,7 +31,7 b' from rhodecode.lib.ext_json import json'
31 31 log = logging.getLogger(__name__)
32 32
33 33
34 class StripView(RepoAppView):
34 class RepoStripView(RepoAppView):
35 35 def load_default_context(self):
36 36 c = self._get_local_tmpl_context()
37 37
@@ -40,9 +40,6 b' class StripView(RepoAppView):'
40 40
41 41 @LoginRequired()
42 42 @HasRepoPermissionAnyDecorator('repository.admin')
43 @view_config(
44 route_name='edit_repo_strip', request_method='GET',
45 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
46 43 def strip(self):
47 44 c = self.load_default_context()
48 45 c.active = 'strip'
@@ -53,9 +50,6 b' class StripView(RepoAppView):'
53 50 @LoginRequired()
54 51 @HasRepoPermissionAnyDecorator('repository.admin')
55 52 @CSRFRequired()
56 @view_config(
57 route_name='strip_check', request_method='POST',
58 renderer='json', xhr=True)
59 53 def strip_check(self):
60 54 from rhodecode.lib.vcs.backends.base import EmptyCommit
61 55 data = {}
@@ -79,9 +73,6 b' class StripView(RepoAppView):'
79 73 @LoginRequired()
80 74 @HasRepoPermissionAnyDecorator('repository.admin')
81 75 @CSRFRequired()
82 @view_config(
83 route_name='strip_execute', request_method='POST',
84 renderer='json', xhr=True)
85 76 def strip_execute(self):
86 77 from rhodecode.model.scm import ScmModel
87 78
@@ -24,7 +24,7 b' import time'
24 24
25 25 import rhodecode
26 26
27 from pyramid.view import view_config
27
28 28
29 29 from rhodecode.lib.view_utils import get_format_ref_id
30 30 from rhodecode.apps._base import RepoAppView
@@ -101,9 +101,6 b' class RepoSummaryView(RepoAppView):'
101 101 @LoginRequired()
102 102 @HasRepoPermissionAnyDecorator(
103 103 'repository.read', 'repository.write', 'repository.admin')
104 @view_config(
105 route_name='repo_summary_commits', request_method='GET',
106 renderer='rhodecode:templates/summary/summary_commits.mako')
107 104 def summary_commits(self):
108 105 c = self.load_default_context()
109 106 self._prepare_and_set_clone_url(c)
@@ -113,15 +110,6 b' class RepoSummaryView(RepoAppView):'
113 110 @LoginRequired()
114 111 @HasRepoPermissionAnyDecorator(
115 112 'repository.read', 'repository.write', 'repository.admin')
116 @view_config(
117 route_name='repo_summary', request_method='GET',
118 renderer='rhodecode:templates/summary/summary.mako')
119 @view_config(
120 route_name='repo_summary_slash', request_method='GET',
121 renderer='rhodecode:templates/summary/summary.mako')
122 @view_config(
123 route_name='repo_summary_explicit', request_method='GET',
124 renderer='rhodecode:templates/summary/summary.mako')
125 113 def summary(self):
126 114 c = self.load_default_context()
127 115
@@ -176,9 +164,6 b' class RepoSummaryView(RepoAppView):'
176 164 @LoginRequired()
177 165 @HasRepoPermissionAnyDecorator(
178 166 'repository.read', 'repository.write', 'repository.admin')
179 @view_config(
180 route_name='repo_stats', request_method='GET',
181 renderer='json_ext')
182 167 def repo_stats(self):
183 168 show_stats = bool(self.db_repo.enable_statistics)
184 169 repo_id = self.db_repo.repo_id
@@ -228,9 +213,6 b' class RepoSummaryView(RepoAppView):'
228 213 @LoginRequired()
229 214 @HasRepoPermissionAnyDecorator(
230 215 'repository.read', 'repository.write', 'repository.admin')
231 @view_config(
232 route_name='repo_refs_data', request_method='GET',
233 renderer='json_ext')
234 216 def repo_refs_data(self):
235 217 _ = self.request.translate
236 218 self.load_default_context()
@@ -251,9 +233,6 b' class RepoSummaryView(RepoAppView):'
251 233 @LoginRequired()
252 234 @HasRepoPermissionAnyDecorator(
253 235 'repository.read', 'repository.write', 'repository.admin')
254 @view_config(
255 route_name='repo_refs_changelog_data', request_method='GET',
256 renderer='json_ext')
257 236 def repo_refs_changelog_data(self):
258 237 _ = self.request.translate
259 238 self.load_default_context()
@@ -19,7 +19,6 b''
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20
21 21 import logging
22 from pyramid.view import view_config
23 22
24 23 from rhodecode.apps._base import BaseReferencesView
25 24 from rhodecode.lib.ext_json import json
@@ -33,9 +32,6 b' class RepoTagsView(BaseReferencesView):'
33 32 @LoginRequired()
34 33 @HasRepoPermissionAnyDecorator(
35 34 'repository.read', 'repository.write', 'repository.admin')
36 @view_config(
37 route_name='tags_home', request_method='GET',
38 renderer='rhodecode:templates/tags/tags.mako')
39 35 def tags(self):
40 36 c = self.load_default_context()
41 37
@@ -21,23 +21,42 b' from rhodecode.apps._base import ADMIN_P'
21 21
22 22
23 23 def includeme(config):
24 from rhodecode.apps.search.views import (
25 SearchView, SearchRepoView, SearchRepoGroupView)
24 26
25 27 config.add_route(
26 28 name='search',
27 29 pattern=ADMIN_PREFIX + '/search')
30 config.add_view(
31 SearchView,
32 attr='search',
33 route_name='search', request_method='GET',
34 renderer='rhodecode:templates/search/search.mako')
28 35
29 36 config.add_route(
30 37 name='search_repo',
31 38 pattern='/{repo_name:.*?[^/]}/_search', repo_route=True)
39 config.add_view(
40 SearchRepoView,
41 attr='search_repo',
42 route_name='search_repo', request_method='GET',
43 renderer='rhodecode:templates/search/search.mako')
32 44
33 45 config.add_route(
34 46 name='search_repo_alt',
35 47 pattern='/{repo_name:.*?[^/]}/search', repo_route=True)
48 config.add_view(
49 SearchRepoView,
50 attr='search_repo',
51 route_name='search_repo_alt', request_method='GET',
52 renderer='rhodecode:templates/search/search.mako')
36 53
37 54 config.add_route(
38 55 name='search_repo_group',
39 56 pattern='/{repo_group_name:.*?[^/]}/_search',
40 57 repo_group_route=True)
41
42 # Scan module for configuration decorators.
43 config.scan('.views', ignore='.tests')
58 config.add_view(
59 SearchRepoGroupView,
60 attr='search_repo_group',
61 route_name='search_repo_group', request_method='GET',
62 renderer='rhodecode:templates/search/search.mako')
@@ -20,7 +20,7 b''
20 20
21 21 import logging
22 22 import urllib
23 from pyramid.view import view_config
23
24 24 from webhelpers2.html.tools import update_params
25 25
26 26 from rhodecode.apps._base import BaseAppView, RepoAppView, RepoGroupAppView
@@ -130,9 +130,6 b' class SearchView(BaseAppView):'
130 130 return c
131 131
132 132 @LoginRequired()
133 @view_config(
134 route_name='search', request_method='GET',
135 renderer='rhodecode:templates/search/search.mako')
136 133 def search(self):
137 134 c = self.load_default_context()
138 135 perform_search(self.request, c)
@@ -148,12 +145,6 b' class SearchRepoView(RepoAppView):'
148 145 @LoginRequired()
149 146 @HasRepoPermissionAnyDecorator(
150 147 'repository.read', 'repository.write', 'repository.admin')
151 @view_config(
152 route_name='search_repo', request_method='GET',
153 renderer='rhodecode:templates/search/search.mako')
154 @view_config(
155 route_name='search_repo_alt', request_method='GET',
156 renderer='rhodecode:templates/search/search.mako')
157 148 def search_repo(self):
158 149 c = self.load_default_context()
159 150 perform_search(self.request, c, repo_name=self.db_repo_name)
@@ -169,9 +160,6 b' class SearchRepoGroupView(RepoGroupAppVi'
169 160 @LoginRequired()
170 161 @HasRepoGroupPermissionAnyDecorator(
171 162 'group.read', 'group.write', 'group.admin')
172 @view_config(
173 route_name='search_repo_group', request_method='GET',
174 renderer='rhodecode:templates/search/search.mako')
175 163 def search_repo_group(self):
176 164 c = self.load_default_context()
177 165 perform_search(self.request, c, repo_group_name=self.db_repo_group_name)
@@ -37,25 +37,6 b' from . import config_keys'
37 37 log = logging.getLogger(__name__)
38 38
39 39
40 def includeme(config):
41 settings = config.registry.settings
42 _sanitize_settings_and_apply_defaults(settings)
43
44 if settings[config_keys.generate_config]:
45 # Add subscriber to generate the Apache mod dav svn configuration on
46 # repository group events.
47 config.add_subscriber(generate_config_subscriber, RepoGroupEvent)
48
49 # If a reload command is set add a subscriber to execute it on
50 # configuration changes.
51 reload_cmd = shlex.split(settings[config_keys.reload_command])
52 if reload_cmd:
53 reload_timeout = settings[config_keys.reload_timeout] or None
54 reload_subscriber = AsyncSubprocessSubscriber(
55 cmd=reload_cmd, timeout=reload_timeout)
56 config.add_subscriber(reload_subscriber, ModDavSvnConfigChange)
57
58
59 40 def _sanitize_settings_and_apply_defaults(settings):
60 41 """
61 42 Set defaults, convert to python types and validate settings.
@@ -88,3 +69,22 b' def _append_path_sep(path):'
88 69 if isinstance(path, compat.string_types) and not path.endswith(os.path.sep):
89 70 path += os.path.sep
90 71 return path
72
73
74 def includeme(config):
75 settings = config.registry.settings
76 _sanitize_settings_and_apply_defaults(settings)
77
78 if settings[config_keys.generate_config]:
79 # Add subscriber to generate the Apache mod dav svn configuration on
80 # repository group events.
81 config.add_subscriber(generate_config_subscriber, RepoGroupEvent)
82
83 # If a reload command is set add a subscriber to execute it on
84 # configuration changes.
85 reload_cmd = settings[config_keys.reload_command]
86 if reload_cmd:
87 reload_timeout = settings[config_keys.reload_timeout] or None
88 reload_subscriber = AsyncSubprocessSubscriber(
89 cmd=reload_cmd, timeout=reload_timeout)
90 config.add_subscriber(reload_subscriber, ModDavSvnConfigChange)
@@ -28,74 +28,134 b' def admin_routes(config):'
28 28 """
29 29 User groups /_admin prefixed routes
30 30 """
31 from rhodecode.apps.user_group.views import UserGroupsView
31 32
32 33 config.add_route(
33 34 name='user_group_members_data',
34 35 pattern='/user_groups/{user_group_id:\d+}/members',
35 36 user_group_route=True)
37 config.add_view(
38 UserGroupsView,
39 attr='user_group_members',
40 route_name='user_group_members_data', request_method='GET',
41 renderer='json_ext', xhr=True)
36 42
37 43 # user groups perms
38 44 config.add_route(
39 45 name='edit_user_group_perms_summary',
40 46 pattern='/user_groups/{user_group_id:\d+}/edit/permissions_summary',
41 47 user_group_route=True)
48 config.add_view(
49 UserGroupsView,
50 attr='user_group_perms_summary',
51 route_name='edit_user_group_perms_summary', request_method='GET',
52 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
53
42 54 config.add_route(
43 55 name='edit_user_group_perms_summary_json',
44 56 pattern='/user_groups/{user_group_id:\d+}/edit/permissions_summary/json',
45 57 user_group_route=True)
58 config.add_view(
59 UserGroupsView,
60 attr='user_group_perms_summary_json',
61 route_name='edit_user_group_perms_summary_json', request_method='GET',
62 renderer='json_ext')
46 63
47 64 # user groups edit
48 65 config.add_route(
49 66 name='edit_user_group',
50 67 pattern='/user_groups/{user_group_id:\d+}/edit',
51 68 user_group_route=True)
69 config.add_view(
70 UserGroupsView,
71 attr='user_group_edit',
72 route_name='edit_user_group', request_method='GET',
73 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
52 74
53 75 # user groups update
54 76 config.add_route(
55 77 name='user_groups_update',
56 78 pattern='/user_groups/{user_group_id:\d+}/update',
57 79 user_group_route=True)
80 config.add_view(
81 UserGroupsView,
82 attr='user_group_update',
83 route_name='user_groups_update', request_method='POST',
84 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
58 85
59 86 config.add_route(
60 87 name='edit_user_group_global_perms',
61 88 pattern='/user_groups/{user_group_id:\d+}/edit/global_permissions',
62 89 user_group_route=True)
90 config.add_view(
91 UserGroupsView,
92 attr='user_group_global_perms_edit',
93 route_name='edit_user_group_global_perms', request_method='GET',
94 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
63 95
64 96 config.add_route(
65 97 name='edit_user_group_global_perms_update',
66 98 pattern='/user_groups/{user_group_id:\d+}/edit/global_permissions/update',
67 99 user_group_route=True)
100 config.add_view(
101 UserGroupsView,
102 attr='user_group_global_perms_update',
103 route_name='edit_user_group_global_perms_update', request_method='POST',
104 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
68 105
69 106 config.add_route(
70 107 name='edit_user_group_perms',
71 108 pattern='/user_groups/{user_group_id:\d+}/edit/permissions',
72 109 user_group_route=True)
110 config.add_view(
111 UserGroupsView,
112 attr='user_group_edit_perms',
113 route_name='edit_user_group_perms', request_method='GET',
114 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
73 115
74 116 config.add_route(
75 117 name='edit_user_group_perms_update',
76 118 pattern='/user_groups/{user_group_id:\d+}/edit/permissions/update',
77 119 user_group_route=True)
120 config.add_view(
121 UserGroupsView,
122 attr='user_group_update_perms',
123 route_name='edit_user_group_perms_update', request_method='POST',
124 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
78 125
79 126 config.add_route(
80 127 name='edit_user_group_advanced',
81 128 pattern='/user_groups/{user_group_id:\d+}/edit/advanced',
82 129 user_group_route=True)
130 config.add_view(
131 UserGroupsView,
132 attr='user_group_edit_advanced',
133 route_name='edit_user_group_advanced', request_method='GET',
134 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
83 135
84 136 config.add_route(
85 137 name='edit_user_group_advanced_sync',
86 138 pattern='/user_groups/{user_group_id:\d+}/edit/advanced/sync',
87 139 user_group_route=True)
140 config.add_view(
141 UserGroupsView,
142 attr='user_group_edit_advanced_set_synchronization',
143 route_name='edit_user_group_advanced_sync', request_method='POST',
144 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
88 145
89 146 # user groups delete
90 147 config.add_route(
91 148 name='user_groups_delete',
92 149 pattern='/user_groups/{user_group_id:\d+}/delete',
93 150 user_group_route=True)
151 config.add_view(
152 UserGroupsView,
153 attr='user_group_delete',
154 route_name='user_groups_delete', request_method='POST',
155 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
94 156
95 157
96 158 def includeme(config):
97 159 # main admin routes
98 160 config.include(admin_routes, route_prefix=ADMIN_PREFIX)
99 161
100 # Scan module for configuration decorators.
101 config.scan('.views', ignore='.tests')
@@ -24,7 +24,7 b' import peppercorn'
24 24 import formencode
25 25 import formencode.htmlfill
26 26 from pyramid.httpexceptions import HTTPFound
27 from pyramid.view import view_config
27
28 28 from pyramid.response import Response
29 29 from pyramid.renderers import render
30 30
@@ -60,9 +60,6 b' class UserGroupsView(UserGroupAppView):'
60 60
61 61 @LoginRequired()
62 62 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
63 @view_config(
64 route_name='user_group_members_data', request_method='GET',
65 renderer='json_ext', xhr=True)
66 63 def user_group_members(self):
67 64 """
68 65 Return members of given user group
@@ -93,9 +90,6 b' class UserGroupsView(UserGroupAppView):'
93 90
94 91 @LoginRequired()
95 92 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
96 @view_config(
97 route_name='edit_user_group_perms_summary', request_method='GET',
98 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
99 93 def user_group_perms_summary(self):
100 94 c = self.load_default_context()
101 95 c.user_group = self.db_user_group
@@ -106,9 +100,6 b' class UserGroupsView(UserGroupAppView):'
106 100
107 101 @LoginRequired()
108 102 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
109 @view_config(
110 route_name='edit_user_group_perms_summary_json', request_method='GET',
111 renderer='json_ext')
112 103 def user_group_perms_summary_json(self):
113 104 self.load_default_context()
114 105 user_group = self.db_user_group
@@ -131,9 +122,6 b' class UserGroupsView(UserGroupAppView):'
131 122 @LoginRequired()
132 123 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
133 124 @CSRFRequired()
134 @view_config(
135 route_name='user_groups_update', request_method='POST',
136 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
137 125 def user_group_update(self):
138 126 _ = self.request.translate
139 127
@@ -230,9 +218,6 b' class UserGroupsView(UserGroupAppView):'
230 218 @LoginRequired()
231 219 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
232 220 @CSRFRequired()
233 @view_config(
234 route_name='user_groups_delete', request_method='POST',
235 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
236 221 def user_group_delete(self):
237 222 _ = self.request.translate
238 223 user_group = self.db_user_group
@@ -258,9 +243,6 b' class UserGroupsView(UserGroupAppView):'
258 243
259 244 @LoginRequired()
260 245 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
261 @view_config(
262 route_name='edit_user_group', request_method='GET',
263 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
264 246 def user_group_edit(self):
265 247 user_group = self.db_user_group
266 248
@@ -293,9 +275,6 b' class UserGroupsView(UserGroupAppView):'
293 275
294 276 @LoginRequired()
295 277 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
296 @view_config(
297 route_name='edit_user_group_perms', request_method='GET',
298 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
299 278 def user_group_edit_perms(self):
300 279 user_group = self.db_user_group
301 280 c = self.load_default_context()
@@ -326,9 +305,6 b' class UserGroupsView(UserGroupAppView):'
326 305 @LoginRequired()
327 306 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
328 307 @CSRFRequired()
329 @view_config(
330 route_name='edit_user_group_perms_update', request_method='POST',
331 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
332 308 def user_group_update_perms(self):
333 309 """
334 310 grant permission for given user group
@@ -390,9 +366,6 b' class UserGroupsView(UserGroupAppView):'
390 366
391 367 @LoginRequired()
392 368 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
393 @view_config(
394 route_name='edit_user_group_global_perms', request_method='GET',
395 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
396 369 def user_group_global_perms_edit(self):
397 370 user_group = self.db_user_group
398 371 c = self.load_default_context()
@@ -418,9 +391,6 b' class UserGroupsView(UserGroupAppView):'
418 391 @LoginRequired()
419 392 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
420 393 @CSRFRequired()
421 @view_config(
422 route_name='edit_user_group_global_perms_update', request_method='POST',
423 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
424 394 def user_group_global_perms_update(self):
425 395 _ = self.request.translate
426 396 user_group = self.db_user_group
@@ -485,9 +455,6 b' class UserGroupsView(UserGroupAppView):'
485 455
486 456 @LoginRequired()
487 457 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
488 @view_config(
489 route_name='edit_user_group_advanced', request_method='GET',
490 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
491 458 def user_group_edit_advanced(self):
492 459 user_group = self.db_user_group
493 460
@@ -515,9 +482,6 b' class UserGroupsView(UserGroupAppView):'
515 482 @LoginRequired()
516 483 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
517 484 @CSRFRequired()
518 @view_config(
519 route_name='edit_user_group_advanced_sync', request_method='POST',
520 renderer='rhodecode:templates/admin/user_groups/user_group_edit.mako')
521 485 def user_group_edit_advanced_set_synchronization(self):
522 486 _ = self.request.translate
523 487 user_group = self.db_user_group
@@ -20,8 +20,13 b''
20 20
21 21
22 22 def includeme(config):
23 from rhodecode.apps.user_group_profile.views import UserGroupProfileView
24
23 25 config.add_route(
24 26 name='user_group_profile',
25 27 pattern='/_profile_user_group/{user_group_name}')
26 # Scan module for configuration decorators.
27 config.scan('.views', ignore='.tests')
28 config.add_view(
29 UserGroupProfileView,
30 attr='user_group_profile',
31 route_name='user_group_profile', request_method='GET',
32 renderer='rhodecode:templates/user_group/user_group.mako')
@@ -21,7 +21,7 b''
21 21 import logging
22 22
23 23 from pyramid.httpexceptions import HTTPNotFound
24 from pyramid.view import view_config
24
25 25
26 26 from rhodecode.apps._base import BaseAppView
27 27 from rhodecode.lib.auth import HasUserGroupPermissionAnyDecorator, LoginRequired, NotAnonymous
@@ -36,9 +36,6 b' class UserGroupProfileView(BaseAppView):'
36 36 @LoginRequired()
37 37 @NotAnonymous()
38 38 @HasUserGroupPermissionAnyDecorator('usergroup.read', 'usergroup.write', 'usergroup.admin',)
39 @view_config(
40 route_name='user_group_profile', request_method='GET',
41 renderer='rhodecode:templates/user_group/user_group.mako')
42 39 def user_group_profile(self):
43 40 c = self._get_local_tmpl_context()
44 41 c.active = 'profile'
@@ -20,9 +20,13 b''
20 20
21 21
22 22 def includeme(config):
23 from rhodecode.apps.user_profile.views import UserProfileView
24
23 25 config.add_route(
24 26 name='user_profile',
25 27 pattern='/_profiles/{username}')
26
27 # Scan module for configuration decorators.
28 config.scan('.views', ignore='.tests')
28 config.add_view(
29 UserProfileView,
30 attr='user_profile',
31 route_name='user_profile', request_method='GET',
32 renderer='rhodecode:templates/users/user.mako')
@@ -21,7 +21,6 b''
21 21 import logging
22 22
23 23 from pyramid.httpexceptions import HTTPNotFound
24 from pyramid.view import view_config
25 24
26 25 from rhodecode.apps._base import BaseAppView
27 26 from rhodecode.lib.auth import LoginRequired, NotAnonymous
@@ -36,9 +35,6 b' class UserProfileView(BaseAppView):'
36 35
37 36 @LoginRequired()
38 37 @NotAnonymous()
39 @view_config(
40 route_name='user_profile', request_method='GET',
41 renderer='rhodecode:templates/users/user.mako')
42 38 def user_profile(self):
43 39 # register local template context
44 40 c = self._get_local_tmpl_context()
@@ -20,7 +20,7 b''
20 20
21 21 def generate_jsroutes_content(jsroutes):
22 22 statements = []
23 for url_name, url, fields in jsroutes:
23 for url_name, url, fields in sorted(jsroutes):
24 24 statements.append(
25 25 "pyroutes.register('%s', '%s', %s);" % (url_name, url, fields))
26 26 return u'''
@@ -92,6 +92,7 b' def make_pyramid_app(global_config, **se'
92 92 # Allows to use format style "{ENV_NAME}" placeholders in the configuration. It
93 93 # will be replaced by the value of the environment variable "NAME" in this case.
94 94 start_time = time.time()
95 log.info('Pyramid app config starting')
95 96
96 97 debug = asbool(global_config.get('debug'))
97 98 if debug:
@@ -121,6 +122,7 b' def make_pyramid_app(global_config, **se'
121 122 pyramid_app.config = config
122 123
123 124 config.configure_celery(global_config['__file__'])
125
124 126 # creating the app uses a connection - return it after we are done
125 127 meta.Session.remove()
126 128 total_time = time.time() - start_time
@@ -234,7 +236,7 b' def includeme_first(config):'
234 236 '_static/rhodecode', path='rhodecode:public', cache_max_age=3600 * 24)
235 237
236 238
237 def includeme(config):
239 def includeme(config, auth_resources=None):
238 240 log.debug('Initializing main includeme from %s', os.path.basename(__file__))
239 241 settings = config.registry.settings
240 242 config.set_request_factory(Request)
@@ -256,24 +258,29 b' def includeme(config):'
256 258 config.include('pyramid_mako')
257 259 config.include('rhodecode.lib.rc_beaker')
258 260 config.include('rhodecode.lib.rc_cache')
259
260 261 config.include('rhodecode.apps._base.navigation')
261 262 config.include('rhodecode.apps._base.subscribers')
262 263 config.include('rhodecode.tweens')
263 264 config.include('rhodecode.authentication')
264 265
265 266 if load_all:
266 config.include('rhodecode.integrations')
267 ce_auth_resources = [
268 'rhodecode.authentication.plugins.auth_crowd',
269 'rhodecode.authentication.plugins.auth_headers',
270 'rhodecode.authentication.plugins.auth_jasig_cas',
271 'rhodecode.authentication.plugins.auth_ldap',
272 'rhodecode.authentication.plugins.auth_pam',
273 'rhodecode.authentication.plugins.auth_rhodecode',
274 'rhodecode.authentication.plugins.auth_token',
275 ]
267 276
268 if load_all:
269 277 # load CE authentication plugins
270 config.include('rhodecode.authentication.plugins.auth_crowd')
271 config.include('rhodecode.authentication.plugins.auth_headers')
272 config.include('rhodecode.authentication.plugins.auth_jasig_cas')
273 config.include('rhodecode.authentication.plugins.auth_ldap')
274 config.include('rhodecode.authentication.plugins.auth_pam')
275 config.include('rhodecode.authentication.plugins.auth_rhodecode')
276 config.include('rhodecode.authentication.plugins.auth_token')
278
279 if auth_resources:
280 ce_auth_resources.extend(auth_resources)
281
282 for resource in ce_auth_resources:
283 config.include(resource)
277 284
278 285 # Auto discover authentication plugins and include their configuration.
279 286 if asbool(settings.get('auth_plugin.import_legacy_plugins', 'true')):
@@ -282,15 +289,17 b' def includeme(config):'
282 289
283 290 # apps
284 291 if load_all:
292 config.include('rhodecode.api')
285 293 config.include('rhodecode.apps._base')
286 294 config.include('rhodecode.apps.hovercards')
287 295 config.include('rhodecode.apps.ops')
288 config.include('rhodecode.apps.admin')
289 296 config.include('rhodecode.apps.channelstream')
290 297 config.include('rhodecode.apps.file_store')
298 config.include('rhodecode.apps.admin')
291 299 config.include('rhodecode.apps.login')
292 300 config.include('rhodecode.apps.home')
293 301 config.include('rhodecode.apps.journal')
302
294 303 config.include('rhodecode.apps.repository')
295 304 config.include('rhodecode.apps.repo_group')
296 305 config.include('rhodecode.apps.user_group')
@@ -298,11 +307,14 b' def includeme(config):'
298 307 config.include('rhodecode.apps.user_profile')
299 308 config.include('rhodecode.apps.user_group_profile')
300 309 config.include('rhodecode.apps.my_account')
310 config.include('rhodecode.apps.gist')
311
301 312 config.include('rhodecode.apps.svn_support')
302 313 config.include('rhodecode.apps.ssh_support')
303 config.include('rhodecode.apps.gist')
304 314 config.include('rhodecode.apps.debug_style')
305 config.include('rhodecode.api')
315
316 if load_all:
317 config.include('rhodecode.integrations')
306 318
307 319 config.add_route('rhodecode_support', 'https://rhodecode.com/help/', static=True)
308 320 config.add_translation_dirs('rhodecode:i18n/')
@@ -46,7 +46,7 b' def _pre_push_hook(*args, **kwargs):'
46 46 # e.g store a list of patterns to be forbidden e.g `*.exe, *.dump`
47 47 forbid_files = extra_fields.get_field(repo_extra_fields, key='forbid_files_glob',
48 48 convert_type=False, default=[])
49 forbid_files = aslist(forbid_files)
49 forbid_files = aslist(forbid_files, sep=',')
50 50
51 51 # forbid_files = ['*'] # example pattern
52 52
@@ -37,6 +37,7 b' from rhodecode.lib.vcs.backends.git.diff'
37 37 def get_svn_files(repo, vcs_repo, refs):
38 38 txn_id = refs[0]
39 39 files = []
40
40 41 stdout, stderr = vcs_repo.run_svn_command(
41 42 ['svnlook', 'changed', repo.repo_full_path, '--transaction', txn_id])
42 43
@@ -63,10 +64,17 b' def get_svn_files(repo, vcs_repo, refs):'
63 64 parsed_entry['operation'] = rc_op
64 65
65 66 if rc_op in ['A', 'M']:
67
66 68 stdout, stderr = vcs_repo.run_svn_command(
67 ['svnlook', 'filesize', repo.repo_full_path, path, '--transaction', txn_id])
68 file_size = int(stdout.strip())
69 parsed_entry['file_size'] = file_size
69 ['svnlook', 'filesize', repo.repo_full_path, path, '--transaction', txn_id],
70 _safe=True
71 )
72
73 if "Path '{}' is not a file".format(path.rstrip('/')) in stderr:
74 # skip dirs
75 continue
76
77 parsed_entry['file_size'] = int(stdout.strip())
70 78
71 79 files.append(parsed_entry)
72 80
@@ -20,29 +20,9 b' import logging'
20 20 from pyramid.threadlocal import get_current_registry
21 21 from rhodecode.events.base import RhodeCodeIntegrationEvent
22 22
23
24 log = logging.getLogger(__name__)
25
26
27 def trigger(event, registry=None):
28 """
29 Helper method to send an event. This wraps the pyramid logic to send an
30 event.
31 """
32 # For the first step we are using pyramids thread locals here. If the
33 # event mechanism works out as a good solution we should think about
34 # passing the registry as an argument to get rid of it.
35 event_name = event.__class__
36 log.debug('event %s sent for execution', event_name)
37 registry = registry or get_current_registry()
38 registry.notify(event)
39 log.debug('event %s triggered using registry %s', event_name, registry)
40
41 # Send the events to integrations directly
42 from rhodecode.integrations import integrations_event_handler
43 if isinstance(event, RhodeCodeIntegrationEvent):
44 integrations_event_handler(event)
45
23 from rhodecode.events.base import ( # pragma: no cover
24 FtsBuild
25 )
46 26
47 27 from rhodecode.events.user import ( # pragma: no cover
48 28 UserPreCreate,
@@ -78,3 +58,26 b' from rhodecode.events.pullrequest import'
78 58 PullRequestMergeEvent,
79 59 PullRequestCloseEvent,
80 60 )
61
62
63 log = logging.getLogger(__name__)
64
65
66 def trigger(event, registry=None):
67 """
68 Helper method to send an event. This wraps the pyramid logic to send an
69 event.
70 """
71 # For the first step we are using pyramids thread locals here. If the
72 # event mechanism works out as a good solution we should think about
73 # passing the registry as an argument to get rid of it.
74 event_name = event.__class__
75 log.debug('event %s sent for execution', event_name)
76 registry = registry or get_current_registry()
77 registry.notify(event)
78 log.debug('event %s triggered using registry %s', event_name, registry)
79
80 # Send the events to integrations directly
81 from rhodecode.integrations import integrations_event_handler
82 if isinstance(event, RhodeCodeIntegrationEvent):
83 integrations_event_handler(event)
@@ -120,3 +120,11 b' class RhodeCodeIntegrationEvent(Rhodecod'
120 120 Special subclass for Integration events
121 121 """
122 122 description = ''
123
124
125 class FtsBuild(RhodecodeEvent):
126 """
127 This event will be triggered when FTS Build is triggered
128 """
129 name = 'fts-build'
130 display_name = 'Start FTS Build'
This diff has been collapsed as it changes many lines, (1121 lines changed) Show them Hide them
@@ -6,9 +6,9 b''
6 6 #, fuzzy
7 7 msgid ""
8 8 msgstr ""
9 "Project-Id-Version: rhodecode-enterprise-ce 4.21.0\n"
9 "Project-Id-Version: rhodecode-enterprise-ce 4.23.0\n"
10 10 "Report-Msgid-Bugs-To: marcin@rhodecode.com\n"
11 "POT-Creation-Date: 2020-10-12 13:39+0000\n"
11 "POT-Creation-Date: 2020-11-23 09:00+0000\n"
12 12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14 14 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,9 +18,7 b' msgstr ""'
18 18 "Generated-By: Babel 1.3\n"
19 19
20 20 #: rhodecode/api/views/pull_request_api.py:646
21 #: rhodecode/api/views/repo_api.py:1685
22 #: rhodecode/apps/repository/views/repo_commits.py:471
23 #: rhodecode/apps/repository/views/repo_pull_requests.py:1658
21 #: rhodecode/api/views/repo_api.py:1686
24 22 msgid "posted a new {} comment"
25 23 msgstr ""
26 24
@@ -63,9 +61,9 b' msgstr ""'
63 61 #: rhodecode/templates/admin/integrations/list.mako:172
64 62 #: rhodecode/templates/admin/my_account/my_account_profile.mako:7
65 63 #: rhodecode/templates/base/issue_tracker_settings.mako:138
66 #: rhodecode/templates/changeset/changeset_file_comment.mako:213
67 #: rhodecode/templates/changeset/changeset_file_comment.mako:221
68 #: rhodecode/templates/changeset/changeset_file_comment.mako:230
64 #: rhodecode/templates/changeset/changeset_file_comment.mako:233
65 #: rhodecode/templates/changeset/changeset_file_comment.mako:247
66 #: rhodecode/templates/changeset/changeset_file_comment.mako:256
69 67 #: rhodecode/templates/data_table/_dt_elements.mako:173
70 68 #: rhodecode/templates/data_table/_dt_elements.mako:251
71 69 #: rhodecode/templates/data_table/_dt_elements.mako:266
@@ -76,9 +74,9 b' msgstr ""'
76 74 #: rhodecode/templates/files/files_edit.mako:57
77 75 #: rhodecode/templates/files/files_source.mako:39
78 76 #: rhodecode/templates/files/files_source.mako:52
79 #: rhodecode/templates/pullrequests/pullrequest_show.mako:83
80 #: rhodecode/templates/pullrequests/pullrequest_show.mako:588
81 #: rhodecode/templates/pullrequests/pullrequest_show.mako:645
77 #: rhodecode/templates/pullrequests/pullrequest_show.mako:81
78 #: rhodecode/templates/pullrequests/pullrequest_show.mako:622
79 #: rhodecode/templates/pullrequests/pullrequest_show.mako:679
82 80 #: rhodecode/templates/user_group/profile.mako:8
83 81 #: rhodecode/templates/users/user_profile.mako:8
84 82 msgid "Edit"
@@ -377,200 +375,200 b' msgstr ""'
377 375 msgid "Error occurred during creation of user %s"
378 376 msgstr ""
379 377
380 #: rhodecode/apps/admin/views/users.py:345
378 #: rhodecode/apps/admin/views/users.py:349
381 379 msgid "User updated successfully"
382 380 msgstr ""
383 381
384 #: rhodecode/apps/admin/views/users.py:363
382 #: rhodecode/apps/admin/views/users.py:367
385 383 #, python-format
386 384 msgid "Error occurred during update of user %s"
387 385 msgstr ""
388 386
389 #: rhodecode/apps/admin/views/users.py:394
387 #: rhodecode/apps/admin/views/users.py:398
390 388 #, python-format
391 389 msgid "Detached %s repositories"
392 390 msgstr ""
393 391
394 #: rhodecode/apps/admin/views/users.py:397
392 #: rhodecode/apps/admin/views/users.py:401
395 393 #, python-format
396 394 msgid "Deleted %s repositories"
397 395 msgstr ""
398 396
399 #: rhodecode/apps/admin/views/users.py:403
397 #: rhodecode/apps/admin/views/users.py:407
400 398 #, python-format
401 399 msgid "Detached %s repository groups"
402 400 msgstr ""
403 401
404 #: rhodecode/apps/admin/views/users.py:406
402 #: rhodecode/apps/admin/views/users.py:410
405 403 #, python-format
406 404 msgid "Deleted %s repository groups"
407 405 msgstr ""
408 406
409 #: rhodecode/apps/admin/views/users.py:412
407 #: rhodecode/apps/admin/views/users.py:416
410 408 #, python-format
411 409 msgid "Detached %s user groups"
412 410 msgstr ""
413 411
414 #: rhodecode/apps/admin/views/users.py:415
412 #: rhodecode/apps/admin/views/users.py:419
415 413 #, python-format
416 414 msgid "Deleted %s user groups"
417 415 msgstr ""
418 416
419 #: rhodecode/apps/admin/views/users.py:421
417 #: rhodecode/apps/admin/views/users.py:425
420 418 #, python-format
421 419 msgid "Detached %s pull requests"
422 420 msgstr ""
423 421
424 #: rhodecode/apps/admin/views/users.py:424
422 #: rhodecode/apps/admin/views/users.py:428
425 423 #, python-format
426 424 msgid "Deleted %s pull requests"
427 425 msgstr ""
428 426
429 #: rhodecode/apps/admin/views/users.py:430
427 #: rhodecode/apps/admin/views/users.py:434
430 428 #, python-format
431 429 msgid "Detached %s artifacts"
432 430 msgstr ""
433 431
434 #: rhodecode/apps/admin/views/users.py:433
432 #: rhodecode/apps/admin/views/users.py:437
435 433 #, python-format
436 434 msgid "Deleted %s artifacts"
437 435 msgstr ""
438 436
439 #: rhodecode/apps/admin/views/users.py:482
437 #: rhodecode/apps/admin/views/users.py:486
440 438 msgid "Successfully deleted user `{}`"
441 439 msgstr ""
442 440
443 #: rhodecode/apps/admin/views/users.py:489
441 #: rhodecode/apps/admin/views/users.py:493
444 442 msgid "An error occurred during deletion of user"
445 443 msgstr ""
446 444
447 #: rhodecode/apps/admin/views/users.py:558
445 #: rhodecode/apps/admin/views/users.py:562
448 446 msgid ""
449 447 "The user participates as reviewer in {} pull request and cannot be deleted. \n"
450 448 "You can set the user to \"{}\" instead of deleting it."
451 449 msgstr ""
452 450
453 #: rhodecode/apps/admin/views/users.py:564
451 #: rhodecode/apps/admin/views/users.py:568
454 452 msgid ""
455 453 "The user participates as reviewer in {} pull requests and cannot be deleted. \n"
456 454 "You can set the user to \"{}\" instead of deleting it."
457 455 msgstr ""
458 456
459 #: rhodecode/apps/admin/views/users.py:653
457 #: rhodecode/apps/admin/views/users.py:657
460 458 msgid "User global permissions updated successfully"
461 459 msgstr ""
462 460
463 #: rhodecode/apps/admin/views/users.py:671
461 #: rhodecode/apps/admin/views/users.py:675
464 462 #: rhodecode/apps/user_group/views/__init__.py:479
465 463 msgid "An error occurred during permissions saving"
466 464 msgstr ""
467 465
468 #: rhodecode/apps/admin/views/users.py:694
466 #: rhodecode/apps/admin/views/users.py:698
469 467 msgid "Force password change enabled for user"
470 468 msgstr ""
471 469
472 #: rhodecode/apps/admin/views/users.py:702
473 #: rhodecode/apps/admin/views/users.py:732
470 #: rhodecode/apps/admin/views/users.py:706
471 #: rhodecode/apps/admin/views/users.py:736
474 472 msgid "An error occurred during password reset for user"
475 473 msgstr ""
476 474
477 #: rhodecode/apps/admin/views/users.py:723
475 #: rhodecode/apps/admin/views/users.py:727
478 476 msgid "Force password change disabled for user"
479 477 msgstr ""
480 478
481 #: rhodecode/apps/admin/views/users.py:796
479 #: rhodecode/apps/admin/views/users.py:800
482 480 #, python-format
483 481 msgid "Linked repository group `%s` as personal"
484 482 msgstr ""
485 483
486 #: rhodecode/apps/admin/views/users.py:802
487 #, python-format
488 msgid "Created repository group `%s`"
489 msgstr ""
490
491 484 #: rhodecode/apps/admin/views/users.py:806
492 485 #, python-format
486 msgid "Created repository group `%s`"
487 msgstr ""
488
489 #: rhodecode/apps/admin/views/users.py:810
490 #, python-format
493 491 msgid "Repository group `%s` is already taken"
494 492 msgstr ""
495 493
496 #: rhodecode/apps/admin/views/users.py:811
494 #: rhodecode/apps/admin/views/users.py:815
497 495 msgid "An error occurred during repository group creation for user"
498 496 msgstr ""
499 497
500 #: rhodecode/apps/admin/views/users.py:834
498 #: rhodecode/apps/admin/views/users.py:838
501 499 #: rhodecode/apps/my_account/views/my_account.py:161
502 500 #: rhodecode/templates/admin/my_account/my_account_auth_tokens.mako:28
503 501 #: rhodecode/templates/admin/users/user_edit_auth_tokens.mako:33
504 502 msgid "Role"
505 503 msgstr ""
506 504
507 #: rhodecode/apps/admin/views/users.py:892
505 #: rhodecode/apps/admin/views/users.py:896
508 506 #: rhodecode/apps/my_account/views/my_account.py:217
509 507 msgid "Auth token successfully created"
510 508 msgstr ""
511 509
512 #: rhodecode/apps/admin/views/users.py:921
510 #: rhodecode/apps/admin/views/users.py:925
513 511 #: rhodecode/apps/my_account/views/my_account.py:241
514 512 msgid "Auth token successfully deleted"
515 513 msgstr ""
516 514
517 #: rhodecode/apps/admin/views/users.py:997
515 #: rhodecode/apps/admin/views/users.py:1001
518 516 #: rhodecode/apps/my_account/views/my_account_ssh_keys.py:117
519 517 msgid "Ssh Key successfully created"
520 518 msgstr ""
521 519
522 #: rhodecode/apps/admin/views/users.py:1003
523 520 #: rhodecode/apps/admin/views/users.py:1007
521 #: rhodecode/apps/admin/views/users.py:1011
524 522 #: rhodecode/apps/my_account/views/my_account_ssh_keys.py:123
525 523 #: rhodecode/apps/my_account/views/my_account_ssh_keys.py:127
526 524 msgid "An error occurred during ssh key saving: {}"
527 525 msgstr ""
528 526
529 #: rhodecode/apps/admin/views/users.py:1041
527 #: rhodecode/apps/admin/views/users.py:1045
530 528 #: rhodecode/apps/my_account/views/my_account_ssh_keys.py:157
531 529 msgid "Ssh key successfully deleted"
532 530 msgstr ""
533 531
534 #: rhodecode/apps/admin/views/users.py:1087
532 #: rhodecode/apps/admin/views/users.py:1091
535 533 #, python-format
536 534 msgid "Added new email address `%s` for user account"
537 535 msgstr ""
538 536
539 #: rhodecode/apps/admin/views/users.py:1093
540 msgid "Email `{}` is already registered for another user."
541 msgstr ""
542
543 537 #: rhodecode/apps/admin/views/users.py:1097
538 msgid "Email `{}` is already registered for another user."
539 msgstr ""
540
541 #: rhodecode/apps/admin/views/users.py:1101
544 542 msgid "An error occurred during email saving"
545 543 msgstr ""
546 544
547 #: rhodecode/apps/admin/views/users.py:1124
545 #: rhodecode/apps/admin/views/users.py:1128
548 546 msgid "Removed email address from user account"
549 547 msgstr ""
550 548
551 #: rhodecode/apps/admin/views/users.py:1170
549 #: rhodecode/apps/admin/views/users.py:1174
552 550 #, python-format
553 551 msgid "An error occurred during ip saving:%s"
554 552 msgstr ""
555 553
556 #: rhodecode/apps/admin/views/users.py:1192
557 msgid "An error occurred during ip saving"
558 msgstr ""
559
560 554 #: rhodecode/apps/admin/views/users.py:1196
555 msgid "An error occurred during ip saving"
556 msgstr ""
557
558 #: rhodecode/apps/admin/views/users.py:1200
561 559 #, python-format
562 560 msgid "Added ips %s to user whitelist"
563 561 msgstr ""
564 562
565 #: rhodecode/apps/admin/views/users.py:1226
563 #: rhodecode/apps/admin/views/users.py:1230
566 564 msgid "Removed ip address from user whitelist"
567 565 msgstr ""
568 566
569 #: rhodecode/apps/admin/views/users.py:1291
567 #: rhodecode/apps/admin/views/users.py:1295
570 568 msgid "Groups successfully changed"
571 569 msgstr ""
572 570
573 #: rhodecode/apps/admin/views/users.py:1411
571 #: rhodecode/apps/admin/views/users.py:1415
574 572 msgid "Deleted {} cache keys"
575 573 msgstr ""
576 574
@@ -649,7 +647,7 b' msgid "Error occurred during update of g'
649 647 msgstr ""
650 648
651 649 #: rhodecode/apps/home/views.py:453
652 #: rhodecode/apps/repository/views/repo_pull_requests.py:976
650 #: rhodecode/apps/repository/views/repo_pull_requests.py:983
653 651 #: rhodecode/templates/admin/repo_groups/repo_group_edit_permissions.mako:219
654 652 #: rhodecode/templates/admin/repos/repo_add.mako:15
655 653 #: rhodecode/templates/admin/repos/repo_add.mako:19
@@ -736,11 +734,11 b' msgstr ""'
736 734 msgid "Failed to update bookmarks. Make sure an unique position is used."
737 735 msgstr ""
738 736
739 #: rhodecode/apps/my_account/views/my_account.py:707
737 #: rhodecode/apps/my_account/views/my_account.py:709
740 738 msgid "Your account was updated successfully"
741 739 msgstr ""
742 740
743 #: rhodecode/apps/my_account/views/my_account.py:714
741 #: rhodecode/apps/my_account/views/my_account.py:716
744 742 msgid "Error occurred during update of user"
745 743 msgstr ""
746 744
@@ -787,7 +785,7 b' msgstr ""'
787 785
788 786 #: rhodecode/apps/repository/views/repo_changelog.py:66
789 787 #: rhodecode/apps/repository/views/repo_compare.py:64
790 #: rhodecode/apps/repository/views/repo_pull_requests.py:825
788 #: rhodecode/apps/repository/views/repo_pull_requests.py:832
791 789 msgid "There are no commits yet"
792 790 msgstr ""
793 791
@@ -811,20 +809,30 b' msgstr ""'
811 809 msgid "Created repository %s"
812 810 msgstr ""
813 811
814 #: rhodecode/apps/repository/views/repo_commits.py:112
812 #: rhodecode/apps/repository/views/repo_commits.py:113
815 813 msgid "No such commit exists. Org exception: `{}`"
816 814 msgstr ""
817 815
818 #: rhodecode/apps/repository/views/repo_commits.py:388
819 #: rhodecode/apps/repository/views/repo_pull_requests.py:1582
816 #: rhodecode/apps/repository/views/repo_commits.py:404
817 #: rhodecode/apps/repository/views/repo_pull_requests.py:1620
820 818 #, python-format
821 819 msgid "Status change %(transition_icon)s %(status)s"
822 820 msgstr ""
823 821
824 #: rhodecode/apps/repository/views/repo_commits.py:434
822 #: rhodecode/apps/repository/views/repo_commits.py:442
825 823 msgid "Changing the status of a commit associated with a closed pull request is not allowed"
826 824 msgstr ""
827 825
826 #: rhodecode/apps/repository/views/repo_commits.py:488
827 #: rhodecode/apps/repository/views/repo_pull_requests.py:1703
828 msgid "posted {} new {} comment"
829 msgstr ""
830
831 #: rhodecode/apps/repository/views/repo_commits.py:490
832 #: rhodecode/apps/repository/views/repo_pull_requests.py:1705
833 msgid "posted {} new {} comments"
834 msgstr ""
835
828 836 #: rhodecode/apps/repository/views/repo_compare.py:102
829 837 msgid "Select commit"
830 838 msgstr ""
@@ -886,104 +894,104 b' msgstr ""'
886 894 msgid "No such commit exists for this repository. Commit: {}"
887 895 msgstr ""
888 896
889 #: rhodecode/apps/repository/views/repo_files.py:345
897 #: rhodecode/apps/repository/views/repo_files.py:361
890 898 msgid "Downloads disabled"
891 899 msgstr ""
892 900
893 #: rhodecode/apps/repository/views/repo_files.py:351
901 #: rhodecode/apps/repository/views/repo_files.py:367
894 902 msgid "Unknown archive type for: `{}`"
895 903 msgstr ""
896 904
897 #: rhodecode/apps/repository/views/repo_files.py:357
905 #: rhodecode/apps/repository/views/repo_files.py:373
898 906 msgid "Unknown commit_id {}"
899 907 msgstr ""
900 908
901 #: rhodecode/apps/repository/views/repo_files.py:360
909 #: rhodecode/apps/repository/views/repo_files.py:376
902 910 msgid "Empty repository"
903 911 msgstr ""
904 912
905 #: rhodecode/apps/repository/views/repo_files.py:365
913 #: rhodecode/apps/repository/views/repo_files.py:381
906 914 msgid "No node at path {} for this repository"
907 915 msgstr ""
908 916
909 #: rhodecode/apps/repository/views/repo_files.py:414
917 #: rhodecode/apps/repository/views/repo_files.py:432
910 918 msgid "Unknown archive type"
911 919 msgstr ""
912 920
913 #: rhodecode/apps/repository/views/repo_files.py:1010
921 #: rhodecode/apps/repository/views/repo_files.py:1027
914 922 msgid "Changesets"
915 923 msgstr ""
916 924
917 #: rhodecode/apps/repository/views/repo_files.py:1031
925 #: rhodecode/apps/repository/views/repo_files.py:1048
918 926 #: rhodecode/apps/repository/views/repo_summary.py:264
919 #: rhodecode/model/pull_request.py:1903 rhodecode/model/scm.py:995
927 #: rhodecode/model/pull_request.py:1896 rhodecode/model/scm.py:999
920 928 #: rhodecode/templates/base/vcs_settings.mako:235
921 929 #: rhodecode/templates/summary/components.mako:10
922 930 msgid "Branches"
923 931 msgstr ""
924 932
925 #: rhodecode/apps/repository/views/repo_files.py:1035
926 #: rhodecode/model/scm.py:1012 rhodecode/templates/base/vcs_settings.mako:260
933 #: rhodecode/apps/repository/views/repo_files.py:1052
934 #: rhodecode/model/scm.py:1016 rhodecode/templates/base/vcs_settings.mako:260
927 935 #: rhodecode/templates/summary/components.mako:34
928 936 msgid "Tags"
929 937 msgstr ""
930 938
931 #: rhodecode/apps/repository/views/repo_files.py:1191
932 #: rhodecode/apps/repository/views/repo_files.py:1220
939 #: rhodecode/apps/repository/views/repo_files.py:1208
940 #: rhodecode/apps/repository/views/repo_files.py:1237
933 941 msgid "Deleted file {} via RhodeCode Enterprise"
934 942 msgstr ""
935 943
936 #: rhodecode/apps/repository/views/repo_files.py:1241
944 #: rhodecode/apps/repository/views/repo_files.py:1258
937 945 msgid "Successfully deleted file `{}`"
938 946 msgstr ""
939 947
940 #: rhodecode/apps/repository/views/repo_files.py:1245
941 #: rhodecode/apps/repository/views/repo_files.py:1364
942 #: rhodecode/apps/repository/views/repo_files.py:1497
943 #: rhodecode/apps/repository/views/repo_files.py:1621
948 #: rhodecode/apps/repository/views/repo_files.py:1262
949 #: rhodecode/apps/repository/views/repo_files.py:1381
950 #: rhodecode/apps/repository/views/repo_files.py:1514
951 #: rhodecode/apps/repository/views/repo_files.py:1638
944 952 msgid "Error occurred during commit"
945 953 msgstr ""
946 954
947 #: rhodecode/apps/repository/views/repo_files.py:1278
948 #: rhodecode/apps/repository/views/repo_files.py:1310
955 #: rhodecode/apps/repository/views/repo_files.py:1295
956 #: rhodecode/apps/repository/views/repo_files.py:1327
949 957 msgid "Edited file {} via RhodeCode Enterprise"
950 958 msgstr ""
951 959
952 #: rhodecode/apps/repository/views/repo_files.py:1333
960 #: rhodecode/apps/repository/views/repo_files.py:1350
953 961 msgid "No changes detected on {}"
954 962 msgstr ""
955 963
956 #: rhodecode/apps/repository/views/repo_files.py:1357
964 #: rhodecode/apps/repository/views/repo_files.py:1374
957 965 msgid "Successfully committed changes to file `{}`"
958 966 msgstr ""
959 967
960 #: rhodecode/apps/repository/views/repo_files.py:1399
961 #: rhodecode/apps/repository/views/repo_files.py:1441
968 #: rhodecode/apps/repository/views/repo_files.py:1416
969 #: rhodecode/apps/repository/views/repo_files.py:1458
962 970 msgid "Added file via RhodeCode Enterprise"
963 971 msgstr ""
964 972
965 #: rhodecode/apps/repository/views/repo_files.py:1457
973 #: rhodecode/apps/repository/views/repo_files.py:1474
966 974 msgid "No filename specified"
967 975 msgstr ""
968 976
969 #: rhodecode/apps/repository/views/repo_files.py:1482
977 #: rhodecode/apps/repository/views/repo_files.py:1499
970 978 msgid "Successfully committed new file `{}`"
971 979 msgstr ""
972 980
973 #: rhodecode/apps/repository/views/repo_files.py:1490
974 #: rhodecode/apps/repository/views/repo_files.py:1603
981 #: rhodecode/apps/repository/views/repo_files.py:1507
982 #: rhodecode/apps/repository/views/repo_files.py:1620
975 983 msgid "The location specified must be a relative path and must not contain .. in the path"
976 984 msgstr ""
977 985
978 #: rhodecode/apps/repository/views/repo_files.py:1548
986 #: rhodecode/apps/repository/views/repo_files.py:1565
979 987 msgid "Uploaded file via RhodeCode Enterprise"
980 988 msgstr ""
981 989
982 #: rhodecode/apps/repository/views/repo_files.py:1592
990 #: rhodecode/apps/repository/views/repo_files.py:1609
983 991 msgid "Successfully committed {} new files"
984 992 msgstr ""
985 993
986 #: rhodecode/apps/repository/views/repo_files.py:1594
994 #: rhodecode/apps/repository/views/repo_files.py:1611
987 995 msgid "Successfully committed 1 new file"
988 996 msgstr ""
989 997
@@ -1013,72 +1021,72 b' msgstr ""'
1013 1021 msgid "Error occurred during update of repository {}"
1014 1022 msgstr ""
1015 1023
1016 #: rhodecode/apps/repository/views/repo_pull_requests.py:325
1024 #: rhodecode/apps/repository/views/repo_pull_requests.py:331
1017 1025 msgid "Pull Request state was force changed to `{}`"
1018 1026 msgstr ""
1019 1027
1020 #: rhodecode/apps/repository/views/repo_pull_requests.py:855
1028 #: rhodecode/apps/repository/views/repo_pull_requests.py:862
1021 1029 msgid "Commit does not exist"
1022 1030 msgstr ""
1023 1031
1024 #: rhodecode/apps/repository/views/repo_pull_requests.py:1092
1032 #: rhodecode/apps/repository/views/repo_pull_requests.py:1142
1025 1033 msgid "Error creating pull request: {}"
1026 1034 msgstr ""
1027 1035
1028 #: rhodecode/apps/repository/views/repo_pull_requests.py:1112
1036 #: rhodecode/apps/repository/views/repo_pull_requests.py:1162
1029 1037 msgid "source_repo or target repo not found"
1030 1038 msgstr ""
1031 1039
1032 #: rhodecode/apps/repository/views/repo_pull_requests.py:1123
1040 #: rhodecode/apps/repository/views/repo_pull_requests.py:1173
1033 1041 msgid "Not Enough permissions to source repo `{}`."
1034 1042 msgstr ""
1035 1043
1036 #: rhodecode/apps/repository/views/repo_pull_requests.py:1138
1044 #: rhodecode/apps/repository/views/repo_pull_requests.py:1188
1037 1045 msgid "Not Enough permissions to target repo `{}`."
1038 1046 msgstr ""
1039 1047
1040 #: rhodecode/apps/repository/views/repo_pull_requests.py:1208
1048 #: rhodecode/apps/repository/views/repo_pull_requests.py:1258
1041 1049 msgid "Successfully opened new pull request"
1042 1050 msgstr ""
1043 1051
1044 #: rhodecode/apps/repository/views/repo_pull_requests.py:1211
1052 #: rhodecode/apps/repository/views/repo_pull_requests.py:1261
1045 1053 msgid "Error occurred during creation of this pull request."
1046 1054 msgstr ""
1047 1055
1048 #: rhodecode/apps/repository/views/repo_pull_requests.py:1243
1049 #: rhodecode/apps/repository/views/repo_pull_requests.py:1312
1056 #: rhodecode/apps/repository/views/repo_pull_requests.py:1293
1057 #: rhodecode/apps/repository/views/repo_pull_requests.py:1362
1050 1058 msgid "Cannot update closed pull requests."
1051 1059 msgstr ""
1052 1060
1053 #: rhodecode/apps/repository/views/repo_pull_requests.py:1275
1061 #: rhodecode/apps/repository/views/repo_pull_requests.py:1325
1054 1062 msgid "Cannot update pull requests commits in state other than `{}`. Current state is: `{}`"
1055 1063 msgstr ""
1056 1064
1057 #: rhodecode/apps/repository/views/repo_pull_requests.py:1318
1065 #: rhodecode/apps/repository/views/repo_pull_requests.py:1368
1058 1066 msgid "Pull request title & description updated."
1059 1067 msgstr ""
1060 1068
1061 #: rhodecode/apps/repository/views/repo_pull_requests.py:1340
1069 #: rhodecode/apps/repository/views/repo_pull_requests.py:1390
1062 1070 msgid "Pull request updated to \"{source_commit_id}\" with {count_added} added, {count_removed} removed commits. Source of changes: {change_source}."
1063 1071 msgstr ""
1064 1072
1065 #: rhodecode/apps/repository/views/repo_pull_requests.py:1380
1073 #: rhodecode/apps/repository/views/repo_pull_requests.py:1430
1066 1074 msgid "Pull request reviewers updated."
1067 1075 msgstr ""
1068 1076
1069 #: rhodecode/apps/repository/views/repo_pull_requests.py:1404
1077 #: rhodecode/apps/repository/views/repo_pull_requests.py:1454
1070 1078 msgid "Pull request observers updated."
1071 1079 msgstr ""
1072 1080
1073 #: rhodecode/apps/repository/views/repo_pull_requests.py:1431
1081 #: rhodecode/apps/repository/views/repo_pull_requests.py:1481
1074 1082 msgid "Cannot merge pull requests in state other than `{}`. Current state is: `{}`"
1075 1083 msgstr ""
1076 1084
1077 #: rhodecode/apps/repository/views/repo_pull_requests.py:1477
1085 #: rhodecode/apps/repository/views/repo_pull_requests.py:1527
1078 1086 msgid "Pull request was successfully merged and closed."
1079 1087 msgstr ""
1080 1088
1081 #: rhodecode/apps/repository/views/repo_pull_requests.py:1508
1089 #: rhodecode/apps/repository/views/repo_pull_requests.py:1558
1082 1090 msgid "Successfully deleted pull request"
1083 1091 msgstr ""
1084 1092
@@ -1830,10 +1838,10 b' msgstr ""'
1830 1838 #: rhodecode/templates/base/issue_tracker_settings.mako:147
1831 1839 #: rhodecode/templates/base/vcs_settings.mako:244
1832 1840 #: rhodecode/templates/base/vcs_settings.mako:269
1833 #: rhodecode/templates/changeset/changeset_file_comment.mako:216
1834 #: rhodecode/templates/changeset/changeset_file_comment.mako:224
1835 #: rhodecode/templates/changeset/changeset_file_comment.mako:233
1836 #: rhodecode/templates/data_table/_dt_elements.mako:436
1841 #: rhodecode/templates/changeset/changeset_file_comment.mako:236
1842 #: rhodecode/templates/changeset/changeset_file_comment.mako:250
1843 #: rhodecode/templates/changeset/changeset_file_comment.mako:259
1844 #: rhodecode/templates/data_table/_dt_elements.mako:439
1837 1845 #: rhodecode/templates/debug_style/buttons.html:132
1838 1846 #: rhodecode/templates/files/files_source.mako:40
1839 1847 #: rhodecode/templates/files/files_source.mako:47
@@ -1915,7 +1923,7 b' msgid "Email address"'
1915 1923 msgstr ""
1916 1924
1917 1925 #: rhodecode/integrations/types/email.py:175
1918 #: rhodecode/templates/register.mako:95
1926 #: rhodecode/templates/register.mako:97
1919 1927 #: rhodecode/templates/admin/my_account/my_account_profile.mako:78
1920 1928 #: rhodecode/templates/admin/users/user_add.mako:86
1921 1929 #: rhodecode/templates/admin/users/user_edit_profile.mako:65
@@ -1991,7 +1999,7 b' msgstr ""'
1991 1999
1992 2000 #: rhodecode/integrations/types/slack.py:86
1993 2001 #: rhodecode/integrations/types/webhook.py:81 rhodecode/templates/login.mako:44
1994 #: rhodecode/templates/register.mako:48
2002 #: rhodecode/templates/register.mako:50
1995 2003 #: rhodecode/templates/admin/admin_log_base.mako:7
1996 2004 #: rhodecode/templates/admin/my_account/my_account_profile.mako:38
1997 2005 #: rhodecode/templates/admin/my_account/my_account_profile_edit.mako:29
@@ -2056,7 +2064,7 b' msgid "Optional username to authenticate'
2056 2064 msgstr ""
2057 2065
2058 2066 #: rhodecode/integrations/types/webhook.py:91 rhodecode/templates/login.mako:51
2059 #: rhodecode/templates/register.mako:62
2067 #: rhodecode/templates/register.mako:64
2060 2068 #: rhodecode/templates/admin/my_account/my_account.mako:31
2061 2069 #: rhodecode/templates/admin/users/user_add.mako:44
2062 2070 #: rhodecode/templates/debug_style/login.html:45
@@ -2237,10 +2245,6 b' msgstr ""'
2237 2245 msgid " Reload page to load changes"
2238 2246 msgstr ""
2239 2247
2240 #: rhodecode/lib/channelstream.py:348
2241 msgid "Reload page to see new comments"
2242 msgstr ""
2243
2244 2248 #: rhodecode/lib/diffs.py:903
2245 2249 msgid "Click to select line"
2246 2250 msgstr ""
@@ -2755,10 +2759,10 b' msgstr ""'
2755 2759 #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2910
2756 2760 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3011
2757 2761 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3012
2758 #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3230 rhodecode/model/db.py:3971
2762 #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3230 rhodecode/model/db.py:3972
2759 2763 #: rhodecode/public/js/scripts.js:42424 rhodecode/public/js/scripts.min.js:1
2760 2764 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:70
2761 #: rhodecode/public/js/src/rhodecode/pullrequests.js:445
2765 #: rhodecode/public/js/src/rhodecode/pullrequests.js:396
2762 2766 msgid "Not Reviewed"
2763 2767 msgstr ""
2764 2768
@@ -2801,7 +2805,7 b' msgstr ""'
2801 2805 #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2911
2802 2806 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3012
2803 2807 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3013
2804 #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3231 rhodecode/model/db.py:3972
2808 #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3231 rhodecode/model/db.py:3973
2805 2809 msgid "Approved"
2806 2810 msgstr ""
2807 2811
@@ -2844,7 +2848,7 b' msgstr ""'
2844 2848 #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2912
2845 2849 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3013
2846 2850 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3014
2847 #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3232 rhodecode/model/db.py:3973
2851 #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3232 rhodecode/model/db.py:3974
2848 2852 msgid "Rejected"
2849 2853 msgstr ""
2850 2854
@@ -2887,7 +2891,7 b' msgstr ""'
2887 2891 #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2913
2888 2892 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3014
2889 2893 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3015
2890 #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3233 rhodecode/model/db.py:3974
2894 #: rhodecode/lib/dbmigrate/schema/db_4_9_0_0.py:3233 rhodecode/model/db.py:3975
2891 2895 msgid "Under Review"
2892 2896 msgstr ""
2893 2897
@@ -4064,72 +4068,72 b' msgstr ""'
4064 4068 msgid "Enter %(min)i characters or more"
4065 4069 msgstr ""
4066 4070
4067 #: rhodecode/model/notification.py:248
4071 #: rhodecode/model/notification.py:263
4068 4072 #, python-format
4069 4073 msgid "%(user)s commented on commit %(date_or_age)s"
4070 4074 msgstr ""
4071 4075
4072 #: rhodecode/model/notification.py:249
4073 #, python-format
4074 msgid "%(user)s commented on commit at %(date_or_age)s"
4075 msgstr ""
4076
4077 #: rhodecode/model/notification.py:252
4078 #, python-format
4079 msgid "%(user)s sent message %(date_or_age)s"
4080 msgstr ""
4081
4082 #: rhodecode/model/notification.py:253
4083 #, python-format
4084 msgid "%(user)s sent message at %(date_or_age)s"
4085 msgstr ""
4086
4087 #: rhodecode/model/notification.py:256
4088 #, python-format
4089 msgid "%(user)s mentioned you %(date_or_age)s"
4090 msgstr ""
4091
4092 #: rhodecode/model/notification.py:257
4093 #, python-format
4094 msgid "%(user)s mentioned you at %(date_or_age)s"
4095 msgstr ""
4096
4097 #: rhodecode/model/notification.py:260
4098 #, python-format
4099 msgid "%(user)s registered in RhodeCode %(date_or_age)s"
4100 msgstr ""
4101
4102 #: rhodecode/model/notification.py:261
4103 #, python-format
4104 msgid "%(user)s registered in RhodeCode at %(date_or_age)s"
4105 msgstr ""
4106
4107 4076 #: rhodecode/model/notification.py:264
4108 4077 #, python-format
4109 msgid "%(user)s opened new pull request %(date_or_age)s"
4110 msgstr ""
4111
4112 #: rhodecode/model/notification.py:265
4113 #, python-format
4114 msgid "%(user)s opened new pull request at %(date_or_age)s"
4078 msgid "%(user)s commented on commit at %(date_or_age)s"
4079 msgstr ""
4080
4081 #: rhodecode/model/notification.py:267
4082 #, python-format
4083 msgid "%(user)s sent message %(date_or_age)s"
4115 4084 msgstr ""
4116 4085
4117 4086 #: rhodecode/model/notification.py:268
4118 4087 #, python-format
4119 msgid "%(user)s updated pull request %(date_or_age)s"
4120 msgstr ""
4121
4122 #: rhodecode/model/notification.py:269
4123 #, python-format
4124 msgid "%(user)s updated pull request at %(date_or_age)s"
4088 msgid "%(user)s sent message at %(date_or_age)s"
4089 msgstr ""
4090
4091 #: rhodecode/model/notification.py:271
4092 #, python-format
4093 msgid "%(user)s mentioned you %(date_or_age)s"
4125 4094 msgstr ""
4126 4095
4127 4096 #: rhodecode/model/notification.py:272
4128 4097 #, python-format
4098 msgid "%(user)s mentioned you at %(date_or_age)s"
4099 msgstr ""
4100
4101 #: rhodecode/model/notification.py:275
4102 #, python-format
4103 msgid "%(user)s registered in RhodeCode %(date_or_age)s"
4104 msgstr ""
4105
4106 #: rhodecode/model/notification.py:276
4107 #, python-format
4108 msgid "%(user)s registered in RhodeCode at %(date_or_age)s"
4109 msgstr ""
4110
4111 #: rhodecode/model/notification.py:279
4112 #, python-format
4113 msgid "%(user)s opened new pull request %(date_or_age)s"
4114 msgstr ""
4115
4116 #: rhodecode/model/notification.py:280
4117 #, python-format
4118 msgid "%(user)s opened new pull request at %(date_or_age)s"
4119 msgstr ""
4120
4121 #: rhodecode/model/notification.py:283
4122 #, python-format
4123 msgid "%(user)s updated pull request %(date_or_age)s"
4124 msgstr ""
4125
4126 #: rhodecode/model/notification.py:284
4127 #, python-format
4128 msgid "%(user)s updated pull request at %(date_or_age)s"
4129 msgstr ""
4130
4131 #: rhodecode/model/notification.py:287
4132 #, python-format
4129 4133 msgid "%(user)s commented on pull request %(date_or_age)s"
4130 4134 msgstr ""
4131 4135
4132 #: rhodecode/model/notification.py:273
4136 #: rhodecode/model/notification.py:288
4133 4137 #, python-format
4134 4138 msgid "%(user)s commented on pull request at %(date_or_age)s"
4135 4139 msgstr ""
@@ -4156,9 +4160,9 b' msgstr ""'
4156 4160 #: rhodecode/templates/admin/repo_groups/repo_group_edit_permissions.mako:13
4157 4161 #: rhodecode/templates/admin/repos/repo_edit_permissions.mako:13
4158 4162 #: rhodecode/templates/admin/user_groups/user_group_edit_perms.mako:17
4159 #: rhodecode/templates/changeset/changeset_file_comment.mako:364
4160 #: rhodecode/templates/changeset/changeset_file_comment.mako:415
4161 #: rhodecode/templates/data_table/_dt_elements.mako:450
4163 #: rhodecode/templates/changeset/changeset_file_comment.mako:392
4164 #: rhodecode/templates/changeset/changeset_file_comment.mako:443
4165 #: rhodecode/templates/data_table/_dt_elements.mako:453
4162 4166 msgid "Write"
4163 4167 msgstr ""
4164 4168
@@ -4257,79 +4261,79 b' msgstr ""'
4257 4261 msgid "This pull request cannot be updated because the source reference is missing."
4258 4262 msgstr ""
4259 4263
4260 #: rhodecode/model/pull_request.py:1681
4264 #: rhodecode/model/pull_request.py:1674
4261 4265 msgid "Server-side pull request merging is disabled."
4262 4266 msgstr ""
4263 4267
4264 #: rhodecode/model/pull_request.py:1684
4268 #: rhodecode/model/pull_request.py:1677
4265 4269 msgid "This pull request is closed."
4266 4270 msgstr ""
4267 4271
4268 #: rhodecode/model/pull_request.py:1698
4272 #: rhodecode/model/pull_request.py:1691
4269 4273 msgid "Pull request merging is not supported."
4270 4274 msgstr ""
4271 4275
4272 #: rhodecode/model/pull_request.py:1715
4276 #: rhodecode/model/pull_request.py:1708
4273 4277 msgid "Target repository large files support is disabled."
4274 4278 msgstr ""
4275 4279
4276 #: rhodecode/model/pull_request.py:1718
4280 #: rhodecode/model/pull_request.py:1711
4277 4281 msgid "Source repository large files support is disabled."
4278 4282 msgstr ""
4279 4283
4280 #: rhodecode/model/pull_request.py:1902 rhodecode/model/scm.py:1004
4284 #: rhodecode/model/pull_request.py:1895 rhodecode/model/scm.py:1008
4281 4285 #: rhodecode/templates/admin/my_account/my_account.mako:32
4282 4286 #: rhodecode/templates/base/base.mako:638
4283 4287 #: rhodecode/templates/summary/components.mako:46
4284 4288 msgid "Bookmarks"
4285 4289 msgstr ""
4286 4290
4287 #: rhodecode/model/pull_request.py:1907
4291 #: rhodecode/model/pull_request.py:1900
4288 4292 msgid "Commit IDs"
4289 4293 msgstr ""
4290 4294
4291 #: rhodecode/model/pull_request.py:1910
4295 #: rhodecode/model/pull_request.py:1903
4292 4296 #: rhodecode/templates/summary/components.mako:22
4293 4297 msgid "Closed Branches"
4294 4298 msgstr ""
4295 4299
4296 #: rhodecode/model/pull_request.py:2094
4300 #: rhodecode/model/pull_request.py:2089
4297 4301 msgid "WIP marker in title prevents from accidental merge."
4298 4302 msgstr ""
4299 4303
4300 #: rhodecode/model/pull_request.py:2104
4304 #: rhodecode/model/pull_request.py:2099
4301 4305 msgid "User `{}` not allowed to perform merge."
4302 4306 msgstr ""
4303 4307
4304 #: rhodecode/model/pull_request.py:2122
4308 #: rhodecode/model/pull_request.py:2117
4305 4309 msgid "Target branch `{}` changes rejected by rule {}."
4306 4310 msgstr ""
4307 4311
4308 #: rhodecode/model/pull_request.py:2136
4312 #: rhodecode/model/pull_request.py:2132
4309 4313 msgid "Pull request reviewer approval is pending."
4310 4314 msgstr ""
4311 4315
4312 #: rhodecode/model/pull_request.py:2150
4316 #: rhodecode/model/pull_request.py:2146
4313 4317 msgid "Cannot merge, {} TODO still not resolved."
4314 4318 msgstr ""
4315 4319
4316 #: rhodecode/model/pull_request.py:2153
4320 #: rhodecode/model/pull_request.py:2149
4317 4321 msgid "Cannot merge, {} TODOs still not resolved."
4318 4322 msgstr ""
4319 4323
4320 #: rhodecode/model/pull_request.py:2208
4324 #: rhodecode/model/pull_request.py:2204
4321 4325 msgid "Merge strategy: rebase"
4322 4326 msgstr ""
4323 4327
4324 #: rhodecode/model/pull_request.py:2213
4328 #: rhodecode/model/pull_request.py:2209
4325 4329 msgid "Merge strategy: explicit merge commit"
4326 4330 msgstr ""
4327 4331
4328 #: rhodecode/model/pull_request.py:2221
4332 #: rhodecode/model/pull_request.py:2217
4329 4333 msgid "Source branch will be closed before the merge."
4330 4334 msgstr ""
4331 4335
4332 #: rhodecode/model/pull_request.py:2223
4336 #: rhodecode/model/pull_request.py:2219
4333 4337 msgid "Source branch will be deleted after the merge."
4334 4338 msgstr ""
4335 4339
@@ -4850,49 +4854,49 b' msgstr ""'
4850 4854
4851 4855 #: rhodecode/public/js/scripts.js:39232 rhodecode/public/js/scripts.min.js:1
4852 4856 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:85
4853 #: rhodecode/public/js/src/rhodecode/codemirror.js:363
4857 #: rhodecode/public/js/src/rhodecode/codemirror.js:368
4854 4858 msgid "Set status to Approved"
4855 4859 msgstr ""
4856 4860
4857 4861 #: rhodecode/public/js/scripts.js:39252 rhodecode/public/js/scripts.min.js:1
4858 4862 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:86
4859 #: rhodecode/public/js/src/rhodecode/codemirror.js:383
4863 #: rhodecode/public/js/src/rhodecode/codemirror.js:388
4860 4864 msgid "Set status to Rejected"
4861 4865 msgstr ""
4862 4866
4863 4867 #: rhodecode/public/js/scripts.js:39271 rhodecode/public/js/scripts.min.js:1
4864 4868 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:106
4865 #: rhodecode/public/js/src/rhodecode/codemirror.js:402
4869 #: rhodecode/public/js/src/rhodecode/codemirror.js:407
4866 4870 msgid "TODO comment"
4867 4871 msgstr ""
4868 4872
4869 4873 #: rhodecode/public/js/scripts.js:39291 rhodecode/public/js/scripts.min.js:1
4870 4874 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:71
4871 #: rhodecode/public/js/src/rhodecode/codemirror.js:422
4875 #: rhodecode/public/js/src/rhodecode/codemirror.js:427
4872 4876 msgid "Note Comment"
4873 4877 msgstr ""
4874 4878
4875 4879 #: rhodecode/public/js/scripts.js:39592 rhodecode/public/js/scripts.js:39967
4876 4880 #: rhodecode/public/js/scripts.min.js:1
4877 4881 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:99
4878 #: rhodecode/public/js/src/rhodecode/codemirror.js:723
4879 #: rhodecode/public/js/src/rhodecode/comments.js:254
4882 #: rhodecode/public/js/src/rhodecode/codemirror.js:730
4883 #: rhodecode/public/js/src/rhodecode/comments.js:267
4880 4884 msgid "Status Review"
4881 4885 msgstr ""
4882 4886
4883 4887 #: rhodecode/public/js/scripts.js:39607 rhodecode/public/js/scripts.js:39982
4884 4888 #: rhodecode/public/js/scripts.min.js:1
4885 4889 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:24
4886 #: rhodecode/public/js/src/rhodecode/codemirror.js:738
4887 #: rhodecode/public/js/src/rhodecode/comments.js:269
4890 #: rhodecode/public/js/src/rhodecode/codemirror.js:745
4891 #: rhodecode/public/js/src/rhodecode/comments.js:284
4888 4892 msgid "Comment text will be set automatically based on currently selected status ({0}) ..."
4889 4893 msgstr ""
4890 4894
4891 4895 #: rhodecode/public/js/scripts.js:39688 rhodecode/public/js/scripts.js:40177
4892 4896 #: rhodecode/public/js/scripts.js:41535 rhodecode/public/js/scripts.min.js:1
4893 4897 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:48
4894 #: rhodecode/public/js/src/rhodecode/codemirror.js:819
4895 #: rhodecode/public/js/src/rhodecode/comments.js:464
4898 #: rhodecode/public/js/src/rhodecode/codemirror.js:826
4899 #: rhodecode/public/js/src/rhodecode/comments.js:493
4896 4900 #: rhodecode/public/js/src/rhodecode/files.js:499
4897 4901 #: rhodecode/templates/files/files_browser_tree.mako:57
4898 4902 msgid "Loading ..."
@@ -4900,49 +4904,47 b' msgstr ""'
4900 4904
4901 4905 #: rhodecode/public/js/scripts.js:39849 rhodecode/public/js/scripts.min.js:1
4902 4906 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:117
4903 #: rhodecode/public/js/src/rhodecode/comments.js:136
4904 4907 msgid "Updated Comment"
4905 4908 msgstr ""
4906 4909
4907 4910 #: rhodecode/public/js/scripts.js:39873 rhodecode/public/js/scripts.min.js:1
4908 4911 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:141
4909 #: rhodecode/public/js/src/rhodecode/comments.js:160
4912 #: rhodecode/public/js/src/rhodecode/comments.js:164
4910 4913 msgid "resolve comment"
4911 4914 msgstr ""
4912 4915
4913 4916 #: rhodecode/public/js/scripts.js:40126 rhodecode/public/js/scripts.min.js:1
4914 4917 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:102
4915 #: rhodecode/public/js/src/rhodecode/comments.js:413
4918 #: rhodecode/public/js/src/rhodecode/comments.js:439
4916 4919 msgid "Submitting..."
4917 4920 msgstr ""
4918 4921
4919 4922 #: rhodecode/public/js/scripts.js:40423 rhodecode/public/js/scripts.min.js:1
4920 4923 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:122
4921 #: rhodecode/public/js/src/rhodecode/comments.js:710
4924 #: rhodecode/public/js/src/rhodecode/comments.js:761
4922 4925 msgid "Yes, delete comment #{0}!"
4923 4926 msgstr ""
4924 4927
4925 4928 #: rhodecode/public/js/scripts.js:40487 rhodecode/public/js/scripts.min.js:1
4926 4929 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:46
4927 #: rhodecode/public/js/src/rhodecode/comments.js:774
4930 #: rhodecode/public/js/src/rhodecode/comments.js:901
4928 4931 msgid "Leave a resolution comment, or click resolve button to resolve TODO comment #{0}"
4929 4932 msgstr ""
4930 4933
4931 4934 #: rhodecode/public/js/scripts.js:40696 rhodecode/public/js/scripts.min.js:1
4932 4935 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:23
4933 #: rhodecode/public/js/src/rhodecode/comments.js:983
4936 #: rhodecode/public/js/src/rhodecode/comments.js:1105
4934 4937 msgid "Comment body was not changed."
4935 4938 msgstr ""
4936 4939
4937 4940 #: rhodecode/public/js/scripts.js:40875 rhodecode/public/js/scripts.min.js:1
4938 4941 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:44
4939 #: rhodecode/public/js/src/rhodecode/comments.js:1162
4940 4942 msgid "Leave a comment on line {0}."
4941 4943 msgstr ""
4942 4944
4943 4945 #: rhodecode/public/js/scripts.js:41006 rhodecode/public/js/scripts.min.js:1
4944 4946 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:107
4945 #: rhodecode/public/js/src/rhodecode/comments.js:1293
4947 #: rhodecode/public/js/src/rhodecode/comments.js:1491
4946 4948 msgid "TODO from comment {0} was fixed."
4947 4949 msgstr ""
4948 4950
@@ -5024,102 +5026,94 b' msgstr ""'
5024 5026
5025 5027 #: rhodecode/public/js/scripts.js:42165 rhodecode/public/js/scripts.min.js:1
5026 5028 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:12
5027 #: rhodecode/public/js/src/rhodecode/pullrequests.js:186
5029 #: rhodecode/public/js/src/rhodecode/pullrequests.js:185
5028 5030 msgid "All reviewers must vote."
5029 5031 msgstr ""
5030 5032
5031 5033 #: rhodecode/public/js/scripts.js:42174 rhodecode/public/js/scripts.min.js:1
5032 5034 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:11
5033 #: rhodecode/public/js/src/rhodecode/pullrequests.js:195
5034 5035 msgid "All individual reviewers must vote."
5035 5036 msgstr ""
5036 5037
5037 5038 #: rhodecode/public/js/scripts.js:42179 rhodecode/public/js/scripts.min.js:1
5038 5039 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:14
5039 #: rhodecode/public/js/src/rhodecode/pullrequests.js:200
5040 5040 msgid "At least {0} reviewer must vote."
5041 5041 msgstr ""
5042 5042
5043 5043 #: rhodecode/public/js/scripts.js:42185 rhodecode/public/js/scripts.min.js:1
5044 5044 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:15
5045 #: rhodecode/public/js/src/rhodecode/pullrequests.js:206
5046 5045 msgid "At least {0} reviewers must vote."
5047 5046 msgstr ""
5048 5047
5049 5048 #: rhodecode/public/js/scripts.js:42201 rhodecode/public/js/scripts.min.js:1
5050 5049 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:80
5051 #: rhodecode/public/js/src/rhodecode/pullrequests.js:222
5052 5050 msgid "Reviewers picked from source code changes."
5053 5051 msgstr ""
5054 5052
5055 5053 #: rhodecode/public/js/scripts.js:42209 rhodecode/public/js/scripts.min.js:1
5056 5054 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:8
5057 #: rhodecode/public/js/src/rhodecode/pullrequests.js:230
5058 5055 msgid "Adding new reviewers is forbidden."
5059 5056 msgstr ""
5060 5057
5061 5058 #: rhodecode/public/js/scripts.js:42217 rhodecode/public/js/scripts.min.js:1
5062 5059 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:17
5063 #: rhodecode/public/js/src/rhodecode/pullrequests.js:238
5064 5060 msgid "Author is not allowed to be a reviewer."
5065 5061 msgstr ""
5066 5062
5067 5063 #: rhodecode/public/js/scripts.js:42231 rhodecode/public/js/scripts.min.js:1
5068 5064 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:25
5069 #: rhodecode/public/js/src/rhodecode/pullrequests.js:252
5070 5065 msgid "Commit Authors are not allowed to be a reviewer."
5071 5066 msgstr ""
5072 5067
5073 5068 #: rhodecode/public/js/scripts.js:42238 rhodecode/public/js/scripts.min.js:1
5074 5069 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:65
5075 #: rhodecode/public/js/src/rhodecode/pullrequests.js:259
5076 5070 msgid "No review rules set."
5077 5071 msgstr ""
5078 5072
5079 5073 #: rhodecode/public/js/scripts.js:42283 rhodecode/public/js/scripts.min.js:1
5080 5074 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:49
5081 #: rhodecode/public/js/src/rhodecode/pullrequests.js:304
5075 #: rhodecode/public/js/src/rhodecode/pullrequests.js:255
5082 5076 msgid "Loading diff ..."
5083 5077 msgstr ""
5084 5078
5085 5079 #: rhodecode/public/js/scripts.js:42336 rhodecode/public/js/scripts.min.js:1
5086 5080 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:109
5087 #: rhodecode/public/js/src/rhodecode/pullrequests.js:357
5081 #: rhodecode/public/js/src/rhodecode/pullrequests.js:308
5088 5082 msgid "There are no commits to merge."
5089 5083 msgstr ""
5090 5084
5091 5085 #: rhodecode/public/js/scripts.js:42408 rhodecode/public/js/scripts.min.js:1
5092 5086 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:120
5093 #: rhodecode/public/js/src/rhodecode/pullrequests.js:429
5087 #: rhodecode/public/js/src/rhodecode/pullrequests.js:380
5094 5088 msgid "User `{0}` not allowed to be a reviewer"
5095 5089 msgstr ""
5096 5090
5097 5091 #: rhodecode/public/js/scripts.js:42414 rhodecode/public/js/scripts.min.js:1
5098 #: rhodecode/public/js/src/rhodecode/pullrequests.js:435
5092 #: rhodecode/public/js/src/rhodecode/pullrequests.js:386
5099 5093 msgid "User `{0}` already in reviewers/observers"
5100 5094 msgstr ""
5101 5095
5102 5096 #: rhodecode/public/js/scripts.js:42528 rhodecode/public/js/scripts.min.js:1
5103 5097 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:126
5104 #: rhodecode/public/js/src/rhodecode/pullrequests.js:549
5098 #: rhodecode/public/js/src/rhodecode/pullrequests.js:500
5105 5099 msgid "added manually by \"{0}\""
5106 5100 msgstr ""
5107 5101
5108 5102 #: rhodecode/public/js/scripts.js:42533 rhodecode/public/js/scripts.min.js:1
5109 5103 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:138
5110 #: rhodecode/public/js/src/rhodecode/pullrequests.js:554
5104 #: rhodecode/public/js/src/rhodecode/pullrequests.js:505
5111 5105 msgid "member of \"{0}\""
5112 5106 msgstr ""
5113 5107
5114 5108 #: rhodecode/public/js/scripts.js:42766 rhodecode/public/js/scripts.min.js:1
5115 5109 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:118
5116 #: rhodecode/public/js/src/rhodecode/pullrequests.js:787
5110 #: rhodecode/public/js/src/rhodecode/pullrequests.js:738
5117 5111 msgid "Updating..."
5118 5112 msgstr ""
5119 5113
5120 5114 #: rhodecode/public/js/scripts.js:42776 rhodecode/public/js/scripts.min.js:1
5121 5115 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:40
5122 #: rhodecode/public/js/src/rhodecode/pullrequests.js:797
5116 #: rhodecode/public/js/src/rhodecode/pullrequests.js:748
5123 5117 msgid "Force updating..."
5124 5118 msgstr ""
5125 5119
@@ -5198,8 +5192,6 b' msgid "<strong>{0} files</strong> change'
5198 5192 msgstr ""
5199 5193
5200 5194 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:7
5201 #: rhodecode/templates/codeblocks/diffs.mako:648
5202 #: rhodecode/templates/codeblocks/diffs.mako:652
5203 5195 msgid "Add another comment"
5204 5196 msgstr ""
5205 5197
@@ -5213,14 +5205,14 b' msgstr ""'
5213 5205
5214 5206 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:19
5215 5207 #: rhodecode/public/js/src/i18n_messages.js:5
5216 #: rhodecode/templates/pullrequests/pullrequest_show.mako:589
5217 #: rhodecode/templates/pullrequests/pullrequest_show.mako:592
5218 #: rhodecode/templates/pullrequests/pullrequest_show.mako:646
5208 #: rhodecode/templates/pullrequests/pullrequest_show.mako:623
5209 #: rhodecode/templates/pullrequests/pullrequest_show.mako:626
5210 #: rhodecode/templates/pullrequests/pullrequest_show.mako:680
5219 5211 msgid "Close"
5220 5212 msgstr ""
5221 5213
5222 5214 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:20
5223 #: rhodecode/templates/codeblocks/diffs.mako:133
5215 #: rhodecode/templates/codeblocks/diffs.mako:119
5224 5216 msgid "Collapse all files"
5225 5217 msgstr ""
5226 5218
@@ -5257,7 +5249,7 b' msgid "Error during search operation"'
5257 5249 msgstr ""
5258 5250
5259 5251 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:33
5260 #: rhodecode/templates/codeblocks/diffs.mako:131
5252 #: rhodecode/templates/codeblocks/diffs.mako:117
5261 5253 msgid "Expand all files"
5262 5254 msgstr ""
5263 5255
@@ -5557,6 +5549,30 b' msgstr ""'
5557 5549 msgid "MathML"
5558 5550 msgstr ""
5559 5551
5552 #: rhodecode/public/js/src/rhodecode/comments.js:140
5553 msgid "Update Comment"
5554 msgstr ""
5555
5556 #: rhodecode/public/js/src/rhodecode/comments.js:437
5557 msgid "Saving Draft..."
5558 msgstr ""
5559
5560 #: rhodecode/public/js/src/rhodecode/comments.js:806
5561 msgid "Submit {0} draft comment."
5562 msgstr ""
5563
5564 #: rhodecode/public/js/src/rhodecode/comments.js:809
5565 msgid "Yes"
5566 msgstr ""
5567
5568 #: rhodecode/public/js/src/rhodecode/comments.js:1351
5569 msgid "Leave a comment on file {0} line {1}."
5570 msgstr ""
5571
5572 #: rhodecode/public/js/src/rhodecode/pullrequests.js:209
5573 msgid "No additional review rules set."
5574 msgstr ""
5575
5560 5576 #: rhodecode/templates/index.mako:5
5561 5577 msgid "Dashboard"
5562 5578 msgstr ""
@@ -5622,7 +5638,7 b' msgstr ""'
5622 5638 #: rhodecode/templates/forks/fork.mako:56
5623 5639 #: rhodecode/templates/forks/forks.mako:62
5624 5640 #: rhodecode/templates/pullrequests/pullrequest.mako:104
5625 #: rhodecode/templates/pullrequests/pullrequest_show.mako:400
5641 #: rhodecode/templates/pullrequests/pullrequest_show.mako:398
5626 5642 #: rhodecode/templates/summary/components.mako:159
5627 5643 #: rhodecode/templates/user_group/profile.mako:25
5628 5644 #: rhodecode/templates/users/user_profile.mako:59
@@ -5664,7 +5680,7 b' msgstr ""'
5664 5680 #: rhodecode/templates/email_templates/commit_comment.mako:114
5665 5681 #: rhodecode/templates/email_templates/commit_comment.mako:141
5666 5682 #: rhodecode/templates/files/file_authors_box.mako:28
5667 #: rhodecode/templates/pullrequests/pullrequest_show.mako:398
5683 #: rhodecode/templates/pullrequests/pullrequest_show.mako:396
5668 5684 #: rhodecode/templates/search/search_commit.mako:9
5669 5685 #: rhodecode/templates/summary/components.mako:117
5670 5686 #: rhodecode/templates/summary/components.mako:125
@@ -5716,16 +5732,16 b' msgstr ""'
5716 5732 msgid "Please contact "
5717 5733 msgstr ""
5718 5734
5719 #: rhodecode/templates/login.mako:84 rhodecode/templates/password_reset.mako:39
5735 #: rhodecode/templates/login.mako:84 rhodecode/templates/password_reset.mako:40
5720 5736 #: rhodecode/templates/base/base.mako:63
5721 5737 msgid "Support"
5722 5738 msgstr ""
5723 5739
5724 #: rhodecode/templates/login.mako:85 rhodecode/templates/password_reset.mako:40
5740 #: rhodecode/templates/login.mako:85 rhodecode/templates/password_reset.mako:41
5725 5741 msgid "or"
5726 5742 msgstr ""
5727 5743
5728 #: rhodecode/templates/login.mako:87 rhodecode/templates/password_reset.mako:42
5744 #: rhodecode/templates/login.mako:87 rhodecode/templates/password_reset.mako:43
5729 5745 msgid "an administrator if you need help."
5730 5746 msgstr ""
5731 5747
@@ -5737,32 +5753,32 b' msgstr ""'
5737 5753 msgid "Reset Password"
5738 5754 msgstr ""
5739 5755
5740 #: rhodecode/templates/password_reset.mako:37
5756 #: rhodecode/templates/password_reset.mako:38
5741 5757 msgid "Password reset is disabled. Please contact "
5742 5758 msgstr ""
5743 5759
5744 #: rhodecode/templates/password_reset.mako:49
5745 msgid "Reset your Password"
5746 msgstr ""
5747
5748 5760 #: rhodecode/templates/password_reset.mako:50
5761 msgid "Reset your Password"
5762 msgstr ""
5763
5764 #: rhodecode/templates/password_reset.mako:51
5749 5765 msgid "Go to the login page to sign in."
5750 5766 msgstr ""
5751 5767
5752 #: rhodecode/templates/password_reset.mako:54
5768 #: rhodecode/templates/password_reset.mako:55
5753 5769 msgid "Email Address"
5754 5770 msgstr ""
5755 5771
5756 #: rhodecode/templates/password_reset.mako:60
5772 #: rhodecode/templates/password_reset.mako:61
5757 5773 msgid "Password reset link will be sent to matching email address"
5758 5774 msgstr ""
5759 5775
5760 #: rhodecode/templates/password_reset.mako:64
5761 #: rhodecode/templates/register.mako:104
5776 #: rhodecode/templates/password_reset.mako:65
5777 #: rhodecode/templates/register.mako:106
5762 5778 msgid "Captcha"
5763 5779 msgstr ""
5764 5780
5765 #: rhodecode/templates/password_reset.mako:75
5781 #: rhodecode/templates/password_reset.mako:76
5766 5782 msgid "Send password reset email"
5767 5783 msgstr ""
5768 5784
@@ -5770,23 +5786,23 b' msgstr ""'
5770 5786 msgid "Create an Account"
5771 5787 msgstr ""
5772 5788
5773 #: rhodecode/templates/register.mako:38
5789 #: rhodecode/templates/register.mako:40
5774 5790 msgid "Create an account linked with {}"
5775 5791 msgstr ""
5776 5792
5777 #: rhodecode/templates/register.mako:40
5793 #: rhodecode/templates/register.mako:42
5778 5794 msgid "Create an account"
5779 5795 msgstr ""
5780 5796
5781 #: rhodecode/templates/register.mako:43
5797 #: rhodecode/templates/register.mako:45
5782 5798 msgid "Go to the login page to sign in with an existing account."
5783 5799 msgstr ""
5784 5800
5785 #: rhodecode/templates/register.mako:69
5801 #: rhodecode/templates/register.mako:71
5786 5802 msgid "Re-enter password"
5787 5803 msgstr ""
5788 5804
5789 #: rhodecode/templates/register.mako:81
5805 #: rhodecode/templates/register.mako:83
5790 5806 #: rhodecode/templates/admin/my_account/my_account_profile.mako:48
5791 5807 #: rhodecode/templates/admin/my_account/my_account_profile_edit.mako:38
5792 5808 #: rhodecode/templates/admin/users/user_add.mako:68
@@ -5795,7 +5811,7 b' msgstr ""'
5795 5811 msgid "First Name"
5796 5812 msgstr ""
5797 5813
5798 #: rhodecode/templates/register.mako:88
5814 #: rhodecode/templates/register.mako:90
5799 5815 #: rhodecode/templates/admin/my_account/my_account_profile.mako:58
5800 5816 #: rhodecode/templates/admin/my_account/my_account_profile_edit.mako:47
5801 5817 #: rhodecode/templates/admin/users/user_add.mako:77
@@ -5804,15 +5820,15 b' msgstr ""'
5804 5820 msgid "Last Name"
5805 5821 msgstr ""
5806 5822
5807 #: rhodecode/templates/register.mako:116
5823 #: rhodecode/templates/register.mako:118
5808 5824 msgid "Account activation requires admin approval."
5809 5825 msgstr ""
5810 5826
5811 #: rhodecode/templates/register.mako:123
5827 #: rhodecode/templates/register.mako:125
5812 5828 msgid "Create Account"
5813 5829 msgstr ""
5814 5830
5815 #: rhodecode/templates/register.mako:123
5831 #: rhodecode/templates/register.mako:125
5816 5832 msgid "Create Account in {}"
5817 5833 msgstr ""
5818 5834
@@ -6108,9 +6124,7 b' msgstr ""'
6108 6124
6109 6125 #: rhodecode/templates/admin/gists/gist_edit.mako:100
6110 6126 #: rhodecode/templates/base/issue_tracker_settings.mako:151
6111 #: rhodecode/templates/changeset/changeset_file_comment.mako:487
6112 #: rhodecode/templates/codeblocks/diffs.mako:90
6113 #: rhodecode/templates/pullrequests/pullrequest_show.mako:84
6127 #: rhodecode/templates/pullrequests/pullrequest_show.mako:82
6114 6128 msgid "Cancel"
6115 6129 msgstr ""
6116 6130
@@ -6173,14 +6187,14 b' msgid "quick filter..."'
6173 6187 msgstr ""
6174 6188
6175 6189 #: rhodecode/templates/admin/gists/gist_index.mako:103
6176 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:85
6190 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:87
6177 6191 #: rhodecode/templates/bookmarks/bookmarks.mako:73
6178 6192 #: rhodecode/templates/branches/branches.mako:72
6179 #: rhodecode/templates/commits/changelog.mako:119
6193 #: rhodecode/templates/commits/changelog.mako:138
6180 6194 #: rhodecode/templates/compare/compare_commits.mako:16
6181 6195 #: rhodecode/templates/files/files_browser_tree.mako:20
6182 #: rhodecode/templates/pullrequests/pullrequest_show.mako:397
6183 #: rhodecode/templates/pullrequests/pullrequests.mako:98
6196 #: rhodecode/templates/pullrequests/pullrequest_show.mako:395
6197 #: rhodecode/templates/pullrequests/pullrequests.mako:100
6184 6198 #: rhodecode/templates/search/search_commit.mako:18
6185 6199 #: rhodecode/templates/summary/summary_commits.mako:11
6186 6200 #: rhodecode/templates/tags/tags.mako:73
@@ -6195,7 +6209,7 b' msgstr ""'
6195 6209 #: rhodecode/templates/admin/user_groups/user_group_edit_advanced.mako:7
6196 6210 #: rhodecode/templates/admin/users/user_edit_advanced.mako:6
6197 6211 #: rhodecode/templates/admin/users/user_edit_ssh_keys.mako:16
6198 #: rhodecode/templates/pullrequests/pullrequest_show.mako:60
6212 #: rhodecode/templates/pullrequests/pullrequest_show.mako:58
6199 6213 msgid "Created on"
6200 6214 msgstr ""
6201 6215
@@ -6691,26 +6705,26 b' msgstr ""'
6691 6705 msgid "Pull Requests You Participate In"
6692 6706 msgstr ""
6693 6707
6694 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:73
6695 #: rhodecode/templates/pullrequests/pullrequests.mako:94
6708 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:75
6709 #: rhodecode/templates/pullrequests/pullrequests.mako:96
6696 6710 msgid "Id"
6697 6711 msgstr ""
6698 6712
6699 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:79
6713 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:81
6700 6714 #: rhodecode/templates/admin/settings/settings_global.mako:9
6701 6715 #: rhodecode/templates/email_templates/pull_request_review.mako:47
6702 6716 #: rhodecode/templates/email_templates/pull_request_update.mako:43
6703 6717 #: rhodecode/templates/pullrequests/pullrequest.mako:91
6704 #: rhodecode/templates/pullrequests/pullrequests.mako:96
6718 #: rhodecode/templates/pullrequests/pullrequests.mako:98
6705 6719 msgid "Title"
6706 6720 msgstr ""
6707 6721
6708 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:97
6709 #: rhodecode/templates/pullrequests/pullrequests.mako:102
6722 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:99
6723 #: rhodecode/templates/pullrequests/pullrequests.mako:104
6710 6724 msgid "Last Update"
6711 6725 msgstr ""
6712 6726
6713 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:103
6727 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:105
6714 6728 msgid "Target Repo"
6715 6729 msgstr ""
6716 6730
@@ -6816,10 +6830,10 b' msgid "Unread"'
6816 6830 msgstr ""
6817 6831
6818 6832 #: rhodecode/templates/admin/notifications/notifications_show_all.mako:41
6819 #: rhodecode/templates/changeset/changeset.mako:254
6820 #: rhodecode/templates/changeset/changeset.mako:264
6821 #: rhodecode/templates/pullrequests/pullrequest_show.mako:729
6822 #: rhodecode/templates/pullrequests/pullrequest_show.mako:739
6833 #: rhodecode/templates/changeset/changeset.mako:252
6834 #: rhodecode/templates/changeset/changeset.mako:262
6835 #: rhodecode/templates/pullrequests/pullrequest_show.mako:763
6836 #: rhodecode/templates/pullrequests/pullrequest_show.mako:773
6823 6837 msgid "Comments"
6824 6838 msgstr ""
6825 6839
@@ -7858,7 +7872,7 b' msgid "Private repository"'
7858 7872 msgstr ""
7859 7873
7860 7874 #: rhodecode/templates/admin/repos/repo_edit_settings.mako:204
7861 #: rhodecode/templates/summary/components.mako:263
7875 #: rhodecode/templates/summary/components.mako:262
7862 7876 msgid "Enable statistics"
7863 7877 msgstr ""
7864 7878
@@ -9043,10 +9057,10 b' msgstr ""'
9043 9057
9044 9058 #: rhodecode/templates/base/base.mako:161
9045 9059 #: rhodecode/templates/base/base.mako:201
9046 #: rhodecode/templates/changeset/changeset.mako:142
9060 #: rhodecode/templates/changeset/changeset.mako:140
9047 9061 #: rhodecode/templates/files/files_source_header.mako:57
9048 9062 #: rhodecode/templates/files/files_tree_header.mako:44
9049 #: rhodecode/templates/summary/components.mako:275
9063 #: rhodecode/templates/summary/components.mako:274
9050 9064 msgid "Show More"
9051 9065 msgstr ""
9052 9066
@@ -9358,9 +9372,9 b' msgid "Confirm to remove this pattern:"'
9358 9372 msgstr ""
9359 9373
9360 9374 #: rhodecode/templates/base/issue_tracker_settings.mako:300
9361 #: rhodecode/templates/changeset/changeset_file_comment.mako:367
9362 #: rhodecode/templates/changeset/changeset_file_comment.mako:418
9363 #: rhodecode/templates/data_table/_dt_elements.mako:453
9375 #: rhodecode/templates/changeset/changeset_file_comment.mako:395
9376 #: rhodecode/templates/changeset/changeset_file_comment.mako:446
9377 #: rhodecode/templates/data_table/_dt_elements.mako:456
9364 9378 #: rhodecode/templates/files/files_add.mako:59
9365 9379 #: rhodecode/templates/files/files_edit.mako:61
9366 9380 msgid "Preview"
@@ -9708,7 +9722,7 b' msgstr ""'
9708 9722 msgid "{} Commit"
9709 9723 msgstr ""
9710 9724
9711 #: rhodecode/templates/changeset/changeset.mako:80
9725 #: rhodecode/templates/changeset/changeset.mako:78
9712 9726 #: rhodecode/templates/commits/changelog_elements.mako:56
9713 9727 #: rhodecode/templates/files/files_source_header.mako:48
9714 9728 #: rhodecode/templates/files/files_tree_header.mako:35
@@ -9716,119 +9730,127 b' msgstr ""'
9716 9730 msgid "Copy the full commit id"
9717 9731 msgstr ""
9718 9732
9719 #: rhodecode/templates/changeset/changeset.mako:85
9733 #: rhodecode/templates/changeset/changeset.mako:83
9720 9734 msgid "Commit phase"
9721 9735 msgstr ""
9722 9736
9723 #: rhodecode/templates/changeset/changeset.mako:92
9724 #: rhodecode/templates/changeset/changeset.mako:99
9737 #: rhodecode/templates/changeset/changeset.mako:90
9738 #: rhodecode/templates/changeset/changeset.mako:97
9725 9739 msgid "Evolve State"
9726 9740 msgstr ""
9727 9741
9728 #: rhodecode/templates/changeset/changeset.mako:93
9742 #: rhodecode/templates/changeset/changeset.mako:91
9729 9743 msgid "obsolete"
9730 9744 msgstr ""
9731 9745
9732 #: rhodecode/templates/changeset/changeset.mako:100
9746 #: rhodecode/templates/changeset/changeset.mako:98
9733 9747 msgid "hidden"
9734 9748 msgstr ""
9735 9749
9736 #: rhodecode/templates/changeset/changeset.mako:106
9750 #: rhodecode/templates/changeset/changeset.mako:104
9737 9751 msgid "Parent Commit"
9738 9752 msgstr ""
9739 9753
9740 #: rhodecode/templates/changeset/changeset.mako:106
9754 #: rhodecode/templates/changeset/changeset.mako:104
9741 9755 msgid "parent"
9742 9756 msgstr ""
9743 9757
9744 #: rhodecode/templates/changeset/changeset.mako:110
9758 #: rhodecode/templates/changeset/changeset.mako:108
9745 9759 msgid "Child Commit"
9746 9760 msgstr ""
9747 9761
9748 #: rhodecode/templates/changeset/changeset.mako:110
9762 #: rhodecode/templates/changeset/changeset.mako:108
9749 9763 msgid "child"
9750 9764 msgstr ""
9751 9765
9752 #: rhodecode/templates/changeset/changeset.mako:120
9766 #: rhodecode/templates/changeset/changeset.mako:118
9753 9767 msgid "Diff options"
9754 9768 msgstr ""
9755 9769
9756 #: rhodecode/templates/changeset/changeset.mako:124
9770 #: rhodecode/templates/changeset/changeset.mako:122
9757 9771 msgid "Raw Diff"
9758 9772 msgstr ""
9759 9773
9760 #: rhodecode/templates/changeset/changeset.mako:128
9774 #: rhodecode/templates/changeset/changeset.mako:126
9761 9775 msgid "Patch Diff"
9762 9776 msgstr ""
9763 9777
9764 #: rhodecode/templates/changeset/changeset.mako:132
9778 #: rhodecode/templates/changeset/changeset.mako:130
9765 9779 msgid "Download Diff"
9766 9780 msgstr ""
9767 9781
9768 #: rhodecode/templates/changeset/changeset.mako:162
9769 #: rhodecode/templates/pullrequests/pullrequest_show.mako:504
9782 #: rhodecode/templates/changeset/changeset.mako:160
9783 #: rhodecode/templates/pullrequests/pullrequest_show.mako:502
9770 9784 msgid "General Comments"
9771 9785 msgstr ""
9772 9786
9773 #: rhodecode/templates/changeset/changeset.mako:203
9774 #: rhodecode/templates/pullrequests/pullrequest_show.mako:585
9787 #: rhodecode/templates/changeset/changeset.mako:201
9788 #: rhodecode/templates/pullrequests/pullrequest_show.mako:619
9775 9789 msgid "Reviewers"
9776 9790 msgstr ""
9777 9791
9778 #: rhodecode/templates/changeset/changeset.mako:244
9779 #: rhodecode/templates/pullrequests/pullrequest_show.mako:718
9792 #: rhodecode/templates/changeset/changeset.mako:242
9793 #: rhodecode/templates/pullrequests/pullrequest_show.mako:579
9794 #: rhodecode/templates/pullrequests/pullrequest_show.mako:752
9780 9795 msgid "No TODOs yet"
9781 9796 msgstr ""
9782 9797
9783 #: rhodecode/templates/changeset/changeset.mako:276
9784 #: rhodecode/templates/pullrequests/pullrequest_show.mako:769
9798 #: rhodecode/templates/changeset/changeset.mako:274
9799 #: rhodecode/templates/pullrequests/pullrequest_show.mako:803
9785 9800 msgid "No Comments yet"
9786 9801 msgstr ""
9787 9802
9788 #: rhodecode/templates/changeset/changeset.mako:332
9803 #: rhodecode/templates/changeset/changeset.mako:330
9789 9804 msgid "No Child Commits"
9790 9805 msgstr ""
9791 9806
9792 #: rhodecode/templates/changeset/changeset.mako:379
9807 #: rhodecode/templates/changeset/changeset.mako:377
9793 9808 msgid "No Parent Commits"
9794 9809 msgstr ""
9795 9810
9796 #: rhodecode/templates/changeset/changeset_file_comment.mako:47
9797 msgid "Resolved by comment #{}"
9811 #: rhodecode/templates/changeset/changeset_file_comment.mako:51
9812 msgid "Draft comments are only visible to the author until submitted"
9798 9813 msgstr ""
9799 9814
9800 9815 #: rhodecode/templates/changeset/changeset_file_comment.mako:55
9816 msgid "This comment was added while you browsed this page"
9817 msgstr ""
9818
9819 #: rhodecode/templates/changeset/changeset_file_comment.mako:65
9820 msgid "Resolved by comment #{}"
9821 msgstr ""
9822
9823 #: rhodecode/templates/changeset/changeset_file_comment.mako:73
9801 9824 msgid "Click to create resolution comment."
9802 9825 msgstr ""
9803 9826
9804 #: rhodecode/templates/changeset/changeset_file_comment.mako:64
9827 #: rhodecode/templates/changeset/changeset_file_comment.mako:82
9805 9828 msgid "This comment resolves TODO #{}"
9806 9829 msgstr ""
9807 9830
9808 #: rhodecode/templates/changeset/changeset_file_comment.mako:96
9809 msgid "Status from pull request."
9810 msgstr ""
9811
9812 #: rhodecode/templates/changeset/changeset_file_comment.mako:113
9813 msgid "Pull request author"
9814 msgstr ""
9815
9816 9831 #: rhodecode/templates/changeset/changeset_file_comment.mako:114
9832 msgid "Status from pull request."
9833 msgstr ""
9834
9835 #: rhodecode/templates/changeset/changeset_file_comment.mako:133
9836 msgid "Pull request author"
9837 msgstr ""
9838
9839 #: rhodecode/templates/changeset/changeset_file_comment.mako:134
9817 9840 msgid "author"
9818 9841 msgstr ""
9819 9842
9820 #: rhodecode/templates/changeset/changeset_file_comment.mako:167
9821 #: rhodecode/templates/changeset/changeset_file_comment.mako:181
9843 #: rhodecode/templates/changeset/changeset_file_comment.mako:187
9844 #: rhodecode/templates/changeset/changeset_file_comment.mako:201
9822 9845 msgid "Outdated comment from pull request version v{0}, latest v{1}"
9823 9846 msgstr ""
9824 9847
9825 #: rhodecode/templates/changeset/changeset_file_comment.mako:170
9826 #: rhodecode/templates/changeset/changeset_file_comment.mako:186
9848 #: rhodecode/templates/changeset/changeset_file_comment.mako:190
9849 #: rhodecode/templates/changeset/changeset_file_comment.mako:206
9827 9850 msgid "Comment from pull request version v{0}, latest v{1}"
9828 9851 msgstr ""
9829 9852
9830 #: rhodecode/templates/changeset/changeset_file_comment.mako:202
9831 #: rhodecode/templates/changeset/changeset_file_comment.mako:480
9853 #: rhodecode/templates/changeset/changeset_file_comment.mako:222
9832 9854 #: rhodecode/templates/compare/compare_diff.mako:108
9833 9855 #: rhodecode/templates/compare/compare_diff.mako:116
9834 9856 #: rhodecode/templates/compare/compare_diff.mako:124
@@ -9836,98 +9858,93 b' msgstr ""'
9836 9858 msgid "Comment"
9837 9859 msgstr ""
9838 9860
9839 #: rhodecode/templates/changeset/changeset_file_comment.mako:203
9861 #: rhodecode/templates/changeset/changeset_file_comment.mako:223
9840 9862 #: rhodecode/templates/files/files_source.mako:117
9841 9863 msgid "Copy permalink"
9842 9864 msgstr ""
9843 9865
9844 #: rhodecode/templates/changeset/changeset_file_comment.mako:221
9845 #: rhodecode/templates/changeset/changeset_file_comment.mako:224
9846 #: rhodecode/templates/changeset/changeset_file_comment.mako:230
9847 #: rhodecode/templates/changeset/changeset_file_comment.mako:233
9848 msgid "Action unavailable"
9849 msgstr ""
9850
9851 9866 #: rhodecode/templates/changeset/changeset_file_comment.mako:241
9867 msgid "Submit draft"
9868 msgstr ""
9869
9870 #: rhodecode/templates/changeset/changeset_file_comment.mako:247
9871 #: rhodecode/templates/changeset/changeset_file_comment.mako:250
9872 #: rhodecode/templates/changeset/changeset_file_comment.mako:256
9873 #: rhodecode/templates/changeset/changeset_file_comment.mako:259
9874 msgid "Action unavailable"
9875 msgstr ""
9876
9877 #: rhodecode/templates/changeset/changeset_file_comment.mako:267
9852 9878 msgid "Jump to the previous outdated comment"
9853 9879 msgstr ""
9854 9880
9855 #: rhodecode/templates/changeset/changeset_file_comment.mako:242
9881 #: rhodecode/templates/changeset/changeset_file_comment.mako:268
9856 9882 msgid "Jump to the next outdated comment"
9857 9883 msgstr ""
9858 9884
9859 #: rhodecode/templates/changeset/changeset_file_comment.mako:244
9885 #: rhodecode/templates/changeset/changeset_file_comment.mako:270
9860 9886 msgid "Jump to the previous comment"
9861 9887 msgstr ""
9862 9888
9863 #: rhodecode/templates/changeset/changeset_file_comment.mako:245
9889 #: rhodecode/templates/changeset/changeset_file_comment.mako:271
9864 9890 msgid "Jump to the next comment"
9865 9891 msgstr ""
9866 9892
9867 #: rhodecode/templates/changeset/changeset_file_comment.mako:284
9893 #: rhodecode/templates/changeset/changeset_file_comment.mako:311
9868 9894 msgid "Leave a comment on this Pull Request."
9869 9895 msgstr ""
9870 9896
9871 #: rhodecode/templates/changeset/changeset_file_comment.mako:286
9897 #: rhodecode/templates/changeset/changeset_file_comment.mako:313
9872 9898 msgid "Leave a comment on {} commits in this range."
9873 9899 msgstr ""
9874 9900
9875 #: rhodecode/templates/changeset/changeset_file_comment.mako:288
9901 #: rhodecode/templates/changeset/changeset_file_comment.mako:315
9876 9902 msgid "Leave a comment on this Commit."
9877 9903 msgstr ""
9878 9904
9879 #: rhodecode/templates/changeset/changeset_file_comment.mako:375
9880 #: rhodecode/templates/codeblocks/diffs.mako:85
9905 #: rhodecode/templates/changeset/changeset_file_comment.mako:403
9881 9906 msgid "You need to be logged in to leave comments."
9882 9907 msgstr ""
9883 9908
9884 #: rhodecode/templates/changeset/changeset_file_comment.mako:376
9885 #: rhodecode/templates/codeblocks/diffs.mako:85
9909 #: rhodecode/templates/changeset/changeset_file_comment.mako:404
9886 9910 msgid "Login now"
9887 9911 msgstr ""
9888 9912
9889 #: rhodecode/templates/changeset/changeset_file_comment.mako:423
9913 #: rhodecode/templates/changeset/changeset_file_comment.mako:451
9890 9914 msgid "Mark as"
9891 9915 msgstr ""
9892 9916
9893 #: rhodecode/templates/changeset/changeset_file_comment.mako:446
9917 #: rhodecode/templates/changeset/changeset_file_comment.mako:474
9894 9918 #: rhodecode/templates/files/files_upload.mako:86
9895 9919 msgid "Drag'n Drop files here or"
9896 9920 msgstr ""
9897 9921
9898 #: rhodecode/templates/changeset/changeset_file_comment.mako:446
9922 #: rhodecode/templates/changeset/changeset_file_comment.mako:474
9899 9923 #: rhodecode/templates/files/files_upload.mako:86
9900 9924 msgid "Choose your files"
9901 9925 msgstr ""
9902 9926
9903 #: rhodecode/templates/changeset/changeset_file_comment.mako:449
9927 #: rhodecode/templates/changeset/changeset_file_comment.mako:477
9904 9928 msgid "uploading..."
9905 9929 msgstr ""
9906 9930
9907 #: rhodecode/templates/changeset/changeset_file_comment.mako:499
9908 #: rhodecode/templates/pullrequests/pullrequest_show.mako:48
9909 #: rhodecode/templates/pullrequests/pullrequests.mako:31
9910 msgid "Closed"
9911 msgstr ""
9912
9913 9931 #: rhodecode/templates/changeset/changeset_file_comment.mako:508
9914 msgid "Comments parsed using {} syntax."
9915 msgstr ""
9916
9917 #: rhodecode/templates/changeset/changeset_file_comment.mako:509
9918 msgid "Use @username inside this text to send notification to this RhodeCode user"
9919 msgstr ""
9920
9921 #: rhodecode/templates/changeset/changeset_file_comment.mako:510
9922 msgid "and"
9923 msgstr ""
9924
9925 #: rhodecode/templates/changeset/changeset_file_comment.mako:511
9926 msgid "Start typing with / for certain actions to be triggered via text box."
9927 msgstr ""
9928
9929 #: rhodecode/templates/changeset/changeset_file_comment.mako:512
9930 msgid "actions supported."
9932 msgid "Add comment"
9933 msgstr ""
9934
9935 #: rhodecode/templates/changeset/changeset_file_comment.mako:513
9936 #: rhodecode/templates/changeset/changeset_file_comment.mako:515
9937 msgid "Add draft"
9938 msgstr ""
9939
9940 #: rhodecode/templates/changeset/changeset_file_comment.mako:526
9941 #: rhodecode/templates/pullrequests/pullrequest_show.mako:46
9942 #: rhodecode/templates/pullrequests/pullrequests.mako:31
9943 msgid "Closed"
9944 msgstr ""
9945
9946 #: rhodecode/templates/changeset/changeset_file_comment.mako:545
9947 msgid "{} is supported."
9931 9948 msgstr ""
9932 9949
9933 9950 #: rhodecode/templates/changeset/changeset_range.mako:5
@@ -9948,6 +9965,7 b' msgid "Diff Option"'
9948 9965 msgstr ""
9949 9966
9950 9967 #: rhodecode/templates/changeset/changeset_range.mako:71
9968 #: rhodecode/templates/commits/changelog.mako:124
9951 9969 msgid "Show combined diff"
9952 9970 msgstr ""
9953 9971
@@ -9959,8 +9977,8 b' msgstr ""'
9959 9977 #: rhodecode/templates/changeset/diff_block.mako:10
9960 9978 #: rhodecode/templates/changeset/diff_block.mako:25
9961 9979 #: rhodecode/templates/changeset/diff_block.mako:46
9962 #: rhodecode/templates/codeblocks/diffs.mako:210
9963 #: rhodecode/templates/codeblocks/diffs.mako:341
9980 #: rhodecode/templates/codeblocks/diffs.mako:196
9981 #: rhodecode/templates/codeblocks/diffs.mako:327
9964 9982 msgid "Showing a big diff might take some time and resources, continue?"
9965 9983 msgstr ""
9966 9984
@@ -9968,8 +9986,8 b' msgstr ""'
9968 9986 #: rhodecode/templates/changeset/diff_block.mako:10
9969 9987 #: rhodecode/templates/changeset/diff_block.mako:25
9970 9988 #: rhodecode/templates/changeset/diff_block.mako:46
9971 #: rhodecode/templates/codeblocks/diffs.mako:210
9972 #: rhodecode/templates/codeblocks/diffs.mako:341
9989 #: rhodecode/templates/codeblocks/diffs.mako:196
9990 #: rhodecode/templates/codeblocks/diffs.mako:327
9973 9991 msgid "Show full diff"
9974 9992 msgstr ""
9975 9993
@@ -9982,148 +10000,149 b' msgstr ""'
9982 10000 msgid "Diff was truncated. File content available only in full diff."
9983 10001 msgstr ""
9984 10002
9985 #: rhodecode/templates/codeblocks/diffs.mako:143
10003 #: rhodecode/templates/codeblocks/diffs.mako:129
9986 10004 msgid "not available in this view"
9987 10005 msgstr ""
9988 10006
9989 #: rhodecode/templates/codeblocks/diffs.mako:152
10007 #: rhodecode/templates/codeblocks/diffs.mako:138
9990 10008 msgid "{} unresolved"
9991 10009 msgstr ""
9992 10010
9993 #: rhodecode/templates/codeblocks/diffs.mako:155
10011 #: rhodecode/templates/codeblocks/diffs.mako:141
9994 10012 msgid "0 unresolved"
9995 10013 msgstr ""
9996 10014
9997 #: rhodecode/templates/codeblocks/diffs.mako:158
10015 #: rhodecode/templates/codeblocks/diffs.mako:144
9998 10016 msgid "{} Resolved"
9999 10017 msgstr ""
10000 10018
10001 #: rhodecode/templates/codeblocks/diffs.mako:209
10019 #: rhodecode/templates/codeblocks/diffs.mako:195
10002 10020 msgid "The requested changes are too big and content was truncated."
10003 10021 msgstr ""
10004 10022
10005 #: rhodecode/templates/codeblocks/diffs.mako:226
10023 #: rhodecode/templates/codeblocks/diffs.mako:212
10006 10024 msgid "Some changes may be hidden"
10007 10025 msgstr ""
10008 10026
10009 #: rhodecode/templates/codeblocks/diffs.mako:228
10027 #: rhodecode/templates/codeblocks/diffs.mako:214
10010 10028 msgid "No files"
10011 10029 msgstr ""
10012 10030
10013 #: rhodecode/templates/codeblocks/diffs.mako:341
10031 #: rhodecode/templates/codeblocks/diffs.mako:327
10014 10032 msgid "The requested commit or file is too big and content was truncated."
10015 10033 msgstr ""
10016 10034
10017 #: rhodecode/templates/codeblocks/diffs.mako:348
10035 #: rhodecode/templates/codeblocks/diffs.mako:334
10018 10036 #, python-format
10019 10037 msgid "This diff has been collapsed as it changes many lines, (%i lines changed)"
10020 10038 msgstr ""
10021 10039
10022 #: rhodecode/templates/codeblocks/diffs.mako:350
10040 #: rhodecode/templates/codeblocks/diffs.mako:336
10023 10041 msgid "Show them"
10024 10042 msgstr ""
10025 10043
10026 #: rhodecode/templates/codeblocks/diffs.mako:353
10044 #: rhodecode/templates/codeblocks/diffs.mako:339
10027 10045 msgid "Hide them"
10028 10046 msgstr ""
10029 10047
10030 #: rhodecode/templates/codeblocks/diffs.mako:390
10031 #: rhodecode/templates/codeblocks/diffs.mako:409
10048 #: rhodecode/templates/codeblocks/diffs.mako:376
10049 #: rhodecode/templates/codeblocks/diffs.mako:395
10032 10050 msgid "Unmatched/outdated inline comments below"
10033 10051 msgstr ""
10034 10052
10035 #: rhodecode/templates/codeblocks/diffs.mako:415
10053 #: rhodecode/templates/codeblocks/diffs.mako:401
10036 10054 msgid "Unmatched/outdated comments below"
10037 10055 msgstr ""
10038 10056
10039 #: rhodecode/templates/codeblocks/diffs.mako:489
10057 #: rhodecode/templates/codeblocks/diffs.mako:475
10040 10058 msgid "This file was removed from diff during updates to this pull-request."
10041 10059 msgstr ""
10042 10060
10043 #: rhodecode/templates/codeblocks/diffs.mako:490
10061 #: rhodecode/templates/codeblocks/diffs.mako:476
10044 10062 msgid "There are still outdated/unresolved comments attached to it."
10045 10063 msgstr ""
10046 10064
10047 #: rhodecode/templates/codeblocks/diffs.mako:596
10048 #: rhodecode/templates/codeblocks/diffs.mako:614
10065 #: rhodecode/templates/codeblocks/diffs.mako:582
10066 #: rhodecode/templates/codeblocks/diffs.mako:600
10049 10067 #, python-format
10050 10068 msgid "Show file at commit: %(commit_id)s"
10051 10069 msgstr ""
10052 10070
10053 #: rhodecode/templates/codeblocks/diffs.mako:598
10054 #: rhodecode/templates/codeblocks/diffs.mako:605
10071 #: rhodecode/templates/codeblocks/diffs.mako:584
10072 #: rhodecode/templates/codeblocks/diffs.mako:591
10055 10073 msgid "Show file before"
10056 10074 msgstr ""
10057 10075
10058 #: rhodecode/templates/codeblocks/diffs.mako:603
10059 #: rhodecode/templates/codeblocks/diffs.mako:621
10076 #: rhodecode/templates/codeblocks/diffs.mako:589
10077 #: rhodecode/templates/codeblocks/diffs.mako:607
10060 10078 #, python-format
10061 10079 msgid "File not present at commit: %(commit_id)s"
10062 10080 msgstr ""
10063 10081
10082 #: rhodecode/templates/codeblocks/diffs.mako:602
10083 #: rhodecode/templates/codeblocks/diffs.mako:609
10084 msgid "Show file after"
10085 msgstr ""
10086
10064 10087 #: rhodecode/templates/codeblocks/diffs.mako:616
10065 #: rhodecode/templates/codeblocks/diffs.mako:623
10066 msgid "Show file after"
10067 msgstr ""
10068
10069 #: rhodecode/templates/codeblocks/diffs.mako:630
10070 msgid "Show comments"
10071 msgstr ""
10072
10073 #: rhodecode/templates/codeblocks/diffs.mako:630
10088 #: rhodecode/templates/codeblocks/diffs.mako:618
10074 10089 msgid "Hide comments"
10075 10090 msgstr ""
10076 10091
10077 #: rhodecode/templates/codeblocks/diffs.mako:721
10078 #: rhodecode/templates/codeblocks/diffs.mako:764
10079 #: rhodecode/templates/codeblocks/diffs.mako:826
10080 msgid "comments including outdated: {}. Click here to display them."
10081 msgstr ""
10082
10083 #: rhodecode/templates/codeblocks/diffs.mako:723
10084 #: rhodecode/templates/codeblocks/diffs.mako:766
10085 #: rhodecode/templates/codeblocks/diffs.mako:828
10086 msgid "comments: {}. Click to toggle them."
10087 msgstr ""
10088
10089 #: rhodecode/templates/codeblocks/diffs.mako:897
10092 #: rhodecode/templates/codeblocks/diffs.mako:617
10093 msgid "Show comments"
10094 msgstr ""
10095
10096 #: rhodecode/templates/codeblocks/diffs.mako:726
10097 #: rhodecode/templates/codeblocks/diffs.mako:773
10098 #: rhodecode/templates/codeblocks/diffs.mako:840
10099 msgid "Comments including outdated: {}. Click here to toggle them."
10100 msgstr ""
10101
10102 #: rhodecode/templates/codeblocks/diffs.mako:728
10103 #: rhodecode/templates/codeblocks/diffs.mako:775
10104 #: rhodecode/templates/codeblocks/diffs.mako:842
10105 msgid "Comments: {}. Click to toggle them."
10106 msgstr ""
10107
10108 #: rhodecode/templates/codeblocks/diffs.mako:914
10090 10109 msgid "Toggle wide diff"
10091 10110 msgstr ""
10092 10111
10093 #: rhodecode/templates/codeblocks/diffs.mako:905
10112 #: rhodecode/templates/codeblocks/diffs.mako:922
10094 10113 msgid "View diff as side by side"
10095 10114 msgstr ""
10096 10115
10097 #: rhodecode/templates/codeblocks/diffs.mako:907
10116 #: rhodecode/templates/codeblocks/diffs.mako:924
10098 10117 msgid "Side by Side"
10099 10118 msgstr ""
10100 10119
10101 #: rhodecode/templates/codeblocks/diffs.mako:912
10120 #: rhodecode/templates/codeblocks/diffs.mako:929
10102 10121 msgid "View diff as unified"
10103 10122 msgstr ""
10104 10123
10105 #: rhodecode/templates/codeblocks/diffs.mako:913
10124 #: rhodecode/templates/codeblocks/diffs.mako:930
10106 10125 msgid "Unified"
10107 10126 msgstr ""
10108 10127
10109 #: rhodecode/templates/codeblocks/diffs.mako:918
10128 #: rhodecode/templates/codeblocks/diffs.mako:935
10110 10129 msgid "Turn off: Show the diff as commit range"
10111 10130 msgstr ""
10112 10131
10113 #: rhodecode/templates/codeblocks/diffs.mako:921
10114 #: rhodecode/templates/codeblocks/diffs.mako:928
10132 #: rhodecode/templates/codeblocks/diffs.mako:938
10133 #: rhodecode/templates/codeblocks/diffs.mako:945
10115 10134 msgid "Range Diff"
10116 10135 msgstr ""
10117 10136
10118 #: rhodecode/templates/codeblocks/diffs.mako:925
10137 #: rhodecode/templates/codeblocks/diffs.mako:942
10119 10138 msgid "Show the diff as commit range"
10120 10139 msgstr ""
10121 10140
10122 #: rhodecode/templates/codeblocks/diffs.mako:990
10141 #: rhodecode/templates/codeblocks/diffs.mako:1007
10123 10142 msgid "Disabled on range diff"
10124 10143 msgstr ""
10125 10144
10126 #: rhodecode/templates/codeblocks/diffs.mako:1297
10145 #: rhodecode/templates/codeblocks/diffs.mako:1314
10127 10146 msgid "..."
10128 10147 msgstr ""
10129 10148
@@ -10171,25 +10190,25 b' msgstr ""'
10171 10190 msgid "Select second commit"
10172 10191 msgstr ""
10173 10192
10174 #: rhodecode/templates/commits/changelog.mako:116
10193 #: rhodecode/templates/commits/changelog.mako:135
10175 10194 msgid "Commit Message"
10176 10195 msgstr ""
10177 10196
10178 #: rhodecode/templates/commits/changelog.mako:118
10197 #: rhodecode/templates/commits/changelog.mako:137
10179 10198 #: rhodecode/templates/summary/summary_commits.mako:10
10180 10199 msgid "Age"
10181 10200 msgstr ""
10182 10201
10183 #: rhodecode/templates/commits/changelog.mako:121
10202 #: rhodecode/templates/commits/changelog.mako:140
10184 10203 #: rhodecode/templates/summary/summary_commits.mako:12
10185 10204 msgid "Refs"
10186 10205 msgstr ""
10187 10206
10188 #: rhodecode/templates/commits/changelog.mako:262
10207 #: rhodecode/templates/commits/changelog.mako:289
10189 10208 msgid "Branch filter"
10190 10209 msgstr ""
10191 10210
10192 #: rhodecode/templates/commits/changelog.mako:323
10211 #: rhodecode/templates/commits/changelog.mako:350
10193 10212 msgid "There are no changes yet"
10194 10213 msgstr ""
10195 10214
@@ -10229,7 +10248,7 b' msgstr ""'
10229 10248
10230 10249 #: rhodecode/templates/commits/changelog_elements.mako:80
10231 10250 #: rhodecode/templates/compare/compare_commits.mako:47
10232 #: rhodecode/templates/pullrequests/pullrequest_show.mako:435
10251 #: rhodecode/templates/pullrequests/pullrequest_show.mako:433
10233 10252 #: rhodecode/templates/search/search_commit.mako:34
10234 10253 msgid "Expand commit message"
10235 10254 msgstr ""
@@ -10281,7 +10300,7 b' msgid "Compare was calculated based on t'
10281 10300 msgstr ""
10282 10301
10283 10302 #: rhodecode/templates/compare/compare_commits.mako:15
10284 #: rhodecode/templates/pullrequests/pullrequest_show.mako:396
10303 #: rhodecode/templates/pullrequests/pullrequest_show.mako:394
10285 10304 msgid "Time"
10286 10305 msgstr ""
10287 10306
@@ -10402,7 +10421,7 b' msgid "personal"'
10402 10421 msgstr ""
10403 10422
10404 10423 #: rhodecode/templates/data_table/_dt_elements.mako:387
10405 #: rhodecode/templates/pullrequests/pullrequest_show.mako:59
10424 #: rhodecode/templates/pullrequests/pullrequest_show.mako:57
10406 10425 msgid "Pull request !{}"
10407 10426 msgstr ""
10408 10427
@@ -10410,11 +10429,11 b' msgstr ""'
10410 10429 msgid "Work in progress"
10411 10430 msgstr ""
10412 10431
10413 #: rhodecode/templates/data_table/_dt_elements.mako:429
10432 #: rhodecode/templates/data_table/_dt_elements.mako:432
10414 10433 msgid "Info"
10415 10434 msgstr ""
10416 10435
10417 #: rhodecode/templates/data_table/_dt_elements.mako:470
10436 #: rhodecode/templates/data_table/_dt_elements.mako:473
10418 10437 #, python-format
10419 10438 msgid "Parsed using %s syntax"
10420 10439 msgstr ""
@@ -10553,11 +10572,11 b' msgid "Don\'t have an account ?"'
10553 10572 msgstr ""
10554 10573
10555 10574 #: rhodecode/templates/email_templates/base.mako:72
10556 #: rhodecode/templates/email_templates/base.mako:633
10575 #: rhodecode/templates/email_templates/base.mako:639
10557 10576 msgid "This is a notification from RhodeCode."
10558 10577 msgstr ""
10559 10578
10560 #: rhodecode/templates/email_templates/base.mako:613
10579 #: rhodecode/templates/email_templates/base.mako:619
10561 10580 msgid "RhodeCode"
10562 10581 msgstr ""
10563 10582
@@ -10718,8 +10737,8 b' msgstr ""'
10718 10737 #: rhodecode/templates/email_templates/pull_request_review.mako:129
10719 10738 #: rhodecode/templates/email_templates/pull_request_update.mako:132
10720 10739 #: rhodecode/templates/email_templates/pull_request_update.mako:134
10721 #: rhodecode/templates/pullrequests/pullrequest_show.mako:114
10722 #: rhodecode/templates/pullrequests/pullrequest_show.mako:123
10740 #: rhodecode/templates/pullrequests/pullrequest_show.mako:112
10741 #: rhodecode/templates/pullrequests/pullrequest_show.mako:121
10723 10742 msgid "of"
10724 10743 msgstr ""
10725 10744
@@ -10857,15 +10876,20 b' msgstr ""'
10857 10876 msgid "Upload File"
10858 10877 msgstr ""
10859 10878
10860 #: rhodecode/templates/files/files_browser.mako:51
10861 msgid "Download full tree ZIP"
10862 msgstr ""
10863
10864 #: rhodecode/templates/files/files_browser.mako:55
10865 msgid "Download this tree ZIP"
10866 msgstr ""
10867
10868 #: rhodecode/templates/files/files_browser.mako:83
10879 #: rhodecode/templates/files/files_browser.mako:50
10880 msgid "Full tree as {}"
10881 msgstr ""
10882
10883 #: rhodecode/templates/files/files_browser.mako:53
10884 msgid "This tree as {}"
10885 msgstr ""
10886
10887 #: rhodecode/templates/files/files_browser.mako:63
10888 #: rhodecode/templates/summary/components.mako:196
10889 msgid "more download options"
10890 msgstr ""
10891
10892 #: rhodecode/templates/files/files_browser.mako:106
10869 10893 #: rhodecode/templates/summary/summary.mako:37
10870 10894 #, python-format
10871 10895 msgid "Readme file from commit %s:%s"
@@ -11064,7 +11088,7 b' msgid "New pull request"'
11064 11088 msgstr ""
11065 11089
11066 11090 #: rhodecode/templates/pullrequests/pullrequest.mako:33
11067 #: rhodecode/templates/pullrequests/pullrequest_show.mako:104
11091 #: rhodecode/templates/pullrequests/pullrequest_show.mako:102
11068 11092 msgid "Commit flow"
11069 11093 msgstr ""
11070 11094
@@ -11085,17 +11109,17 b' msgid "Reviewers / Observers"'
11085 11109 msgstr ""
11086 11110
11087 11111 #: rhodecode/templates/pullrequests/pullrequest.mako:121
11088 #: rhodecode/templates/pullrequests/pullrequest_show.mako:571
11112 #: rhodecode/templates/pullrequests/pullrequest_show.mako:605
11089 11113 msgid "Reviewer rules"
11090 11114 msgstr ""
11091 11115
11092 11116 #: rhodecode/templates/pullrequests/pullrequest.mako:167
11093 #: rhodecode/templates/pullrequests/pullrequest_show.mako:613
11117 #: rhodecode/templates/pullrequests/pullrequest_show.mako:647
11094 11118 msgid "Add reviewer or reviewer group"
11095 11119 msgstr ""
11096 11120
11097 11121 #: rhodecode/templates/pullrequests/pullrequest.mako:191
11098 #: rhodecode/templates/pullrequests/pullrequest_show.mako:666
11122 #: rhodecode/templates/pullrequests/pullrequest_show.mako:700
11099 11123 msgid "Add observer or observer group"
11100 11124 msgstr ""
11101 11125
@@ -11151,223 +11175,232 b' msgstr ""'
11151 11175 msgid "{} Pull Request !{}"
11152 11176 msgstr ""
11153 11177
11154 #: rhodecode/templates/pullrequests/pullrequest_show.mako:61
11178 #: rhodecode/templates/pullrequests/pullrequest_show.mako:59
11155 11179 msgid "Last updated on"
11156 11180 msgstr ""
11157 11181
11158 #: rhodecode/templates/pullrequests/pullrequest_show.mako:62
11182 #: rhodecode/templates/pullrequests/pullrequest_show.mako:60
11159 11183 msgid "by"
11160 11184 msgstr ""
11161 11185
11162 #: rhodecode/templates/pullrequests/pullrequest_show.mako:71
11186 #: rhodecode/templates/pullrequests/pullrequest_show.mako:69
11163 11187 msgid "Update title & description"
11164 11188 msgstr ""
11165 11189
11166 #: rhodecode/templates/pullrequests/pullrequest_show.mako:77
11167 #: rhodecode/templates/pullrequests/pullrequest_show.mako:80
11190 #: rhodecode/templates/pullrequests/pullrequest_show.mako:75
11191 #: rhodecode/templates/pullrequests/pullrequest_show.mako:78
11168 11192 msgid "Delete pull request"
11169 11193 msgstr ""
11170 11194
11171 #: rhodecode/templates/pullrequests/pullrequest_show.mako:80
11195 #: rhodecode/templates/pullrequests/pullrequest_show.mako:78
11172 11196 msgid "Not allowed to delete this pull request"
11173 11197 msgstr ""
11174 11198
11175 #: rhodecode/templates/pullrequests/pullrequest_show.mako:90
11199 #: rhodecode/templates/pullrequests/pullrequest_show.mako:88
11176 11200 msgid "Rendered using {} renderer"
11177 11201 msgstr ""
11178 11202
11179 #: rhodecode/templates/pullrequests/pullrequest_show.mako:137
11203 #: rhodecode/templates/pullrequests/pullrequest_show.mako:135
11180 11204 msgid "Common ancestor"
11181 11205 msgstr ""
11182 11206
11183 #: rhodecode/templates/pullrequests/pullrequest_show.mako:141
11207 #: rhodecode/templates/pullrequests/pullrequest_show.mako:139
11184 11208 msgid "not available"
11185 11209 msgstr ""
11186 11210
11187 #: rhodecode/templates/pullrequests/pullrequest_show.mako:153
11211 #: rhodecode/templates/pullrequests/pullrequest_show.mako:151
11188 11212 msgid "Pull changes from source"
11189 11213 msgstr ""
11190 11214
11191 #: rhodecode/templates/pullrequests/pullrequest_show.mako:154
11215 #: rhodecode/templates/pullrequests/pullrequest_show.mako:152
11192 11216 msgid "Copy the pull url"
11193 11217 msgstr ""
11194 11218
11195 #: rhodecode/templates/pullrequests/pullrequest_show.mako:166
11219 #: rhodecode/templates/pullrequests/pullrequest_show.mako:164
11196 11220 msgid "Clone repository in its merged state using shadow repository"
11197 11221 msgstr ""
11198 11222
11199 #: rhodecode/templates/pullrequests/pullrequest_show.mako:166
11223 #: rhodecode/templates/pullrequests/pullrequest_show.mako:164
11200 11224 msgid "Clone from shadow repository"
11201 11225 msgstr ""
11202 11226
11203 #: rhodecode/templates/pullrequests/pullrequest_show.mako:167
11227 #: rhodecode/templates/pullrequests/pullrequest_show.mako:165
11204 11228 #: rhodecode/templates/summary/components.mako:78
11205 11229 msgid "Copy the clone url"
11206 11230 msgstr ""
11207 11231
11208 #: rhodecode/templates/pullrequests/pullrequest_show.mako:171
11232 #: rhodecode/templates/pullrequests/pullrequest_show.mako:169
11209 11233 msgid "Shadow repository data not available"
11210 11234 msgstr ""
11211 11235
11212 #: rhodecode/templates/pullrequests/pullrequest_show.mako:187
11236 #: rhodecode/templates/pullrequests/pullrequest_show.mako:185
11213 11237 msgid "Versions"
11214 11238 msgstr ""
11215 11239
11240 #: rhodecode/templates/pullrequests/pullrequest_show.mako:197
11216 11241 #: rhodecode/templates/pullrequests/pullrequest_show.mako:199
11217 #: rhodecode/templates/pullrequests/pullrequest_show.mako:201
11218 11242 msgid "show versions"
11219 11243 msgstr ""
11220 11244
11221 #: rhodecode/templates/pullrequests/pullrequest_show.mako:200
11245 #: rhodecode/templates/pullrequests/pullrequest_show.mako:198
11222 11246 msgid "hide versions"
11223 11247 msgstr ""
11224 11248
11225 #: rhodecode/templates/pullrequests/pullrequest_show.mako:225
11249 #: rhodecode/templates/pullrequests/pullrequest_show.mako:223
11226 11250 msgid "Your review status at this version"
11227 11251 msgstr ""
11228 11252
11229 #: rhodecode/templates/pullrequests/pullrequest_show.mako:230
11253 #: rhodecode/templates/pullrequests/pullrequest_show.mako:228
11230 11254 msgid "Comments from pull request version v{0}"
11231 11255 msgstr ""
11232 11256
11257 #: rhodecode/templates/pullrequests/pullrequest_show.mako:246
11258 #: rhodecode/templates/pullrequests/pullrequest_show.mako:250
11259 msgid "select versions to show changes"
11260 msgstr ""
11261
11262 #: rhodecode/templates/pullrequests/pullrequest_show.mako:247
11263 msgid "show changes between versions"
11264 msgstr ""
11265
11233 11266 #: rhodecode/templates/pullrequests/pullrequest_show.mako:248
11234 #: rhodecode/templates/pullrequests/pullrequest_show.mako:252
11235 msgid "select versions to show changes"
11236 msgstr ""
11237
11238 #: rhodecode/templates/pullrequests/pullrequest_show.mako:249
11239 msgid "show changes between versions"
11240 msgstr ""
11241
11242 #: rhodecode/templates/pullrequests/pullrequest_show.mako:250
11243 11267 msgid "show pull request for this version"
11244 11268 msgstr ""
11245 11269
11246 #: rhodecode/templates/pullrequests/pullrequest_show.mako:259
11270 #: rhodecode/templates/pullrequests/pullrequest_show.mako:257
11247 11271 msgid "Pull request versions not available"
11248 11272 msgstr ""
11249 11273
11250 #: rhodecode/templates/pullrequests/pullrequest_show.mako:279
11274 #: rhodecode/templates/pullrequests/pullrequest_show.mako:277
11251 11275 msgid "Cannot show diff when pull request state is changing. Current progress state"
11252 11276 msgstr ""
11253 11277
11254 #: rhodecode/templates/pullrequests/pullrequest_show.mako:297
11278 #: rhodecode/templates/pullrequests/pullrequest_show.mako:295
11255 11279 msgid "Missing requirements:"
11256 11280 msgstr ""
11257 11281
11258 #: rhodecode/templates/pullrequests/pullrequest_show.mako:298
11282 #: rhodecode/templates/pullrequests/pullrequest_show.mako:296
11259 11283 msgid "These commits cannot be displayed, because this repository uses the Mercurial largefiles extension, which was not enabled."
11260 11284 msgstr ""
11261 11285
11286 #: rhodecode/templates/pullrequests/pullrequest_show.mako:304
11287 msgid "Missing commits"
11288 msgstr ""
11289
11290 #: rhodecode/templates/pullrequests/pullrequest_show.mako:305
11291 msgid "This pull request cannot be displayed, because one or more commits no longer exist in the source repository."
11292 msgstr ""
11293
11262 11294 #: rhodecode/templates/pullrequests/pullrequest_show.mako:306
11263 msgid "Missing commits"
11295 msgid "Please update this pull request, push the commits back into the source repository, or consider closing this pull request."
11264 11296 msgstr ""
11265 11297
11266 11298 #: rhodecode/templates/pullrequests/pullrequest_show.mako:307
11267 msgid "This pull request cannot be displayed, because one or more commits no longer exist in the source repository."
11268 msgstr ""
11269
11270 #: rhodecode/templates/pullrequests/pullrequest_show.mako:308
11271 msgid "Please update this pull request, push the commits back into the source repository, or consider closing this pull request."
11272 msgstr ""
11273
11274 #: rhodecode/templates/pullrequests/pullrequest_show.mako:309
11275 11299 msgid "Consider doing a `force update commits` in case you think this is an error."
11276 11300 msgstr ""
11277 11301
11278 #: rhodecode/templates/pullrequests/pullrequest_show.mako:317
11302 #: rhodecode/templates/pullrequests/pullrequest_show.mako:315
11279 11303 msgid "There are new changes for `{}:{}` in source repository, please consider updating this pull request."
11280 11304 msgstr ""
11281 11305
11282 #: rhodecode/templates/pullrequests/pullrequest_show.mako:328
11306 #: rhodecode/templates/pullrequests/pullrequest_show.mako:326
11283 11307 msgid "Showing changes at v{}, commenting is disabled."
11284 11308 msgstr ""
11285 11309
11286 #: rhodecode/templates/pullrequests/pullrequest_show.mako:351
11287 #: rhodecode/templates/pullrequests/pullrequest_show.mako:373
11310 #: rhodecode/templates/pullrequests/pullrequest_show.mako:349
11311 #: rhodecode/templates/pullrequests/pullrequest_show.mako:371
11288 11312 msgid "Update commits"
11289 11313 msgstr ""
11290 11314
11291 #: rhodecode/templates/pullrequests/pullrequest_show.mako:354
11315 #: rhodecode/templates/pullrequests/pullrequest_show.mako:352
11292 11316 msgid "more update options"
11293 11317 msgstr ""
11294 11318
11295 #: rhodecode/templates/pullrequests/pullrequest_show.mako:362
11319 #: rhodecode/templates/pullrequests/pullrequest_show.mako:360
11296 11320 msgid "Force update commits"
11297 11321 msgstr ""
11298 11322
11299 #: rhodecode/templates/pullrequests/pullrequest_show.mako:365
11323 #: rhodecode/templates/pullrequests/pullrequest_show.mako:363
11300 11324 msgid "Update commits and force refresh this pull request."
11301 11325 msgstr ""
11302 11326
11303 #: rhodecode/templates/pullrequests/pullrequest_show.mako:373
11327 #: rhodecode/templates/pullrequests/pullrequest_show.mako:371
11304 11328 msgid "Update is disabled for current view"
11305 11329 msgstr ""
11306 11330
11307 #: rhodecode/templates/pullrequests/pullrequest_show.mako:385
11331 #: rhodecode/templates/pullrequests/pullrequest_show.mako:383
11308 11332 msgid "Commits and changes between v{ver_from} and {ver_to} of this pull request, commenting is disabled"
11309 11333 msgstr ""
11310 11334
11311 #: rhodecode/templates/pullrequests/pullrequest_show.mako:389
11335 #: rhodecode/templates/pullrequests/pullrequest_show.mako:387
11312 11336 msgid "commits added: {}, removed: {}"
11313 11337 msgstr ""
11314 11338
11339 #: rhodecode/templates/pullrequests/pullrequest_show.mako:405
11340 msgid "Commit added in displayed changes"
11341 msgstr ""
11342
11315 11343 #: rhodecode/templates/pullrequests/pullrequest_show.mako:407
11316 msgid "Commit added in displayed changes"
11317 msgstr ""
11318
11319 #: rhodecode/templates/pullrequests/pullrequest_show.mako:409
11320 11344 msgid "Commit removed in displayed changes"
11321 11345 msgstr ""
11322 11346
11323 #: rhodecode/templates/pullrequests/pullrequest_show.mako:512
11347 #: rhodecode/templates/pullrequests/pullrequest_show.mako:510
11324 11348 msgid "there is {num} general comment from older versions"
11325 11349 msgstr ""
11326 11350
11351 #: rhodecode/templates/pullrequests/pullrequest_show.mako:511
11352 msgid "show it"
11353 msgstr ""
11354
11327 11355 #: rhodecode/templates/pullrequests/pullrequest_show.mako:513
11328 msgid "show it"
11329 msgstr ""
11330
11331 #: rhodecode/templates/pullrequests/pullrequest_show.mako:515
11332 11356 msgid "there are {num} general comments from older versions"
11333 11357 msgstr ""
11334 11358
11335 #: rhodecode/templates/pullrequests/pullrequest_show.mako:516
11359 #: rhodecode/templates/pullrequests/pullrequest_show.mako:514
11336 11360 msgid "show them"
11337 11361 msgstr ""
11338 11362
11339 #: rhodecode/templates/pullrequests/pullrequest_show.mako:591
11363 #: rhodecode/templates/pullrequests/pullrequest_show.mako:556
11364 #: rhodecode/templates/pullrequests/pullrequest_show.mako:567
11365 msgid "Drafts"
11366 msgstr ""
11367
11368 #: rhodecode/templates/pullrequests/pullrequest_show.mako:569
11369 msgid "Submit"
11370 msgstr ""
11371
11372 #: rhodecode/templates/pullrequests/pullrequest_show.mako:625
11340 11373 msgid "Show rules"
11341 11374 msgstr ""
11342 11375
11343 #: rhodecode/templates/pullrequests/pullrequest_show.mako:618
11344 #: rhodecode/templates/pullrequests/pullrequest_show.mako:671
11376 #: rhodecode/templates/pullrequests/pullrequest_show.mako:652
11377 #: rhodecode/templates/pullrequests/pullrequest_show.mako:705
11345 11378 msgid "Save Changes"
11346 11379 msgstr ""
11347 11380
11348 #: rhodecode/templates/pullrequests/pullrequest_show.mako:642
11381 #: rhodecode/templates/pullrequests/pullrequest_show.mako:676
11349 11382 msgid "Observers"
11350 11383 msgstr ""
11351 11384
11352 #: rhodecode/templates/pullrequests/pullrequest_show.mako:708
11385 #: rhodecode/templates/pullrequests/pullrequest_show.mako:742
11353 11386 msgid "TODOs unavailable when browsing versions"
11354 11387 msgstr ""
11355 11388
11356 #: rhodecode/templates/pullrequests/pullrequest_show.mako:780
11357 #: rhodecode/templates/pullrequests/pullrequest_show.mako:788
11389 #: rhodecode/templates/pullrequests/pullrequest_show.mako:814
11390 #: rhodecode/templates/pullrequests/pullrequest_show.mako:822
11358 11391 msgid "Referenced Tickets"
11359 11392 msgstr ""
11360 11393
11361 #: rhodecode/templates/pullrequests/pullrequest_show.mako:794
11394 #: rhodecode/templates/pullrequests/pullrequest_show.mako:828
11362 11395 msgid "In pull request description"
11363 11396 msgstr ""
11364 11397
11365 #: rhodecode/templates/pullrequests/pullrequest_show.mako:808
11366 #: rhodecode/templates/pullrequests/pullrequest_show.mako:827
11398 #: rhodecode/templates/pullrequests/pullrequest_show.mako:842
11399 #: rhodecode/templates/pullrequests/pullrequest_show.mako:861
11367 11400 msgid "No Ticket data found."
11368 11401 msgstr ""
11369 11402
11370 #: rhodecode/templates/pullrequests/pullrequest_show.mako:813
11403 #: rhodecode/templates/pullrequests/pullrequest_show.mako:847
11371 11404 msgid "In commit messages"
11372 11405 msgstr ""
11373 11406
@@ -11496,23 +11529,19 b' msgstr ""'
11496 11529 msgid "Downloads are disabled for this repository"
11497 11530 msgstr ""
11498 11531
11499 #: rhodecode/templates/summary/components.mako:196
11500 msgid "more download options"
11501 msgstr ""
11502
11503 #: rhodecode/templates/summary/components.mako:228
11532 #: rhodecode/templates/summary/components.mako:227
11504 11533 msgid "Repository size"
11505 11534 msgstr ""
11506 11535
11507 #: rhodecode/templates/summary/components.mako:240
11536 #: rhodecode/templates/summary/components.mako:239
11508 11537 msgid "Calculating Repository Size..."
11509 11538 msgstr ""
11510 11539
11511 #: rhodecode/templates/summary/components.mako:251
11540 #: rhodecode/templates/summary/components.mako:250
11512 11541 msgid "Code Statistics"
11513 11542 msgstr ""
11514 11543
11515 #: rhodecode/templates/summary/components.mako:260
11544 #: rhodecode/templates/summary/components.mako:259
11516 11545 msgid "Statistics are disabled for this repository"
11517 11546 msgstr ""
11518 11547
@@ -24,6 +24,9 b' from rhodecode.apps._base import ADMIN_P'
24 24 from rhodecode.lib.utils2 import safe_int
25 25 from rhodecode.model.db import Repository, Integration, RepoGroup
26 26 from rhodecode.integrations import integration_type_registry
27 from rhodecode.integrations.views import GlobalIntegrationsView
28 from rhodecode.integrations.views import RepoGroupIntegrationsView
29 from rhodecode.integrations.views import RepoIntegrationsView
27 30
28 31 log = logging.getLogger(__name__)
29 32
@@ -83,7 +86,7 b' def includeme(config):'
83 86 # global integrations
84 87 config.add_route('global_integrations_new',
85 88 ADMIN_PREFIX + '/integrations/new')
86 config.add_view('rhodecode.integrations.views.GlobalIntegrationsView',
89 config.add_view(GlobalIntegrationsView,
87 90 attr='new_integration',
88 91 renderer='rhodecode:templates/admin/integrations/new.mako',
89 92 request_method='GET',
@@ -94,7 +97,7 b' def includeme(config):'
94 97 config.add_route('global_integrations_list',
95 98 ADMIN_PREFIX + '/integrations/{integration}')
96 99 for route_name in ['global_integrations_home', 'global_integrations_list']:
97 config.add_view('rhodecode.integrations.views.GlobalIntegrationsView',
100 config.add_view(GlobalIntegrationsView,
98 101 attr='integration_list',
99 102 renderer='rhodecode:templates/admin/integrations/list.mako',
100 103 request_method='GET',
@@ -108,12 +111,12 b' def includeme(config):'
108 111 valid_integration=True)
109 112
110 113 for route_name in ['global_integrations_create', 'global_integrations_edit']:
111 config.add_view('rhodecode.integrations.views.GlobalIntegrationsView',
114 config.add_view(GlobalIntegrationsView,
112 115 attr='settings_get',
113 116 renderer='rhodecode:templates/admin/integrations/form.mako',
114 117 request_method='GET',
115 118 route_name=route_name)
116 config.add_view('rhodecode.integrations.views.GlobalIntegrationsView',
119 config.add_view(GlobalIntegrationsView,
117 120 attr='settings_post',
118 121 renderer='rhodecode:templates/admin/integrations/form.mako',
119 122 request_method='POST',
@@ -124,7 +127,7 b' def includeme(config):'
124 127 add_route_requirements('/{repo_group_name}/_settings/integrations'),
125 128 repo_group_route=True)
126 129
127 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
130 config.add_view(RepoGroupIntegrationsView,
128 131 attr='integration_list',
129 132 renderer='rhodecode:templates/admin/integrations/list.mako',
130 133 request_method='GET',
@@ -133,7 +136,7 b' def includeme(config):'
133 136 config.add_route('repo_group_integrations_new',
134 137 add_route_requirements('/{repo_group_name}/_settings/integrations/new'),
135 138 repo_group_route=True)
136 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
139 config.add_view(RepoGroupIntegrationsView,
137 140 attr='new_integration',
138 141 renderer='rhodecode:templates/admin/integrations/new.mako',
139 142 request_method='GET',
@@ -143,7 +146,7 b' def includeme(config):'
143 146 add_route_requirements('/{repo_group_name}/_settings/integrations/{integration}'),
144 147 repo_group_route=True,
145 148 valid_integration=True)
146 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
149 config.add_view(RepoGroupIntegrationsView,
147 150 attr='integration_list',
148 151 renderer='rhodecode:templates/admin/integrations/list.mako',
149 152 request_method='GET',
@@ -153,12 +156,12 b' def includeme(config):'
153 156 add_route_requirements('/{repo_group_name}/_settings/integrations/{integration}/new'),
154 157 repo_group_route=True,
155 158 valid_integration=True)
156 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
159 config.add_view(RepoGroupIntegrationsView,
157 160 attr='settings_get',
158 161 renderer='rhodecode:templates/admin/integrations/form.mako',
159 162 request_method='GET',
160 163 route_name='repo_group_integrations_create')
161 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
164 config.add_view(RepoGroupIntegrationsView,
162 165 attr='settings_post',
163 166 renderer='rhodecode:templates/admin/integrations/form.mako',
164 167 request_method='POST',
@@ -169,12 +172,12 b' def includeme(config):'
169 172 repo_group_route=True,
170 173 valid_integration=True)
171 174
172 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
175 config.add_view(RepoGroupIntegrationsView,
173 176 attr='settings_get',
174 177 renderer='rhodecode:templates/admin/integrations/form.mako',
175 178 request_method='GET',
176 179 route_name='repo_group_integrations_edit')
177 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
180 config.add_view(RepoGroupIntegrationsView,
178 181 attr='settings_post',
179 182 renderer='rhodecode:templates/admin/integrations/form.mako',
180 183 request_method='POST',
@@ -184,7 +187,7 b' def includeme(config):'
184 187 config.add_route('repo_integrations_home',
185 188 add_route_requirements('/{repo_name}/settings/integrations'),
186 189 repo_route=True)
187 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
190 config.add_view(RepoIntegrationsView,
188 191 attr='integration_list',
189 192 request_method='GET',
190 193 renderer='rhodecode:templates/admin/integrations/list.mako',
@@ -193,7 +196,7 b' def includeme(config):'
193 196 config.add_route('repo_integrations_new',
194 197 add_route_requirements('/{repo_name}/settings/integrations/new'),
195 198 repo_route=True)
196 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
199 config.add_view(RepoIntegrationsView,
197 200 attr='new_integration',
198 201 renderer='rhodecode:templates/admin/integrations/new.mako',
199 202 request_method='GET',
@@ -203,7 +206,7 b' def includeme(config):'
203 206 add_route_requirements('/{repo_name}/settings/integrations/{integration}'),
204 207 repo_route=True,
205 208 valid_integration=True)
206 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
209 config.add_view(RepoIntegrationsView,
207 210 attr='integration_list',
208 211 request_method='GET',
209 212 renderer='rhodecode:templates/admin/integrations/list.mako',
@@ -213,12 +216,12 b' def includeme(config):'
213 216 add_route_requirements('/{repo_name}/settings/integrations/{integration}/new'),
214 217 repo_route=True,
215 218 valid_integration=True)
216 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
219 config.add_view(RepoIntegrationsView,
217 220 attr='settings_get',
218 221 renderer='rhodecode:templates/admin/integrations/form.mako',
219 222 request_method='GET',
220 223 route_name='repo_integrations_create')
221 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
224 config.add_view(RepoIntegrationsView,
222 225 attr='settings_post',
223 226 renderer='rhodecode:templates/admin/integrations/form.mako',
224 227 request_method='POST',
@@ -228,12 +231,12 b' def includeme(config):'
228 231 add_route_requirements('/{repo_name}/settings/integrations/{integration}/{integration_id}'),
229 232 repo_route=True,
230 233 valid_integration=True)
231 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
234 config.add_view(RepoIntegrationsView,
232 235 attr='settings_get',
233 236 renderer='rhodecode:templates/admin/integrations/form.mako',
234 237 request_method='GET',
235 238 route_name='repo_integrations_edit')
236 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
239 config.add_view(RepoIntegrationsView,
237 240 attr='settings_post',
238 241 renderer='rhodecode:templates/admin/integrations/form.mako',
239 242 request_method='POST',
@@ -469,7 +469,14 b' def get_auth_user(request):'
469 469 ip_addr = get_ip_addr(environ)
470 470
471 471 # make sure that we update permissions each time we call controller
472 _auth_token = (request.GET.get('auth_token', '') or request.GET.get('api_key', ''))
472 _auth_token = (
473 # ?auth_token=XXX
474 request.GET.get('auth_token', '')
475 # ?api_key=XXX !LEGACY
476 or request.GET.get('api_key', '')
477 # or headers....
478 or request.headers.get('X-Rc-Auth-Token', '')
479 )
473 480 if not _auth_token and request.matchdict:
474 481 url_auth_token = request.matchdict.get('_auth_token')
475 482 _auth_token = url_auth_token
@@ -354,7 +354,7 b' def check_for_update():'
354 354 @async_task(ignore_result=False)
355 355 def beat_check(*args, **kwargs):
356 356 log = get_logger(beat_check)
357 log.info('Got args: %r and kwargs %r', args, kwargs)
357 log.info('%r: Got args: %r and kwargs %r', beat_check, args, kwargs)
358 358 return time.time()
359 359
360 360
@@ -398,7 +398,10 b' class DiffSet(object):'
398 398 ):
399 399
400 400 self.highlight_mode = highlight_mode
401 self.highlighted_filenodes = {}
401 self.highlighted_filenodes = {
402 'before': {},
403 'after': {}
404 }
402 405 self.source_node_getter = source_node_getter
403 406 self.target_node_getter = target_node_getter
404 407 self.source_nodes = source_nodes or {}
@@ -657,7 +660,7 b' class DiffSet(object):'
657 660 else:
658 661 before_tokens = self.get_line_tokens(
659 662 line_text=before['line'], line_number=before['old_lineno'],
660 input_file=source_file, no_hl=no_hl)
663 input_file=source_file, no_hl=no_hl, source='before')
661 664 original.lineno = before['old_lineno']
662 665 original.content = before['line']
663 666 original.action = self.action_to_op(before['action'])
@@ -671,7 +674,7 b' class DiffSet(object):'
671 674 else:
672 675 after_tokens = self.get_line_tokens(
673 676 line_text=after['line'], line_number=after['new_lineno'],
674 input_file=target_file, no_hl=no_hl)
677 input_file=target_file, no_hl=no_hl, source='after')
675 678 modified.lineno = after['new_lineno']
676 679 modified.content = after['line']
677 680 modified.action = self.action_to_op(after['action'])
@@ -705,7 +708,7 b' class DiffSet(object):'
705 708
706 709 return lines
707 710
708 def get_line_tokens(self, line_text, line_number, input_file=None, no_hl=False):
711 def get_line_tokens(self, line_text, line_number, input_file=None, no_hl=False, source=''):
709 712 filenode = None
710 713 filename = None
711 714
@@ -720,8 +723,7 b' class DiffSet(object):'
720 723 lexer = self._get_lexer_for_filename(filename)
721 724 file_size_allowed = input_file.size < self.max_file_size_limit
722 725 if line_number and file_size_allowed:
723 return self.get_tokenized_filenode_line(
724 input_file, line_number, lexer)
726 return self.get_tokenized_filenode_line(input_file, line_number, lexer, source)
725 727
726 728 if hl_mode in (self.HL_REAL, self.HL_FAST) and filename:
727 729 lexer = self._get_lexer_for_filename(filename)
@@ -729,16 +731,19 b' class DiffSet(object):'
729 731
730 732 return list(tokenize_string(line_text, plain_text_lexer))
731 733
732 def get_tokenized_filenode_line(self, filenode, line_number, lexer=None):
734 def get_tokenized_filenode_line(self, filenode, line_number, lexer=None, source=''):
733 735
734 if filenode not in self.highlighted_filenodes:
735 tokenized_lines = filenode_as_lines_tokens(filenode, lexer)
736 self.highlighted_filenodes[filenode] = tokenized_lines
736 def tokenize(_filenode):
737 self.highlighted_filenodes[source][filenode] = filenode_as_lines_tokens(filenode, lexer)
738
739 if filenode not in self.highlighted_filenodes[source]:
740 tokenize(filenode)
737 741
738 742 try:
739 return self.highlighted_filenodes[filenode][line_number - 1]
743 return self.highlighted_filenodes[source][filenode][line_number - 1]
740 744 except Exception:
741 return [('', u'rhodecode diff rendering error')]
745 log.exception('diff rendering error')
746 return [('', u'L{}: rhodecode diff rendering error'.format(line_number))]
742 747
743 748 def action_to_op(self, action):
744 749 return {
@@ -27,11 +27,14 b' def pyramid_ext_json(info):'
27 27 """
28 28 def _render(value, system):
29 29 request = system.get('request')
30 indent = None
30 31 if request is not None:
31 32 response = request.response
32 33 ct = response.content_type
33 34 if ct == response.default_content_type:
34 35 response.content_type = 'application/json'
35 return json.dumps(value)
36 indent = getattr(request, 'ext_json_indent', None)
37
38 return json.dumps(value, indent=indent)
36 39
37 40 return _render
@@ -145,60 +145,6 b' def session_factory_from_settings(settin'
145 145 return BeakerSessionFactoryConfig(**options)
146 146
147 147
148 def set_cache_regions_from_settings(settings):
149 """ Add cache support to the Pylons application.
150
151 The ``settings`` passed to the configurator are used to setup
152 the cache options. Cache options in the settings should start
153 with either 'beaker.cache.' or 'cache.'.
154
155 """
156 cache_settings = {'regions': []}
157 for key in settings.keys():
158 for prefix in ['beaker.cache.', 'cache.']:
159 if key.startswith(prefix):
160 name = key.split(prefix)[1].strip()
161 cache_settings[name] = settings[key].strip()
162
163 if ('expire' in cache_settings
164 and isinstance(cache_settings['expire'], basestring)
165 and cache_settings['expire'].lower() in ['none', 'no']):
166 cache_settings['expire'] = None
167
168 coerce_cache_params(cache_settings)
169
170 if 'enabled' not in cache_settings:
171 cache_settings['enabled'] = True
172
173 regions = cache_settings['regions']
174 if regions:
175 for region in regions:
176 if not region:
177 continue
178
179 region_settings = {
180 'data_dir': cache_settings.get('data_dir'),
181 'lock_dir': cache_settings.get('lock_dir'),
182 'expire': cache_settings.get('expire', 60),
183 'enabled': cache_settings['enabled'],
184 'key_length': cache_settings.get('key_length', 250),
185 'type': cache_settings.get('type'),
186 'url': cache_settings.get('url'),
187 }
188 region_prefix = '%s.' % region
189 region_len = len(region_prefix)
190 for key in list(cache_settings.keys()):
191 if key.startswith(region_prefix):
192 region_settings[key[region_len:]] = cache_settings.pop(key)
193
194 if (isinstance(region_settings['expire'], basestring)
195 and region_settings['expire'].lower() in ['none', 'no']):
196 region_settings['expire'] = None
197 coerce_cache_params(region_settings)
198 cache.cache_regions[region] = region_settings
199
200
201 148 def includeme(config):
202 149 session_factory = session_factory_from_settings(config.registry.settings)
203 150 config.set_session_factory(session_factory)
204 set_cache_regions_from_settings(config.registry.settings)
@@ -62,24 +62,25 b' def configure_dogpile_cache(settings):'
62 62 avail_regions = set()
63 63 for key in rc_cache_data.keys():
64 64 namespace_name = key.split('.', 1)[0]
65 avail_regions.add(namespace_name)
66 log.debug('dogpile: found following cache regions: %s', avail_regions)
65 if namespace_name in avail_regions:
66 continue
67 67
68 # register them into namespace
69 for region_name in avail_regions:
68 avail_regions.add(namespace_name)
69 log.debug('dogpile: found following cache regions: %s', namespace_name)
70
70 71 new_region = make_region(
71 name=region_name,
72 name=namespace_name,
72 73 function_key_generator=None
73 74 )
74 75
75 new_region.configure_from_config(settings, 'rc_cache.{}.'.format(region_name))
76 new_region.configure_from_config(settings, 'rc_cache.{}.'.format(namespace_name))
76 77 new_region.function_key_generator = backend_key_generator(new_region.actual_backend)
77 78 if log.isEnabledFor(logging.DEBUG):
78 79 region_args = dict(backend=new_region.actual_backend.__class__,
79 80 region_invalidator=new_region.region_invalidator.__class__)
80 log.debug('dogpile: registering a new region `%s` %s', region_name, region_args)
81 log.debug('dogpile: registering a new region `%s` %s', namespace_name, region_args)
81 82
82 region_meta.dogpile_cache_regions[region_name] = new_region
83 region_meta.dogpile_cache_regions[namespace_name] = new_region
83 84
84 85
85 86 def includeme(config):
@@ -218,8 +218,9 b' def map_vcs_exceptions(func):'
218 218
219 219 if kind:
220 220 if any(e.args):
221 args = [a for a in e.args]
222 args[0] = '{}:'.format(exc_name) # prefix first arg with org exc name
221 _args = [a for a in e.args]
222 # replace the first argument with a prefix exc name
223 args = ['{}:'.format(exc_name, _args[0] if _args else '?')] + _args[1:]
223 224 else:
224 225 args = [__traceback_info__ or '{}: UnhandledException'.format(exc_name)]
225 226 if debug or __traceback_info__ and kind not in ['unhandled', 'lookup']:
@@ -749,8 +749,11 b' class User(Base, BaseModel):'
749 749
750 750 def get_artifact_token(self, cache=True):
751 751 artifacts_tokens = UserApiKeys.query()\
752 .filter(UserApiKeys.user == self)\
752 .filter(UserApiKeys.user == self) \
753 .filter(or_(UserApiKeys.expires == -1,
754 UserApiKeys.expires >= time.time())) \
753 755 .filter(UserApiKeys.role == UserApiKeys.ROLE_ARTIFACT_DOWNLOAD)
756
754 757 if cache:
755 758 artifacts_tokens = artifacts_tokens.options(
756 759 FromCache("sql_cache_short", "get_user_artifact_token_%s" % self.user_id))
@@ -760,6 +763,24 b' class User(Base, BaseModel):'
760 763 return artifacts_tokens[0].api_key
761 764 return 'NO_ARTIFACT_TOKEN_AVAILABLE'
762 765
766 def get_or_create_artifact_token(self):
767 artifacts_tokens = UserApiKeys.query()\
768 .filter(UserApiKeys.user == self) \
769 .filter(or_(UserApiKeys.expires == -1,
770 UserApiKeys.expires >= time.time())) \
771 .filter(UserApiKeys.role == UserApiKeys.ROLE_ARTIFACT_DOWNLOAD)
772
773 artifacts_tokens = artifacts_tokens.all()
774 if artifacts_tokens:
775 return artifacts_tokens[0].api_key
776 else:
777 from rhodecode.model.auth_token import AuthTokenModel
778 artifact_token = AuthTokenModel().create(
779 self, 'auto-generated-artifact-token',
780 lifetime=-1, role=UserApiKeys.ROLE_ARTIFACT_DOWNLOAD)
781 Session.commit()
782 return artifact_token.api_key
783
763 784 @classmethod
764 785 def get(cls, user_id, cache=False):
765 786 if not user_id:
@@ -3967,7 +3988,7 b' class ChangesetStatus(Base, BaseModel):'
3967 3988 STATUS_APPROVED = 'approved'
3968 3989 STATUS_REJECTED = 'rejected'
3969 3990 STATUS_UNDER_REVIEW = 'under_review'
3970
3991 CheckConstraint,
3971 3992 STATUSES = [
3972 3993 (STATUS_NOT_REVIEWED, _("Not Reviewed")), # (no icon) and default
3973 3994 (STATUS_APPROVED, _("Approved")),
@@ -4810,6 +4831,7 b' class Gist(Base, BaseModel):'
4810 4831
4811 4832 res = cls.query().filter(cls.gist_access_id == id_).scalar()
4812 4833 if not res:
4834 log.debug('WARN: No DB entry with id %s', id_)
4813 4835 raise HTTPNotFound()
4814 4836 return res
4815 4837
@@ -5322,11 +5344,11 b' class ScheduleEntry(Base, BaseModel):'
5322 5344 except ValueError:
5323 5345 return dict()
5324 5346
5325 def _as_raw(self, val):
5347 def _as_raw(self, val, indent=None):
5326 5348 if hasattr(val, 'de_coerce'):
5327 5349 val = val.de_coerce()
5328 5350 if val:
5329 val = json.dumps(val)
5351 val = json.dumps(val, indent=indent, sort_keys=True)
5330 5352
5331 5353 return val
5332 5354
@@ -5334,13 +5356,11 b' class ScheduleEntry(Base, BaseModel):'
5334 5356 def schedule_definition_raw(self):
5335 5357 return self._as_raw(self.schedule_definition)
5336 5358
5337 @property
5338 def args_raw(self):
5339 return self._as_raw(self.task_args)
5340
5341 @property
5342 def kwargs_raw(self):
5343 return self._as_raw(self.task_kwargs)
5359 def args_raw(self, indent=None):
5360 return self._as_raw(self.task_args, indent)
5361
5362 def kwargs_raw(self, indent=None):
5363 return self._as_raw(self.task_kwargs, indent)
5344 5364
5345 5365 def __repr__(self):
5346 5366 return '<DB:ScheduleEntry({}:{})>'.format(
@@ -60,6 +60,9 b' class RepoGroupModel(BaseModel):'
60 60 return self._get_instance(RepoGroup, repo_group,
61 61 callback=RepoGroup.get_by_group_name)
62 62
63 def get_repo_group(self, repo_group):
64 return self._get_repo_group(repo_group)
65
63 66 @LazyProperty
64 67 def repos_path(self):
65 68 """
@@ -147,6 +147,14 b' class CloneUriValidator(object):'
147 147 def json_validator(node, value):
148 148 try:
149 149 json.loads(value)
150 except (Exception,):
150 except (Exception,) as e:
151 151 msg = _(u'Please enter a valid json object')
152 152 raise colander.Invalid(node, msg)
153
154
155 def json_validator_with_exc(node, value):
156 try:
157 json.loads(value)
158 except (Exception,) as e:
159 msg = _(u'Please enter a valid json object: `{}`'.format(e))
160 raise colander.Invalid(node, msg)
@@ -225,6 +225,7 b' input[type="button"] {'
225 225 }
226 226 }
227 227
228
228 229 .btn-approved-status {
229 230 .border ( @border-thickness, @alert1 );
230 231 background-color: white;
@@ -262,6 +263,10 b' input[type="button"] {'
262 263 border-radius: @border-radius 0 0 @border-radius;
263 264
264 265 }
266 // 2nd, if only 2 elements are there
267 &:nth-of-type(2) {
268 border-left-width: 0;
269 }
265 270 // middle elements
266 271 &:not(:first-of-type):not(:last-of-type) {
267 272 border-radius: 0;
@@ -429,6 +434,31 b' input[type="button"] {'
429 434 }
430 435 }
431 436
437 input[type="submit"].btn-draft {
438 .border ( @border-thickness, @rcblue );
439 background-color: white;
440 color: @rcblue;
441
442 a {
443 color: @rcblue;
444 }
445
446 &:hover,
447 &.active {
448 .border ( @border-thickness, @rcdarkblue );
449 background-color: white;
450 color: @rcdarkblue;
451
452 a {
453 color: @rcdarkblue;
454 }
455 }
456
457 &:disabled {
458 background-color: white;
459 color: @rcblue;
460 }
461 }
432 462
433 463 input[type="submit"].btn-warning {
434 464 &:extend(.btn-warning);
@@ -657,6 +657,7 b' form.comment-form {'
657 657
658 658 .resolve-action {
659 659 padding: 1px 0px 0px 6px;
660 list-style: none;
660 661 }
661 662
662 663 }
@@ -1540,7 +1540,6 b' table.integrations {'
1540 1540 .reviewer_name {
1541 1541 display: inline-block;
1542 1542 max-width: 83%;
1543 padding-right: 20px;
1544 1543 vertical-align: middle;
1545 1544 line-height: 1;
1546 1545
@@ -194,6 +194,7 b''
194 194 .icon-comment-toggle:before { content: '\e830'; } /* '' */
195 195 .icon-rhodecode:before { content: '\e831'; } /* '' */
196 196 .icon-up:before { content: '\e832'; } /* '' */
197 .icon-down:before { content: '\e832'; } /* '' */
197 198 .icon-merge:before { content: '\e833'; } /* '' */
198 199 .icon-spin-alt:before { content: '\e834'; } /* '' */
199 200 .icon-spin:before { content: '\e838'; } /* '' */
@@ -235,6 +236,7 b''
235 236 .icon-rss-sign:before { &:extend(.icon-feed:before); }
236 237 .icon-code-fork:before { &:extend(.icon-fork:before); }
237 238 .icon-arrow_up:before { &:extend(.icon-up:before); }
239 .icon-arrow_down:before { &:extend(.icon-down:before); }
238 240 .icon-file:before { &:extend(.icon-file-code:before); }
239 241 .icon-file-text:before { &:extend(.icon-file-code:before); }
240 242 .icon-directory:before { &:extend(.icon-folder:before); }
@@ -253,6 +255,8 b''
253 255 .icon-merge:before {transform: rotate(180deg);}
254 256 .icon-wide-mode:before {transform: rotate(90deg);}
255 257 .icon-options:before {transform: rotate(90deg);}
258 .icon-down:before {transform: rotate(180deg);}
259
256 260
257 261 // -- END ICON CLASSES -- //
258 262
@@ -47,6 +47,7 b' var _TM = {'
47 47 'Hide full context diff': 'Hide full context diff',
48 48 'Hide whitespace changes': 'Hide whitespace changes',
49 49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
50 'Leave a comment on file {0} line {1}.': 'Leave a comment on file {0} line {1}.',
50 51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 52 'Leave a comment, or click resolve button to resolve TODO comment #{0}': 'Leave a comment, or click resolve button to resolve TODO comment #{0}',
52 53 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}': 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}',
@@ -56,6 +57,7 b' var _TM = {'
56 57 'Loading failed': 'Loading failed',
57 58 'Loading more results...': 'Loading more results...',
58 59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 62 'No branches available yet.': 'No branches available yet.',
61 63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 90 'Saving...': 'Saving...',
88 91 'Searching...': 'Searching...',
89 92 'Selection link': 'Selection link',
@@ -93,6 +96,7 b' var _TM = {'
93 96 'Show': 'Show',
94 97 'Show at Commit ': 'Show at Commit ',
95 98 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
99 'Show commit range {0}<i class="icon-angle-right"></i>{1}': 'Show commit range {0}<i class="icon-angle-right"></i>{1}',
96 100 'Show full context diff': 'Show full context diff',
97 101 'Show more': 'Show more',
98 102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 109 'Status Review': 'Status Review',
106 110 'Stop following this repository': 'Stop following this repository',
107 111 'Stopped watching this repository': 'Stopped watching this repository',
112 'Submit {0} draft comment.': 'Submit {0} draft comment.',
113 'Submit {0} draft comments.': 'Submit {0} draft comments.',
108 114 'Submitting...': 'Submitting...',
109 115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 127 'Unfollow': 'Unfollow',
122 128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 130 'Updated Comment': 'Updated Comment',
124 131 'Updating...': 'Updating...',
125 132 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
133 'User `{0}` already in reviewers/observers': 'User `{0}` already in reviewers/observers',
126 134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 138 'You can only select {0} item': 'You can only select {0} item',
130 139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 165 '{0} ago': '{0} ago',
157 166 '{0} and {1}': '{0} and {1}',
158 167 '{0} and {1} ago': '{0} and {1} ago',
168 '{0} bookmark': '{0} bookmark',
169 '{0} bookmarks': '{0} bookmarks',
170 '{0} branch': '{0} branch',
171 '{0} branches': '{0} branches',
159 172 '{0} day': '{0} day',
160 173 '{0} days': '{0} days',
161 174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 184 '{0} repository groups': '{0} repository groups',
172 185 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
173 186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 47 'Hide full context diff': 'Hide full context diff',
48 48 'Hide whitespace changes': 'Hide whitespace changes',
49 49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
50 'Leave a comment on file {0} line {1}.': 'Leave a comment on file {0} line {1}.',
50 51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 52 'Leave a comment, or click resolve button to resolve TODO comment #{0}': 'Leave a comment, or click resolve button to resolve TODO comment #{0}',
52 53 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}': 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}',
@@ -56,6 +57,7 b' var _TM = {'
56 57 'Loading failed': 'Loading failed',
57 58 'Loading more results...': 'Loading more results...',
58 59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 62 'No branches available yet.': 'No branches available yet.',
61 63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 86 'Please enter {0} or more characters': 'Bitte {0} oder mehr Zeichen eingeben',
85 87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 90 'Saving...': 'Saving...',
88 91 'Searching...': 'Searching...',
89 92 'Selection link': 'Selection link',
@@ -93,6 +96,7 b' var _TM = {'
93 96 'Show': 'Show',
94 97 'Show at Commit ': 'Show at Commit ',
95 98 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
99 'Show commit range {0}<i class="icon-angle-right"></i>{1}': 'Show commit range {0}<i class="icon-angle-right"></i>{1}',
96 100 'Show full context diff': 'Show full context diff',
97 101 'Show more': 'Show more',
98 102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 109 'Status Review': 'Status Review',
106 110 'Stop following this repository': 'Stop following this repository',
107 111 'Stopped watching this repository': 'Stopped watching this repository',
112 'Submit {0} draft comment.': 'Submit {0} draft comment.',
113 'Submit {0} draft comments.': 'Submit {0} draft comments.',
108 114 'Submitting...': 'Submitting...',
109 115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 127 'Unfollow': 'Unfollow',
122 128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 130 'Updated Comment': 'Updated Comment',
124 131 'Updating...': 'Updating...',
125 132 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
133 'User `{0}` already in reviewers/observers': 'User `{0}` already in reviewers/observers',
126 134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 138 'You can only select {0} item': 'You can only select {0} item',
130 139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 165 '{0} ago': '{0} ago',
157 166 '{0} and {1}': '{0} and {1}',
158 167 '{0} and {1} ago': '{0} and {1} ago',
168 '{0} bookmark': '{0} bookmark',
169 '{0} bookmarks': '{0} bookmarks',
170 '{0} branch': '{0} branch',
171 '{0} branches': '{0} branches',
159 172 '{0} day': '{0} day',
160 173 '{0} days': '{0} days',
161 174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 184 '{0} repository groups': '{0} repository groups',
172 185 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
173 186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 47 'Hide full context diff': 'Hide full context diff',
48 48 'Hide whitespace changes': 'Hide whitespace changes',
49 49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
50 'Leave a comment on file {0} line {1}.': 'Leave a comment on file {0} line {1}.',
50 51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 52 'Leave a comment, or click resolve button to resolve TODO comment #{0}': 'Leave a comment, or click resolve button to resolve TODO comment #{0}',
52 53 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}': 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}',
@@ -56,6 +57,7 b' var _TM = {'
56 57 'Loading failed': 'Loading failed',
57 58 'Loading more results...': 'Loading more results...',
58 59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 62 'No branches available yet.': 'No branches available yet.',
61 63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 90 'Saving...': 'Saving...',
88 91 'Searching...': 'Searching...',
89 92 'Selection link': 'Selection link',
@@ -93,6 +96,7 b' var _TM = {'
93 96 'Show': 'Show',
94 97 'Show at Commit ': 'Show at Commit ',
95 98 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
99 'Show commit range {0}<i class="icon-angle-right"></i>{1}': 'Show commit range {0}<i class="icon-angle-right"></i>{1}',
96 100 'Show full context diff': 'Show full context diff',
97 101 'Show more': 'Show more',
98 102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 109 'Status Review': 'Status Review',
106 110 'Stop following this repository': 'Stop following this repository',
107 111 'Stopped watching this repository': 'Stopped watching this repository',
112 'Submit {0} draft comment.': 'Submit {0} draft comment.',
113 'Submit {0} draft comments.': 'Submit {0} draft comments.',
108 114 'Submitting...': 'Submitting...',
109 115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 127 'Unfollow': 'Unfollow',
122 128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 130 'Updated Comment': 'Updated Comment',
124 131 'Updating...': 'Updating...',
125 132 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
133 'User `{0}` already in reviewers/observers': 'User `{0}` already in reviewers/observers',
126 134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 138 'You can only select {0} item': 'You can only select {0} item',
130 139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 165 '{0} ago': '{0} ago',
157 166 '{0} and {1}': '{0} and {1}',
158 167 '{0} and {1} ago': '{0} and {1} ago',
168 '{0} bookmark': '{0} bookmark',
169 '{0} bookmarks': '{0} bookmarks',
170 '{0} branch': '{0} branch',
171 '{0} branches': '{0} branches',
159 172 '{0} day': '{0} day',
160 173 '{0} days': '{0} days',
161 174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 184 '{0} repository groups': '{0} repository groups',
172 185 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
173 186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 47 'Hide full context diff': 'Hide full context diff',
48 48 'Hide whitespace changes': 'Hide whitespace changes',
49 49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
50 'Leave a comment on file {0} line {1}.': 'Leave a comment on file {0} line {1}.',
50 51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 52 'Leave a comment, or click resolve button to resolve TODO comment #{0}': 'Leave a comment, or click resolve button to resolve TODO comment #{0}',
52 53 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}': 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}',
@@ -56,6 +57,7 b' var _TM = {'
56 57 'Loading failed': 'Loading failed',
57 58 'Loading more results...': 'Loading more results...',
58 59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 62 'No branches available yet.': 'No branches available yet.',
61 63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 90 'Saving...': 'Saving...',
88 91 'Searching...': 'Searching...',
89 92 'Selection link': 'Selection link',
@@ -93,6 +96,7 b' var _TM = {'
93 96 'Show': 'Show',
94 97 'Show at Commit ': 'Show at Commit ',
95 98 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
99 'Show commit range {0}<i class="icon-angle-right"></i>{1}': 'Show commit range {0}<i class="icon-angle-right"></i>{1}',
96 100 'Show full context diff': 'Show full context diff',
97 101 'Show more': 'Show more',
98 102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 109 'Status Review': 'Status Review',
106 110 'Stop following this repository': 'Stop following this repository',
107 111 'Stopped watching this repository': 'Stopped watching this repository',
112 'Submit {0} draft comment.': 'Submit {0} draft comment.',
113 'Submit {0} draft comments.': 'Submit {0} draft comments.',
108 114 'Submitting...': 'Submitting...',
109 115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 127 'Unfollow': 'Unfollow',
122 128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 130 'Updated Comment': 'Updated Comment',
124 131 'Updating...': 'Updating...',
125 132 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
133 'User `{0}` already in reviewers/observers': 'User `{0}` already in reviewers/observers',
126 134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 138 'You can only select {0} item': 'You can only select {0} item',
130 139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 165 '{0} ago': '{0} ago',
157 166 '{0} and {1}': '{0} and {1}',
158 167 '{0} and {1} ago': '{0} and {1} ago',
168 '{0} bookmark': '{0} bookmark',
169 '{0} bookmarks': '{0} bookmarks',
170 '{0} branch': '{0} branch',
171 '{0} branches': '{0} branches',
159 172 '{0} day': '{0} day',
160 173 '{0} days': '{0} days',
161 174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 184 '{0} repository groups': '{0} repository groups',
172 185 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
173 186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 47 'Hide full context diff': 'Hide full context diff',
48 48 'Hide whitespace changes': 'Hide whitespace changes',
49 49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
50 'Leave a comment on file {0} line {1}.': 'Leave a comment on file {0} line {1}.',
50 51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 52 'Leave a comment, or click resolve button to resolve TODO comment #{0}': 'Leave a comment, or click resolve button to resolve TODO comment #{0}',
52 53 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}': 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}',
@@ -56,6 +57,7 b' var _TM = {'
56 57 'Loading failed': 'Loading failed',
57 58 'Loading more results...': 'Loading more results...',
58 59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 62 'No branches available yet.': 'No branches available yet.',
61 63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 90 'Saving...': 'Saving...',
88 91 'Searching...': 'Searching...',
89 92 'Selection link': 'Lien vers la sélection',
@@ -93,6 +96,7 b' var _TM = {'
93 96 'Show': 'Show',
94 97 'Show at Commit ': 'Show at Commit ',
95 98 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
99 'Show commit range {0}<i class="icon-angle-right"></i>{1}': 'Show commit range {0}<i class="icon-angle-right"></i>{1}',
96 100 'Show full context diff': 'Show full context diff',
97 101 'Show more': 'Show more',
98 102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 109 'Status Review': 'Status Review',
106 110 'Stop following this repository': 'Arrêter de suivre ce dépôt',
107 111 'Stopped watching this repository': 'Stopped watching this repository',
112 'Submit {0} draft comment.': 'Submit {0} draft comment.',
113 'Submit {0} draft comments.': 'Submit {0} draft comments.',
108 114 'Submitting...': 'Envoi…',
109 115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 127 'Unfollow': 'Unfollow',
122 128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 130 'Updated Comment': 'Updated Comment',
124 131 'Updating...': 'Updating...',
125 132 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
133 'User `{0}` already in reviewers/observers': 'User `{0}` already in reviewers/observers',
126 134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 138 'You can only select {0} item': 'You can only select {0} item',
130 139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 165 '{0} ago': '{0} ago',
157 166 '{0} and {1}': '{0} and {1}',
158 167 '{0} and {1} ago': '{0} and {1} ago',
168 '{0} bookmark': '{0} bookmark',
169 '{0} bookmarks': '{0} bookmarks',
170 '{0} branch': '{0} branch',
171 '{0} branches': '{0} branches',
159 172 '{0} day': '{0} day',
160 173 '{0} days': '{0} jours',
161 174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 184 '{0} repository groups': '{0} repository groups',
172 185 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
173 186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 47 'Hide full context diff': 'Hide full context diff',
48 48 'Hide whitespace changes': 'Hide whitespace changes',
49 49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
50 'Leave a comment on file {0} line {1}.': 'Leave a comment on file {0} line {1}.',
50 51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 52 'Leave a comment, or click resolve button to resolve TODO comment #{0}': 'Leave a comment, or click resolve button to resolve TODO comment #{0}',
52 53 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}': 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}',
@@ -56,6 +57,7 b' var _TM = {'
56 57 'Loading failed': 'Loading failed',
57 58 'Loading more results...': 'Loading more results...',
58 59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 62 'No branches available yet.': 'No branches available yet.',
61 63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 90 'Saving...': 'Saving...',
88 91 'Searching...': 'Searching...',
89 92 'Selection link': 'Collegamento selezione',
@@ -93,6 +96,7 b' var _TM = {'
93 96 'Show': 'Show',
94 97 'Show at Commit ': 'Show at Commit ',
95 98 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
99 'Show commit range {0}<i class="icon-angle-right"></i>{1}': 'Show commit range {0}<i class="icon-angle-right"></i>{1}',
96 100 'Show full context diff': 'Show full context diff',
97 101 'Show more': 'Mostra ancora',
98 102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 109 'Status Review': 'Status Review',
106 110 'Stop following this repository': 'Smetti di seguire il repository',
107 111 'Stopped watching this repository': 'Stopped watching this repository',
112 'Submit {0} draft comment.': 'Submit {0} draft comment.',
113 'Submit {0} draft comments.': 'Submit {0} draft comments.',
108 114 'Submitting...': 'Inoltro...',
109 115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 127 'Unfollow': 'Smetti di seguire',
122 128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 130 'Updated Comment': 'Updated Comment',
124 131 'Updating...': 'Updating...',
125 132 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
133 'User `{0}` already in reviewers/observers': 'User `{0}` already in reviewers/observers',
126 134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 138 'You can only select {0} item': 'You can only select {0} item',
130 139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 165 '{0} ago': '{0} ago',
157 166 '{0} and {1}': '{0} and {1}',
158 167 '{0} and {1} ago': '{0} and {1} ago',
168 '{0} bookmark': '{0} bookmark',
169 '{0} bookmarks': '{0} bookmarks',
170 '{0} branch': '{0} branch',
171 '{0} branches': '{0} branches',
159 172 '{0} day': '{0} day',
160 173 '{0} days': '{0} days',
161 174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 184 '{0} repository groups': '{0} repository groups',
172 185 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
173 186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 47 'Hide full context diff': 'Hide full context diff',
48 48 'Hide whitespace changes': 'Hide whitespace changes',
49 49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
50 'Leave a comment on file {0} line {1}.': 'Leave a comment on file {0} line {1}.',
50 51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 52 'Leave a comment, or click resolve button to resolve TODO comment #{0}': 'Leave a comment, or click resolve button to resolve TODO comment #{0}',
52 53 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}': 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}',
@@ -56,6 +57,7 b' var _TM = {'
56 57 'Loading failed': '読み込み失敗',
57 58 'Loading more results...': '結果を読み込み中...',
58 59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 61 'No bookmarks available yet.': 'まだブックマークがありません。',
60 62 'No branches available yet.': 'まだブランチがありません。',
61 63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 86 'Please enter {0} or more characters': '{0} 文字以上入力してください',
85 87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 90 'Saving...': 'Saving...',
88 91 'Searching...': '検索中...',
89 92 'Selection link': 'セレクション・リンク',
@@ -93,6 +96,7 b' var _TM = {'
93 96 'Show': 'Show',
94 97 'Show at Commit ': 'Show at Commit ',
95 98 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
99 'Show commit range {0}<i class="icon-angle-right"></i>{1}': 'Show commit range {0}<i class="icon-angle-right"></i>{1}',
96 100 'Show full context diff': 'Show full context diff',
97 101 'Show more': 'もっと表示',
98 102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 109 'Status Review': 'ステータスレビュー',
106 110 'Stop following this repository': 'このリポジトリのフォローをやめる',
107 111 'Stopped watching this repository': 'Stopped watching this repository',
112 'Submit {0} draft comment.': 'Submit {0} draft comment.',
113 'Submit {0} draft comments.': 'Submit {0} draft comments.',
108 114 'Submitting...': '送信中...',
109 115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 127 'Unfollow': 'アンフォロー',
122 128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 130 'Updated Comment': 'Updated Comment',
124 131 'Updating...': 'Updating...',
125 132 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
133 'User `{0}` already in reviewers/observers': 'User `{0}` already in reviewers/observers',
126 134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 138 'You can only select {0} item': '{0} 件のみ選択できます',
130 139 'You can only select {0} items': '{0} 件のみ選択できます',
@@ -156,6 +165,10 b' var _TM = {'
156 165 '{0} ago': '{0} 前',
157 166 '{0} and {1}': '{0} and {1}',
158 167 '{0} and {1} ago': '{0} and {1} ago',
168 '{0} bookmark': '{0} bookmark',
169 '{0} bookmarks': '{0} bookmarks',
170 '{0} branch': '{0} branch',
171 '{0} branches': '{0} branches',
159 172 '{0} day': '{0} 日',
160 173 '{0} days': '{0} days',
161 174 '{0} hour': '{0} 時間',
@@ -171,6 +184,8 b' var _TM = {'
171 184 '{0} repository groups': '{0} repository groups',
172 185 '{0} results are available, use up and down arrow keys to navigate.': '{0} 件の結果があります。矢印キーの上下で選択できます。',
173 186 '{0} sec': '{0} 秒',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 191 '{0} year': '{0} 年',
@@ -41,6 +41,7 b''
41 41 _gettext('Hide full context diff');
42 42 _gettext('Hide whitespace changes');
43 43 _gettext('Invite reviewers to this discussion');
44 _gettext('Leave a comment on file {0} line {1}.');
44 45 _gettext('Leave a comment on line {0}.');
45 46 _gettext('Leave a comment, or click resolve button to resolve TODO comment #{0}');
46 47 _gettext('Leave a resolution comment, or click resolve button to resolve TODO comment #{0}');
@@ -50,6 +51,7 b''
50 51 _gettext('Loading failed');
51 52 _gettext('Loading more results...');
52 53 _gettext('Loading...');
54 _gettext('No additional review rules set.');
53 55 _gettext('No bookmarks available yet.');
54 56 _gettext('No branches available yet.');
55 57 _gettext('No forks available yet.');
@@ -78,6 +80,7 b''
78 80 _gettext('Please enter {0} or more characters');
79 81 _gettext('Please wait creating pull request...');
80 82 _gettext('Reviewers picked from source code changes.');
83 _gettext('Saving Draft...');
81 84 _gettext('Saving...');
82 85 _gettext('Searching...');
83 86 _gettext('Selection link');
@@ -87,6 +90,7 b''
87 90 _gettext('Show');
88 91 _gettext('Show at Commit ');
89 92 _gettext('Show commit range {0} ... {1}');
93 _gettext('Show commit range {0}<i class="icon-angle-right"></i>{1}');
90 94 _gettext('Show full context diff');
91 95 _gettext('Show more');
92 96 _gettext('Show selected commit __S');
@@ -99,6 +103,8 b''
99 103 _gettext('Status Review');
100 104 _gettext('Stop following this repository');
101 105 _gettext('Stopped watching this repository');
106 _gettext('Submit {0} draft comment.');
107 _gettext('Submit {0} draft comments.');
102 108 _gettext('Submitting...');
103 109 _gettext('Switch target repository with the source.');
104 110 _gettext('Switch to chat');
@@ -114,11 +120,14 b''
114 120 _gettext('Toggle Wide Mode diff');
115 121 _gettext('Unfollow');
116 122 _gettext('Unwatch');
123 _gettext('Update Comment');
117 124 _gettext('Updated Comment');
118 125 _gettext('Updating...');
119 126 _gettext('User `{0}` already in reviewers');
127 _gettext('User `{0}` already in reviewers/observers');
120 128 _gettext('User `{0}` not allowed to be a reviewer');
121 129 _gettext('Watch');
130 _gettext('Yes');
122 131 _gettext('Yes, delete comment #{0}!');
123 132 _gettext('You can only select {0} item');
124 133 _gettext('You can only select {0} items');
@@ -150,6 +159,10 b''
150 159 _gettext('{0} ago');
151 160 _gettext('{0} and {1}');
152 161 _gettext('{0} and {1} ago');
162 _gettext('{0} bookmark');
163 _gettext('{0} bookmarks');
164 _gettext('{0} branch');
165 _gettext('{0} branches');
153 166 _gettext('{0} day');
154 167 _gettext('{0} days');
155 168 _gettext('{0} hour');
@@ -165,6 +178,8 b''
165 178 _gettext('{0} repository groups');
166 179 _gettext('{0} results are available, use up and down arrow keys to navigate.');
167 180 _gettext('{0} sec');
181 _gettext('{0} tag');
182 _gettext('{0} tags');
168 183 _gettext('{0} user groups ({1} inactive)');
169 184 _gettext('{0} users ({1} inactive)');
170 185 _gettext('{0} year');
@@ -47,6 +47,7 b' var _TM = {'
47 47 'Hide full context diff': 'Hide full context diff',
48 48 'Hide whitespace changes': 'Hide whitespace changes',
49 49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
50 'Leave a comment on file {0} line {1}.': 'Leave a comment on file {0} line {1}.',
50 51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 52 'Leave a comment, or click resolve button to resolve TODO comment #{0}': 'Leave a comment, or click resolve button to resolve TODO comment #{0}',
52 53 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}': 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}',
@@ -56,6 +57,7 b' var _TM = {'
56 57 'Loading failed': 'Loading failed',
57 58 'Loading more results...': 'Loading more results...',
58 59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 62 'No branches available yet.': 'No branches available yet.',
61 63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 90 'Saving...': 'Saving...',
88 91 'Searching...': 'Searching...',
89 92 'Selection link': 'Wybór linku',
@@ -93,6 +96,7 b' var _TM = {'
93 96 'Show': 'Show',
94 97 'Show at Commit ': 'Show at Commit ',
95 98 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
99 'Show commit range {0}<i class="icon-angle-right"></i>{1}': 'Show commit range {0}<i class="icon-angle-right"></i>{1}',
96 100 'Show full context diff': 'Show full context diff',
97 101 'Show more': 'Pokaż więcej',
98 102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 109 'Status Review': 'Status Review',
106 110 'Stop following this repository': 'Zakończyć obserwację tego repozytorium',
107 111 'Stopped watching this repository': 'Stopped watching this repository',
112 'Submit {0} draft comment.': 'Submit {0} draft comment.',
113 'Submit {0} draft comments.': 'Submit {0} draft comments.',
108 114 'Submitting...': 'Przesyłanie...',
109 115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 127 'Unfollow': 'Nie obserwuj',
122 128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 130 'Updated Comment': 'Updated Comment',
124 131 'Updating...': 'Updating...',
125 132 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
133 'User `{0}` already in reviewers/observers': 'User `{0}` already in reviewers/observers',
126 134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 138 'You can only select {0} item': 'You can only select {0} item',
130 139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 165 '{0} ago': '{0} ago',
157 166 '{0} and {1}': '{0} and {1}',
158 167 '{0} and {1} ago': '{0} and {1} ago',
168 '{0} bookmark': '{0} bookmark',
169 '{0} bookmarks': '{0} bookmarks',
170 '{0} branch': '{0} branch',
171 '{0} branches': '{0} branches',
159 172 '{0} day': '{0} day',
160 173 '{0} days': '{0} days',
161 174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 184 '{0} repository groups': '{0} repository groups',
172 185 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
173 186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 47 'Hide full context diff': 'Hide full context diff',
48 48 'Hide whitespace changes': 'Hide whitespace changes',
49 49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
50 'Leave a comment on file {0} line {1}.': 'Leave a comment on file {0} line {1}.',
50 51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 52 'Leave a comment, or click resolve button to resolve TODO comment #{0}': 'Leave a comment, or click resolve button to resolve TODO comment #{0}',
52 53 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}': 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}',
@@ -56,6 +57,7 b' var _TM = {'
56 57 'Loading failed': 'Loading failed',
57 58 'Loading more results...': 'Loading more results...',
58 59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 62 'No branches available yet.': 'No branches available yet.',
61 63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 90 'Saving...': 'Saving...',
88 91 'Searching...': 'Searching...',
89 92 'Selection link': 'Link da seleção',
@@ -93,6 +96,7 b' var _TM = {'
93 96 'Show': 'Show',
94 97 'Show at Commit ': 'Show at Commit ',
95 98 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
99 'Show commit range {0}<i class="icon-angle-right"></i>{1}': 'Show commit range {0}<i class="icon-angle-right"></i>{1}',
96 100 'Show full context diff': 'Show full context diff',
97 101 'Show more': 'Mostrar mais',
98 102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 109 'Status Review': 'Status Review',
106 110 'Stop following this repository': 'Parar de seguir este repositório',
107 111 'Stopped watching this repository': 'Stopped watching this repository',
112 'Submit {0} draft comment.': 'Submit {0} draft comment.',
113 'Submit {0} draft comments.': 'Submit {0} draft comments.',
108 114 'Submitting...': 'Enviando...',
109 115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 127 'Unfollow': 'Parar de seguir',
122 128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 130 'Updated Comment': 'Updated Comment',
124 131 'Updating...': 'Updating...',
125 132 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
133 'User `{0}` already in reviewers/observers': 'User `{0}` already in reviewers/observers',
126 134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 138 'You can only select {0} item': 'You can only select {0} item',
130 139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 165 '{0} ago': '{0} ago',
157 166 '{0} and {1}': '{0} and {1}',
158 167 '{0} and {1} ago': '{0} and {1} ago',
168 '{0} bookmark': '{0} bookmark',
169 '{0} bookmarks': '{0} bookmarks',
170 '{0} branch': '{0} branch',
171 '{0} branches': '{0} branches',
159 172 '{0} day': '{0} day',
160 173 '{0} days': '{0} days',
161 174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 184 '{0} repository groups': '{0} repository groups',
172 185 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
173 186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 47 'Hide full context diff': 'Hide full context diff',
48 48 'Hide whitespace changes': 'Hide whitespace changes',
49 49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
50 'Leave a comment on file {0} line {1}.': 'Leave a comment on file {0} line {1}.',
50 51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 52 'Leave a comment, or click resolve button to resolve TODO comment #{0}': 'Leave a comment, or click resolve button to resolve TODO comment #{0}',
52 53 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}': 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}',
@@ -56,6 +57,7 b' var _TM = {'
56 57 'Loading failed': 'Loading failed',
57 58 'Loading more results...': 'Loading more results...',
58 59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 62 'No branches available yet.': 'No branches available yet.',
61 63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 90 'Saving...': 'Saving...',
88 91 'Searching...': 'Searching...',
89 92 'Selection link': 'Ссылка выбора',
@@ -93,6 +96,7 b' var _TM = {'
93 96 'Show': 'Show',
94 97 'Show at Commit ': 'Show at Commit ',
95 98 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
99 'Show commit range {0}<i class="icon-angle-right"></i>{1}': 'Show commit range {0}<i class="icon-angle-right"></i>{1}',
96 100 'Show full context diff': 'Show full context diff',
97 101 'Show more': 'Показать еще',
98 102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 109 'Status Review': 'Status Review',
106 110 'Stop following this repository': 'Отменить наблюдение за репозиторием',
107 111 'Stopped watching this repository': 'Stopped watching this repository',
112 'Submit {0} draft comment.': 'Submit {0} draft comment.',
113 'Submit {0} draft comments.': 'Submit {0} draft comments.',
108 114 'Submitting...': 'Применение...',
109 115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 127 'Unfollow': 'Не наблюдать',
122 128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 130 'Updated Comment': 'Updated Comment',
124 131 'Updating...': 'Updating...',
125 132 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
133 'User `{0}` already in reviewers/observers': 'User `{0}` already in reviewers/observers',
126 134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 138 'You can only select {0} item': 'You can only select {0} item',
130 139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 165 '{0} ago': '{0} ago',
157 166 '{0} and {1}': '{0} and {1}',
158 167 '{0} and {1} ago': '{0} and {1} ago',
168 '{0} bookmark': '{0} bookmark',
169 '{0} bookmarks': '{0} bookmarks',
170 '{0} branch': '{0} branch',
171 '{0} branches': '{0} branches',
159 172 '{0} day': '{0} day',
160 173 '{0} days': '{0} days',
161 174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 184 '{0} repository groups': '{0} repository groups',
172 185 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
173 186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 47 'Hide full context diff': 'Hide full context diff',
48 48 'Hide whitespace changes': 'Hide whitespace changes',
49 49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
50 'Leave a comment on file {0} line {1}.': 'Leave a comment on file {0} line {1}.',
50 51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 52 'Leave a comment, or click resolve button to resolve TODO comment #{0}': 'Leave a comment, or click resolve button to resolve TODO comment #{0}',
52 53 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}': 'Leave a resolution comment, or click resolve button to resolve TODO comment #{0}',
@@ -56,6 +57,7 b' var _TM = {'
56 57 'Loading failed': 'Loading failed',
57 58 'Loading more results...': 'Loading more results...',
58 59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 62 'No branches available yet.': 'No branches available yet.',
61 63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 90 'Saving...': 'Saving...',
88 91 'Searching...': 'Searching...',
89 92 'Selection link': '选择链接',
@@ -93,6 +96,7 b' var _TM = {'
93 96 'Show': 'Show',
94 97 'Show at Commit ': 'Show at Commit ',
95 98 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
99 'Show commit range {0}<i class="icon-angle-right"></i>{1}': 'Show commit range {0}<i class="icon-angle-right"></i>{1}',
96 100 'Show full context diff': 'Show full context diff',
97 101 'Show more': 'Show more',
98 102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 109 'Status Review': 'Status Review',
106 110 'Stop following this repository': '停止关注该版本库',
107 111 'Stopped watching this repository': 'Stopped watching this repository',
112 'Submit {0} draft comment.': 'Submit {0} draft comment.',
113 'Submit {0} draft comments.': 'Submit {0} draft comments.',
108 114 'Submitting...': '提交中……',
109 115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 127 'Unfollow': 'Unfollow',
122 128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 130 'Updated Comment': 'Updated Comment',
124 131 'Updating...': 'Updating...',
125 132 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
133 'User `{0}` already in reviewers/observers': 'User `{0}` already in reviewers/observers',
126 134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 138 'You can only select {0} item': 'You can only select {0} item',
130 139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 165 '{0} ago': '{0} ago',
157 166 '{0} and {1}': '{0} and {1}',
158 167 '{0} and {1} ago': '{0} and {1} ago',
168 '{0} bookmark': '{0} bookmark',
169 '{0} bookmarks': '{0} bookmarks',
170 '{0} branch': '{0} branch',
171 '{0} branches': '{0} branches',
159 172 '{0} day': '{0} day',
160 173 '{0} days': '{0} days',
161 174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 184 '{0} repository groups': '{0} repository groups',
172 185 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
173 186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 191 '{0} year': '{0} year',
This diff has been collapsed as it changes many lines, (696 lines changed) Show them Hide them
@@ -12,394 +12,394 b''
12 12 ******************************************************************************/
13 13 function registerRCRoutes() {
14 14 // routes registration
15 pyroutes.register('favicon', '/favicon.ico', []);
16 pyroutes.register('robots', '/robots.txt', []);
17 pyroutes.register('auth_home', '/_admin/auth*traverse', []);
18 pyroutes.register('global_integrations_new', '/_admin/integrations/new', []);
19 pyroutes.register('global_integrations_home', '/_admin/integrations', []);
20 pyroutes.register('global_integrations_list', '/_admin/integrations/%(integration)s', ['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']);
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']);
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']);
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']);
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']);
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']);
33 pyroutes.register('hovercard_user', '/_hovercard/user/%(user_id)s', ['user_id']);
34 pyroutes.register('hovercard_username', '/_hovercard/username/%(username)s', ['username']);
35 pyroutes.register('hovercard_user_group', '/_hovercard/user_group/%(user_group_id)s', ['user_group_id']);
36 pyroutes.register('hovercard_pull_request', '/_hovercard/pull_request/%(pull_request_id)s', ['pull_request_id']);
37 pyroutes.register('hovercard_repo_commit', '/_hovercard/commit/%(repo_name)s/%(commit_id)s', ['repo_name', 'commit_id']);
38 pyroutes.register('ops_ping', '/_admin/ops/ping', []);
39 pyroutes.register('ops_error_test', '/_admin/ops/error', []);
40 pyroutes.register('ops_redirect_test', '/_admin/ops/redirect', []);
41 pyroutes.register('ops_ping_legacy', '/_admin/ping', []);
42 pyroutes.register('ops_error_test_legacy', '/_admin/error_test', []);
43 pyroutes.register('admin_home', '/_admin', []);
15 pyroutes.register('admin_audit_log_entry', '/_admin/audit_logs/%(audit_log_id)s', ['audit_log_id']);
44 16 pyroutes.register('admin_audit_logs', '/_admin/audit_logs', []);
45 pyroutes.register('admin_audit_log_entry', '/_admin/audit_logs/%(audit_log_id)s', ['audit_log_id']);
46 pyroutes.register('pull_requests_global_0', '/_admin/pull_requests/%(pull_request_id)s', ['pull_request_id']);
47 pyroutes.register('pull_requests_global_1', '/_admin/pull-requests/%(pull_request_id)s', ['pull_request_id']);
48 pyroutes.register('pull_requests_global', '/_admin/pull-request/%(pull_request_id)s', ['pull_request_id']);
49 pyroutes.register('admin_settings_open_source', '/_admin/settings/open_source', []);
50 pyroutes.register('admin_settings_vcs_svn_generate_cfg', '/_admin/settings/vcs/svn_generate_cfg', []);
51 pyroutes.register('admin_settings_system', '/_admin/settings/system', []);
52 pyroutes.register('admin_settings_system_update', '/_admin/settings/system/updates', []);
53 pyroutes.register('admin_settings_exception_tracker', '/_admin/settings/exceptions', []);
54 pyroutes.register('admin_settings_exception_tracker_delete_all', '/_admin/settings/exceptions/delete', []);
55 pyroutes.register('admin_settings_exception_tracker_show', '/_admin/settings/exceptions/%(exception_id)s', ['exception_id']);
56 pyroutes.register('admin_settings_exception_tracker_delete', '/_admin/settings/exceptions/%(exception_id)s/delete', ['exception_id']);
57 pyroutes.register('admin_settings_sessions', '/_admin/settings/sessions', []);
58 pyroutes.register('admin_settings_sessions_cleanup', '/_admin/settings/sessions/cleanup', []);
59 pyroutes.register('admin_settings_process_management', '/_admin/settings/process_management', []);
60 pyroutes.register('admin_settings_process_management_data', '/_admin/settings/process_management/data', []);
61 pyroutes.register('admin_settings_process_management_signal', '/_admin/settings/process_management/signal', []);
62 pyroutes.register('admin_settings_process_management_master_signal', '/_admin/settings/process_management/master_signal', []);
63 17 pyroutes.register('admin_defaults_repositories', '/_admin/defaults/repositories', []);
64 18 pyroutes.register('admin_defaults_repositories_update', '/_admin/defaults/repositories/update', []);
65 pyroutes.register('admin_settings', '/_admin/settings', []);
66 pyroutes.register('admin_settings_update', '/_admin/settings/update', []);
67 pyroutes.register('admin_settings_global', '/_admin/settings/global', []);
68 pyroutes.register('admin_settings_global_update', '/_admin/settings/global/update', []);
69 pyroutes.register('admin_settings_vcs', '/_admin/settings/vcs', []);
70 pyroutes.register('admin_settings_vcs_update', '/_admin/settings/vcs/update', []);
71 pyroutes.register('admin_settings_vcs_svn_pattern_delete', '/_admin/settings/vcs/svn_pattern_delete', []);
72 pyroutes.register('admin_settings_mapping', '/_admin/settings/mapping', []);
73 pyroutes.register('admin_settings_mapping_update', '/_admin/settings/mapping/update', []);
74 pyroutes.register('admin_settings_visual', '/_admin/settings/visual', []);
75 pyroutes.register('admin_settings_visual_update', '/_admin/settings/visual/update', []);
76 pyroutes.register('admin_settings_issuetracker', '/_admin/settings/issue-tracker', []);
77 pyroutes.register('admin_settings_issuetracker_update', '/_admin/settings/issue-tracker/update', []);
78 pyroutes.register('admin_settings_issuetracker_test', '/_admin/settings/issue-tracker/test', []);
79 pyroutes.register('admin_settings_issuetracker_delete', '/_admin/settings/issue-tracker/delete', []);
80 pyroutes.register('admin_settings_email', '/_admin/settings/email', []);
81 pyroutes.register('admin_settings_email_update', '/_admin/settings/email/update', []);
82 pyroutes.register('admin_settings_hooks', '/_admin/settings/hooks', []);
83 pyroutes.register('admin_settings_hooks_update', '/_admin/settings/hooks/update', []);
84 pyroutes.register('admin_settings_hooks_delete', '/_admin/settings/hooks/delete', []);
85 pyroutes.register('admin_settings_search', '/_admin/settings/search', []);
86 pyroutes.register('admin_settings_labs', '/_admin/settings/labs', []);
87 pyroutes.register('admin_settings_labs_update', '/_admin/settings/labs/update', []);
19 pyroutes.register('admin_home', '/_admin', []);
88 20 pyroutes.register('admin_permissions_application', '/_admin/permissions/application', []);
89 21 pyroutes.register('admin_permissions_application_update', '/_admin/permissions/application/update', []);
22 pyroutes.register('admin_permissions_auth_token_access', '/_admin/permissions/auth_token_access', []);
23 pyroutes.register('admin_permissions_branch', '/_admin/permissions/branch', []);
24 pyroutes.register('admin_permissions_branch_update', '/_admin/permissions/branch/update', []);
90 25 pyroutes.register('admin_permissions_global', '/_admin/permissions/global', []);
91 26 pyroutes.register('admin_permissions_global_update', '/_admin/permissions/global/update', []);
27 pyroutes.register('admin_permissions_ips', '/_admin/permissions/ips', []);
92 28 pyroutes.register('admin_permissions_object', '/_admin/permissions/object', []);
93 29 pyroutes.register('admin_permissions_object_update', '/_admin/permissions/object/update', []);
94 pyroutes.register('admin_permissions_ips', '/_admin/permissions/ips', []);
95 30 pyroutes.register('admin_permissions_overview', '/_admin/permissions/overview', []);
96 pyroutes.register('admin_permissions_auth_token_access', '/_admin/permissions/auth_token_access', []);
97 31 pyroutes.register('admin_permissions_ssh_keys', '/_admin/permissions/ssh_keys', []);
98 32 pyroutes.register('admin_permissions_ssh_keys_data', '/_admin/permissions/ssh_keys/data', []);
99 33 pyroutes.register('admin_permissions_ssh_keys_update', '/_admin/permissions/ssh_keys/update', []);
100 pyroutes.register('users', '/_admin/users', []);
101 pyroutes.register('users_data', '/_admin/users_data', []);
102 pyroutes.register('users_create', '/_admin/users/create', []);
103 pyroutes.register('users_new', '/_admin/users/new', []);
104 pyroutes.register('user_edit', '/_admin/users/%(user_id)s/edit', ['user_id']);
105 pyroutes.register('user_edit_advanced', '/_admin/users/%(user_id)s/edit/advanced', ['user_id']);
106 pyroutes.register('user_edit_global_perms', '/_admin/users/%(user_id)s/edit/global_permissions', ['user_id']);
107 pyroutes.register('user_edit_global_perms_update', '/_admin/users/%(user_id)s/edit/global_permissions/update', ['user_id']);
108 pyroutes.register('user_update', '/_admin/users/%(user_id)s/update', ['user_id']);
109 pyroutes.register('user_delete', '/_admin/users/%(user_id)s/delete', ['user_id']);
110 pyroutes.register('user_enable_force_password_reset', '/_admin/users/%(user_id)s/password_reset_enable', ['user_id']);
111 pyroutes.register('user_disable_force_password_reset', '/_admin/users/%(user_id)s/password_reset_disable', ['user_id']);
112 pyroutes.register('user_create_personal_repo_group', '/_admin/users/%(user_id)s/create_repo_group', ['user_id']);
113 pyroutes.register('user_notice_dismiss', '/_admin/users/%(user_id)s/notice_dismiss', ['user_id']);
34 pyroutes.register('admin_settings', '/_admin/settings', []);
35 pyroutes.register('admin_settings_automation', '/_admin/settings/automation', []);
36 pyroutes.register('admin_settings_automation_update', '/_admin/settings/automation/%(entry_id)s/update', ['entry_id']);
37 pyroutes.register('admin_settings_email', '/_admin/settings/email', []);
38 pyroutes.register('admin_settings_email_update', '/_admin/settings/email/update', []);
39 pyroutes.register('admin_settings_exception_tracker', '/_admin/settings/exceptions', []);
40 pyroutes.register('admin_settings_exception_tracker_delete', '/_admin/settings/exceptions/%(exception_id)s/delete', ['exception_id']);
41 pyroutes.register('admin_settings_exception_tracker_delete_all', '/_admin/settings/exceptions_delete_all', []);
42 pyroutes.register('admin_settings_exception_tracker_show', '/_admin/settings/exceptions/%(exception_id)s', ['exception_id']);
43 pyroutes.register('admin_settings_global', '/_admin/settings/global', []);
44 pyroutes.register('admin_settings_global_update', '/_admin/settings/global/update', []);
45 pyroutes.register('admin_settings_hooks', '/_admin/settings/hooks', []);
46 pyroutes.register('admin_settings_hooks_delete', '/_admin/settings/hooks/delete', []);
47 pyroutes.register('admin_settings_hooks_update', '/_admin/settings/hooks/update', []);
48 pyroutes.register('admin_settings_issuetracker', '/_admin/settings/issue-tracker', []);
49 pyroutes.register('admin_settings_issuetracker_delete', '/_admin/settings/issue-tracker/delete', []);
50 pyroutes.register('admin_settings_issuetracker_test', '/_admin/settings/issue-tracker/test', []);
51 pyroutes.register('admin_settings_issuetracker_update', '/_admin/settings/issue-tracker/update', []);
52 pyroutes.register('admin_settings_labs', '/_admin/settings/labs', []);
53 pyroutes.register('admin_settings_labs_update', '/_admin/settings/labs/update', []);
54 pyroutes.register('admin_settings_license', '/_admin/settings/license', []);
55 pyroutes.register('admin_settings_license_unlock', '/_admin/settings/license_unlock', []);
56 pyroutes.register('admin_settings_mapping', '/_admin/settings/mapping', []);
57 pyroutes.register('admin_settings_mapping_update', '/_admin/settings/mapping/update', []);
58 pyroutes.register('admin_settings_open_source', '/_admin/settings/open_source', []);
59 pyroutes.register('admin_settings_process_management', '/_admin/settings/process_management', []);
60 pyroutes.register('admin_settings_process_management_data', '/_admin/settings/process_management/data', []);
61 pyroutes.register('admin_settings_process_management_master_signal', '/_admin/settings/process_management/master_signal', []);
62 pyroutes.register('admin_settings_process_management_signal', '/_admin/settings/process_management/signal', []);
63 pyroutes.register('admin_settings_scheduler_create', '/_admin/settings/scheduler/create', []);
64 pyroutes.register('admin_settings_scheduler_delete', '/_admin/settings/scheduler/%(schedule_id)s/delete', ['schedule_id']);
65 pyroutes.register('admin_settings_scheduler_edit', '/_admin/settings/scheduler/%(schedule_id)s', ['schedule_id']);
66 pyroutes.register('admin_settings_scheduler_execute', '/_admin/settings/scheduler/%(schedule_id)s/execute', ['schedule_id']);
67 pyroutes.register('admin_settings_scheduler_new', '/_admin/settings/scheduler/new', []);
68 pyroutes.register('admin_settings_scheduler_show_all', '/_admin/settings/scheduler', []);
69 pyroutes.register('admin_settings_scheduler_show_tasks', '/_admin/settings/scheduler/_tasks', []);
70 pyroutes.register('admin_settings_scheduler_update', '/_admin/settings/scheduler/%(schedule_id)s/update', ['schedule_id']);
71 pyroutes.register('admin_settings_search', '/_admin/settings/search', []);
72 pyroutes.register('admin_settings_sessions', '/_admin/settings/sessions', []);
73 pyroutes.register('admin_settings_sessions_cleanup', '/_admin/settings/sessions/cleanup', []);
74 pyroutes.register('admin_settings_system', '/_admin/settings/system', []);
75 pyroutes.register('admin_settings_system_update', '/_admin/settings/system/updates', []);
76 pyroutes.register('admin_settings_update', '/_admin/settings/update', []);
77 pyroutes.register('admin_settings_vcs', '/_admin/settings/vcs', []);
78 pyroutes.register('admin_settings_vcs_svn_generate_cfg', '/_admin/settings/vcs/svn_generate_cfg', []);
79 pyroutes.register('admin_settings_vcs_svn_pattern_delete', '/_admin/settings/vcs/svn_pattern_delete', []);
80 pyroutes.register('admin_settings_vcs_update', '/_admin/settings/vcs/update', []);
81 pyroutes.register('admin_settings_visual', '/_admin/settings/visual', []);
82 pyroutes.register('admin_settings_visual_update', '/_admin/settings/visual/update', []);
83 pyroutes.register('apiv2', '/_admin/api', []);
84 pyroutes.register('atom_feed_home', '/%(repo_name)s/feed-atom', ['repo_name']);
85 pyroutes.register('atom_feed_home_old', '/%(repo_name)s/feed/atom', ['repo_name']);
86 pyroutes.register('auth_home', '/_admin/auth*traverse', []);
87 pyroutes.register('bookmarks_home', '/%(repo_name)s/bookmarks', ['repo_name']);
88 pyroutes.register('branches_home', '/%(repo_name)s/branches', ['repo_name']);
89 pyroutes.register('channelstream_connect', '/_admin/channelstream/connect', []);
90 pyroutes.register('channelstream_proxy', '/_channelstream', []);
91 pyroutes.register('channelstream_subscribe', '/_admin/channelstream/subscribe', []);
92 pyroutes.register('commit_draft_comments_submit', '/%(repo_name)s/changeset/%(commit_id)s/draft_comments_submit', ['repo_name', 'commit_id']);
93 pyroutes.register('debug_style_email', '/_admin/debug_style/email/%(email_id)s', ['email_id']);
94 pyroutes.register('debug_style_email_plain_rendered', '/_admin/debug_style/email-rendered/%(email_id)s', ['email_id']);
95 pyroutes.register('debug_style_home', '/_admin/debug_style', []);
96 pyroutes.register('debug_style_template', '/_admin/debug_style/t/%(t_path)s', ['t_path']);
97 pyroutes.register('download_file', '/_file_store/download/%(fid)s', ['fid']);
98 pyroutes.register('download_file_by_token', '/_file_store/token-download/%(_auth_token)s/%(fid)s', ['_auth_token', 'fid']);
99 pyroutes.register('edit_repo', '/%(repo_name)s/settings', ['repo_name']);
100 pyroutes.register('edit_repo_advanced', '/%(repo_name)s/settings/advanced', ['repo_name']);
101 pyroutes.register('edit_repo_advanced_archive', '/%(repo_name)s/settings/advanced/archive', ['repo_name']);
102 pyroutes.register('edit_repo_advanced_delete', '/%(repo_name)s/settings/advanced/delete', ['repo_name']);
103 pyroutes.register('edit_repo_advanced_fork', '/%(repo_name)s/settings/advanced/fork', ['repo_name']);
104 pyroutes.register('edit_repo_advanced_hooks', '/%(repo_name)s/settings/advanced/hooks', ['repo_name']);
105 pyroutes.register('edit_repo_advanced_journal', '/%(repo_name)s/settings/advanced/journal', ['repo_name']);
106 pyroutes.register('edit_repo_advanced_locking', '/%(repo_name)s/settings/advanced/locking', ['repo_name']);
107 pyroutes.register('edit_repo_audit_logs', '/%(repo_name)s/settings/audit_logs', ['repo_name']);
108 pyroutes.register('edit_repo_caches', '/%(repo_name)s/settings/caches', ['repo_name']);
109 pyroutes.register('edit_repo_fields', '/%(repo_name)s/settings/fields', ['repo_name']);
110 pyroutes.register('edit_repo_fields_create', '/%(repo_name)s/settings/fields/create', ['repo_name']);
111 pyroutes.register('edit_repo_fields_delete', '/%(repo_name)s/settings/fields/%(field_id)s/delete', ['repo_name', 'field_id']);
112 pyroutes.register('edit_repo_group', '/%(repo_group_name)s/_edit', ['repo_group_name']);
113 pyroutes.register('edit_repo_group_advanced', '/%(repo_group_name)s/_settings/advanced', ['repo_group_name']);
114 pyroutes.register('edit_repo_group_advanced_delete', '/%(repo_group_name)s/_settings/advanced/delete', ['repo_group_name']);
115 pyroutes.register('edit_repo_group_perms', '/%(repo_group_name)s/_settings/permissions', ['repo_group_name']);
116 pyroutes.register('edit_repo_group_perms_update', '/%(repo_group_name)s/_settings/permissions/update', ['repo_group_name']);
117 pyroutes.register('edit_repo_issuetracker', '/%(repo_name)s/settings/issue_trackers', ['repo_name']);
118 pyroutes.register('edit_repo_issuetracker_delete', '/%(repo_name)s/settings/issue_trackers/delete', ['repo_name']);
119 pyroutes.register('edit_repo_issuetracker_test', '/%(repo_name)s/settings/issue_trackers/test', ['repo_name']);
120 pyroutes.register('edit_repo_issuetracker_update', '/%(repo_name)s/settings/issue_trackers/update', ['repo_name']);
121 pyroutes.register('edit_repo_maintenance', '/%(repo_name)s/settings/maintenance', ['repo_name']);
122 pyroutes.register('edit_repo_maintenance_execute', '/%(repo_name)s/settings/maintenance/execute', ['repo_name']);
123 pyroutes.register('edit_repo_perms', '/%(repo_name)s/settings/permissions', ['repo_name']);
124 pyroutes.register('edit_repo_perms_branch', '/%(repo_name)s/settings/branch_permissions', ['repo_name']);
125 pyroutes.register('edit_repo_perms_branch_delete', '/%(repo_name)s/settings/branch_permissions/%(rule_id)s/delete', ['repo_name', 'rule_id']);
126 pyroutes.register('edit_repo_perms_set_private', '/%(repo_name)s/settings/permissions/set_private', ['repo_name']);
127 pyroutes.register('edit_repo_remote', '/%(repo_name)s/settings/remote', ['repo_name']);
128 pyroutes.register('edit_repo_remote_pull', '/%(repo_name)s/settings/remote/pull', ['repo_name']);
129 pyroutes.register('edit_repo_remote_push', '/%(repo_name)s/settings/remote/push', ['repo_name']);
130 pyroutes.register('edit_repo_statistics', '/%(repo_name)s/settings/statistics', ['repo_name']);
131 pyroutes.register('edit_repo_statistics_reset', '/%(repo_name)s/settings/statistics/update', ['repo_name']);
132 pyroutes.register('edit_repo_strip', '/%(repo_name)s/settings/strip', ['repo_name']);
133 pyroutes.register('edit_repo_vcs', '/%(repo_name)s/settings/vcs', ['repo_name']);
134 pyroutes.register('edit_repo_vcs_svn_pattern_delete', '/%(repo_name)s/settings/vcs/svn_pattern/delete', ['repo_name']);
135 pyroutes.register('edit_repo_vcs_update', '/%(repo_name)s/settings/vcs/update', ['repo_name']);
136 pyroutes.register('edit_user_audit_logs', '/_admin/users/%(user_id)s/edit/audit', ['user_id']);
137 pyroutes.register('edit_user_audit_logs_download', '/_admin/users/%(user_id)s/edit/audit/download', ['user_id']);
138 pyroutes.register('edit_user_auth_tokens', '/_admin/users/%(user_id)s/edit/auth_tokens', ['user_id']);
139 pyroutes.register('edit_user_auth_tokens_add', '/_admin/users/%(user_id)s/edit/auth_tokens/new', ['user_id']);
140 pyroutes.register('edit_user_auth_tokens_delete', '/_admin/users/%(user_id)s/edit/auth_tokens/delete', ['user_id']);
114 141 pyroutes.register('edit_user_auth_tokens_view', '/_admin/users/%(user_id)s/edit/auth_tokens/view', ['user_id']);
115 pyroutes.register('edit_user_auth_tokens_delete', '/_admin/users/%(user_id)s/edit/auth_tokens/delete', ['user_id']);
116 pyroutes.register('edit_user_ssh_keys', '/_admin/users/%(user_id)s/edit/ssh_keys', ['user_id']);
117 pyroutes.register('edit_user_ssh_keys_generate_keypair', '/_admin/users/%(user_id)s/edit/ssh_keys/generate', ['user_id']);
118 pyroutes.register('edit_user_ssh_keys_add', '/_admin/users/%(user_id)s/edit/ssh_keys/new', ['user_id']);
119 pyroutes.register('edit_user_ssh_keys_delete', '/_admin/users/%(user_id)s/edit/ssh_keys/delete', ['user_id']);
142 pyroutes.register('edit_user_caches', '/_admin/users/%(user_id)s/edit/caches', ['user_id']);
143 pyroutes.register('edit_user_caches_update', '/_admin/users/%(user_id)s/edit/caches/update', ['user_id']);
120 144 pyroutes.register('edit_user_emails', '/_admin/users/%(user_id)s/edit/emails', ['user_id']);
121 145 pyroutes.register('edit_user_emails_add', '/_admin/users/%(user_id)s/edit/emails/new', ['user_id']);
122 146 pyroutes.register('edit_user_emails_delete', '/_admin/users/%(user_id)s/edit/emails/delete', ['user_id']);
147 pyroutes.register('edit_user_group', '/_admin/user_groups/%(user_group_id)s/edit', ['user_group_id']);
148 pyroutes.register('edit_user_group_advanced', '/_admin/user_groups/%(user_group_id)s/edit/advanced', ['user_group_id']);
149 pyroutes.register('edit_user_group_advanced_sync', '/_admin/user_groups/%(user_group_id)s/edit/advanced/sync', ['user_group_id']);
150 pyroutes.register('edit_user_group_global_perms', '/_admin/user_groups/%(user_group_id)s/edit/global_permissions', ['user_group_id']);
151 pyroutes.register('edit_user_group_global_perms_update', '/_admin/user_groups/%(user_group_id)s/edit/global_permissions/update', ['user_group_id']);
152 pyroutes.register('edit_user_group_perms', '/_admin/user_groups/%(user_group_id)s/edit/permissions', ['user_group_id']);
153 pyroutes.register('edit_user_group_perms_summary', '/_admin/user_groups/%(user_group_id)s/edit/permissions_summary', ['user_group_id']);
154 pyroutes.register('edit_user_group_perms_summary_json', '/_admin/user_groups/%(user_group_id)s/edit/permissions_summary/json', ['user_group_id']);
155 pyroutes.register('edit_user_group_perms_update', '/_admin/user_groups/%(user_group_id)s/edit/permissions/update', ['user_group_id']);
156 pyroutes.register('edit_user_groups_management', '/_admin/users/%(user_id)s/edit/groups_management', ['user_id']);
157 pyroutes.register('edit_user_groups_management_updates', '/_admin/users/%(user_id)s/edit/edit_user_groups_management/updates', ['user_id']);
123 158 pyroutes.register('edit_user_ips', '/_admin/users/%(user_id)s/edit/ips', ['user_id']);
124 159 pyroutes.register('edit_user_ips_add', '/_admin/users/%(user_id)s/edit/ips/new', ['user_id']);
125 160 pyroutes.register('edit_user_ips_delete', '/_admin/users/%(user_id)s/edit/ips/delete', ['user_id']);
126 161 pyroutes.register('edit_user_perms_summary', '/_admin/users/%(user_id)s/edit/permissions_summary', ['user_id']);
127 162 pyroutes.register('edit_user_perms_summary_json', '/_admin/users/%(user_id)s/edit/permissions_summary/json', ['user_id']);
128 pyroutes.register('edit_user_groups_management', '/_admin/users/%(user_id)s/edit/groups_management', ['user_id']);
129 pyroutes.register('edit_user_groups_management_updates', '/_admin/users/%(user_id)s/edit/edit_user_groups_management/updates', ['user_id']);
130 pyroutes.register('edit_user_audit_logs', '/_admin/users/%(user_id)s/edit/audit', ['user_id']);
131 pyroutes.register('edit_user_audit_logs_download', '/_admin/users/%(user_id)s/edit/audit/download', ['user_id']);
132 pyroutes.register('edit_user_caches', '/_admin/users/%(user_id)s/edit/caches', ['user_id']);
133 pyroutes.register('edit_user_caches_update', '/_admin/users/%(user_id)s/edit/caches/update', ['user_id']);
134 pyroutes.register('user_groups', '/_admin/user_groups', []);
135 pyroutes.register('user_groups_data', '/_admin/user_groups_data', []);
136 pyroutes.register('user_groups_new', '/_admin/user_groups/new', []);
137 pyroutes.register('user_groups_create', '/_admin/user_groups/create', []);
138 pyroutes.register('repos', '/_admin/repos', []);
139 pyroutes.register('repos_data', '/_admin/repos_data', []);
140 pyroutes.register('repo_new', '/_admin/repos/new', []);
141 pyroutes.register('repo_create', '/_admin/repos/create', []);
142 pyroutes.register('repo_groups', '/_admin/repo_groups', []);
143 pyroutes.register('repo_groups_data', '/_admin/repo_groups_data', []);
144 pyroutes.register('repo_group_new', '/_admin/repo_group/new', []);
145 pyroutes.register('repo_group_create', '/_admin/repo_group/create', []);
146 pyroutes.register('channelstream_connect', '/_admin/channelstream/connect', []);
147 pyroutes.register('channelstream_subscribe', '/_admin/channelstream/subscribe', []);
148 pyroutes.register('channelstream_proxy', '/_channelstream', []);
149 pyroutes.register('upload_file', '/_file_store/upload', []);
150 pyroutes.register('download_file', '/_file_store/download/%(fid)s', ['fid']);
151 pyroutes.register('download_file_by_token', '/_file_store/token-download/%(_auth_token)s/%(fid)s', ['_auth_token', 'fid']);
152 pyroutes.register('logout', '/_admin/logout', []);
153 pyroutes.register('reset_password', '/_admin/password_reset', []);
154 pyroutes.register('reset_password_confirmation', '/_admin/password_reset_confirmation', []);
163 pyroutes.register('edit_user_ssh_keys', '/_admin/users/%(user_id)s/edit/ssh_keys', ['user_id']);
164 pyroutes.register('edit_user_ssh_keys_add', '/_admin/users/%(user_id)s/edit/ssh_keys/new', ['user_id']);
165 pyroutes.register('edit_user_ssh_keys_delete', '/_admin/users/%(user_id)s/edit/ssh_keys/delete', ['user_id']);
166 pyroutes.register('edit_user_ssh_keys_generate_keypair', '/_admin/users/%(user_id)s/edit/ssh_keys/generate', ['user_id']);
167 pyroutes.register('favicon', '/favicon.ico', []);
168 pyroutes.register('file_preview', '/_file_preview', []);
169 pyroutes.register('gist_delete', '/_admin/gists/%(gist_id)s/delete', ['gist_id']);
170 pyroutes.register('gist_edit', '/_admin/gists/%(gist_id)s/edit', ['gist_id']);
171 pyroutes.register('gist_edit_check_revision', '/_admin/gists/%(gist_id)s/edit/check_revision', ['gist_id']);
172 pyroutes.register('gist_show', '/_admin/gists/%(gist_id)s', ['gist_id']);
173 pyroutes.register('gist_show_formatted', '/_admin/gists/%(gist_id)s/rev/%(revision)s/%(format)s', ['gist_id', 'revision', 'format']);
174 pyroutes.register('gist_show_formatted_path', '/_admin/gists/%(gist_id)s/rev/%(revision)s/%(format)s/%(f_path)s', ['gist_id', 'revision', 'format', 'f_path']);
175 pyroutes.register('gist_show_rev', '/_admin/gists/%(gist_id)s/rev/%(revision)s', ['gist_id', 'revision']);
176 pyroutes.register('gist_update', '/_admin/gists/%(gist_id)s/update', ['gist_id']);
177 pyroutes.register('gists_create', '/_admin/gists/create', []);
178 pyroutes.register('gists_new', '/_admin/gists/new', []);
179 pyroutes.register('gists_show', '/_admin/gists', []);
180 pyroutes.register('global_integrations_create', '/_admin/integrations/%(integration)s/new', ['integration']);
181 pyroutes.register('global_integrations_edit', '/_admin/integrations/%(integration)s/%(integration_id)s', ['integration', 'integration_id']);
182 pyroutes.register('global_integrations_home', '/_admin/integrations', []);
183 pyroutes.register('global_integrations_list', '/_admin/integrations/%(integration)s', ['integration']);
184 pyroutes.register('global_integrations_new', '/_admin/integrations/new', []);
185 pyroutes.register('goto_switcher_data', '/_goto_data', []);
155 186 pyroutes.register('home', '/', []);
156 pyroutes.register('main_page_repos_data', '/_home_repos', []);
157 pyroutes.register('main_page_repo_groups_data', '/_home_repo_groups', []);
158 pyroutes.register('user_autocomplete_data', '/_users', []);
159 pyroutes.register('user_group_autocomplete_data', '/_user_groups', []);
160 pyroutes.register('repo_list_data', '/_repos', []);
161 pyroutes.register('repo_group_list_data', '/_repo_groups', []);
162 pyroutes.register('goto_switcher_data', '/_goto_data', []);
163 pyroutes.register('markup_preview', '/_markup_preview', []);
164 pyroutes.register('file_preview', '/_file_preview', []);
165 pyroutes.register('store_user_session_value', '/_store_session_attr', []);
187 pyroutes.register('hovercard_pull_request', '/_hovercard/pull_request/%(pull_request_id)s', ['pull_request_id']);
188 pyroutes.register('hovercard_repo_commit', '/_hovercard/commit/%(repo_name)s/%(commit_id)s', ['repo_name', 'commit_id']);
189 pyroutes.register('hovercard_user', '/_hovercard/user/%(user_id)s', ['user_id']);
190 pyroutes.register('hovercard_user_group', '/_hovercard/user_group/%(user_group_id)s', ['user_group_id']);
191 pyroutes.register('hovercard_username', '/_hovercard/username/%(username)s', ['username']);
166 192 pyroutes.register('journal', '/_admin/journal', []);
167 pyroutes.register('journal_rss', '/_admin/journal/rss', []);
168 193 pyroutes.register('journal_atom', '/_admin/journal/atom', []);
169 194 pyroutes.register('journal_public', '/_admin/public_journal', []);
170 195 pyroutes.register('journal_public_atom', '/_admin/public_journal/atom', []);
171 196 pyroutes.register('journal_public_atom_old', '/_admin/public_journal_atom', []);
172 197 pyroutes.register('journal_public_rss', '/_admin/public_journal/rss', []);
173 198 pyroutes.register('journal_public_rss_old', '/_admin/public_journal_rss', []);
174 pyroutes.register('toggle_following', '/_admin/toggle_following', []);
175 pyroutes.register('repo_creating', '/%(repo_name)s/repo_creating', ['repo_name']);
176 pyroutes.register('repo_creating_check', '/%(repo_name)s/repo_creating_check', ['repo_name']);
177 pyroutes.register('repo_summary_explicit', '/%(repo_name)s/summary', ['repo_name']);
178 pyroutes.register('repo_summary_commits', '/%(repo_name)s/summary-commits', ['repo_name']);
179 pyroutes.register('repo_commit', '/%(repo_name)s/changeset/%(commit_id)s', ['repo_name', 'commit_id']);
180 pyroutes.register('repo_commit_children', '/%(repo_name)s/changeset_children/%(commit_id)s', ['repo_name', 'commit_id']);
181 pyroutes.register('repo_commit_parents', '/%(repo_name)s/changeset_parents/%(commit_id)s', ['repo_name', 'commit_id']);
182 pyroutes.register('repo_commit_raw', '/%(repo_name)s/changeset-diff/%(commit_id)s', ['repo_name', 'commit_id']);
183 pyroutes.register('repo_commit_patch', '/%(repo_name)s/changeset-patch/%(commit_id)s', ['repo_name', 'commit_id']);
184 pyroutes.register('repo_commit_download', '/%(repo_name)s/changeset-download/%(commit_id)s', ['repo_name', 'commit_id']);
185 pyroutes.register('repo_commit_data', '/%(repo_name)s/changeset-data/%(commit_id)s', ['repo_name', 'commit_id']);
186 pyroutes.register('repo_commit_comment_create', '/%(repo_name)s/changeset/%(commit_id)s/comment/create', ['repo_name', 'commit_id']);
187 pyroutes.register('repo_commit_comment_preview', '/%(repo_name)s/changeset/%(commit_id)s/comment/preview', ['repo_name', 'commit_id']);
188 pyroutes.register('repo_commit_comment_history_view', '/%(repo_name)s/changeset/%(commit_id)s/comment/%(comment_history_id)s/history_view', ['repo_name', 'commit_id', 'comment_history_id']);
189 pyroutes.register('repo_commit_comment_attachment_upload', '/%(repo_name)s/changeset/%(commit_id)s/comment/attachment_upload', ['repo_name', 'commit_id']);
190 pyroutes.register('repo_commit_comment_delete', '/%(repo_name)s/changeset/%(commit_id)s/comment/%(comment_id)s/delete', ['repo_name', 'commit_id', 'comment_id']);
191 pyroutes.register('repo_commit_comment_edit', '/%(repo_name)s/changeset/%(commit_id)s/comment/%(comment_id)s/edit', ['repo_name', 'commit_id', 'comment_id']);
192 pyroutes.register('repo_commit_raw_deprecated', '/%(repo_name)s/raw-changeset/%(commit_id)s', ['repo_name', 'commit_id']);
193 pyroutes.register('repo_archivefile', '/%(repo_name)s/archive/%(fname)s', ['repo_name', 'fname']);
194 pyroutes.register('repo_files_diff', '/%(repo_name)s/diff/%(f_path)s', ['repo_name', 'f_path']);
195 pyroutes.register('repo_files_diff_2way_redirect', '/%(repo_name)s/diff-2way/%(f_path)s', ['repo_name', 'f_path']);
196 pyroutes.register('repo_files', '/%(repo_name)s/files/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
197 pyroutes.register('repo_files:default_path', '/%(repo_name)s/files/%(commit_id)s/', ['repo_name', 'commit_id']);
198 pyroutes.register('repo_files:default_commit', '/%(repo_name)s/files', ['repo_name']);
199 pyroutes.register('repo_files:rendered', '/%(repo_name)s/render/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
200 pyroutes.register('repo_files:annotated', '/%(repo_name)s/annotate/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
201 pyroutes.register('repo_files:annotated_previous', '/%(repo_name)s/annotate-previous/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
202 pyroutes.register('repo_nodetree_full', '/%(repo_name)s/nodetree_full/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
203 pyroutes.register('repo_nodetree_full:default_path', '/%(repo_name)s/nodetree_full/%(commit_id)s/', ['repo_name', 'commit_id']);
204 pyroutes.register('repo_files_nodelist', '/%(repo_name)s/nodelist/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
205 pyroutes.register('repo_file_raw', '/%(repo_name)s/raw/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
206 pyroutes.register('repo_file_download', '/%(repo_name)s/download/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
207 pyroutes.register('repo_file_download:legacy', '/%(repo_name)s/rawfile/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
208 pyroutes.register('repo_file_history', '/%(repo_name)s/history/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
209 pyroutes.register('repo_file_authors', '/%(repo_name)s/authors/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
210 pyroutes.register('repo_files_check_head', '/%(repo_name)s/check_head/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
211 pyroutes.register('repo_files_remove_file', '/%(repo_name)s/remove_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
212 pyroutes.register('repo_files_delete_file', '/%(repo_name)s/delete_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
213 pyroutes.register('repo_files_edit_file', '/%(repo_name)s/edit_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
214 pyroutes.register('repo_files_update_file', '/%(repo_name)s/update_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
215 pyroutes.register('repo_files_add_file', '/%(repo_name)s/add_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
216 pyroutes.register('repo_files_upload_file', '/%(repo_name)s/upload_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
217 pyroutes.register('repo_files_create_file', '/%(repo_name)s/create_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
218 pyroutes.register('repo_refs_data', '/%(repo_name)s/refs-data', ['repo_name']);
219 pyroutes.register('repo_refs_changelog_data', '/%(repo_name)s/refs-data-changelog', ['repo_name']);
220 pyroutes.register('repo_stats', '/%(repo_name)s/repo_stats/%(commit_id)s', ['repo_name', 'commit_id']);
221 pyroutes.register('repo_commits', '/%(repo_name)s/commits', ['repo_name']);
222 pyroutes.register('repo_commits_file', '/%(repo_name)s/commits/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
223 pyroutes.register('repo_commits_elements', '/%(repo_name)s/commits_elements', ['repo_name']);
224 pyroutes.register('repo_commits_elements_file', '/%(repo_name)s/commits_elements/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
225 pyroutes.register('repo_changelog', '/%(repo_name)s/changelog', ['repo_name']);
226 pyroutes.register('repo_changelog_file', '/%(repo_name)s/changelog/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
227 pyroutes.register('repo_compare_select', '/%(repo_name)s/compare', ['repo_name']);
228 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']);
229 pyroutes.register('tags_home', '/%(repo_name)s/tags', ['repo_name']);
230 pyroutes.register('branches_home', '/%(repo_name)s/branches', ['repo_name']);
231 pyroutes.register('bookmarks_home', '/%(repo_name)s/bookmarks', ['repo_name']);
232 pyroutes.register('repo_fork_new', '/%(repo_name)s/fork', ['repo_name']);
233 pyroutes.register('repo_fork_create', '/%(repo_name)s/fork/create', ['repo_name']);
234 pyroutes.register('repo_forks_show_all', '/%(repo_name)s/forks', ['repo_name']);
235 pyroutes.register('repo_forks_data', '/%(repo_name)s/forks/data', ['repo_name']);
199 pyroutes.register('journal_rss', '/_admin/journal/rss', []);
200 pyroutes.register('login', '/_admin/login', []);
201 pyroutes.register('logout', '/_admin/logout', []);
202 pyroutes.register('main_page_repo_groups_data', '/_home_repo_groups', []);
203 pyroutes.register('main_page_repos_data', '/_home_repos', []);
204 pyroutes.register('markup_preview', '/_markup_preview', []);
205 pyroutes.register('my_account_auth_tokens', '/_admin/my_account/auth_tokens', []);
206 pyroutes.register('my_account_auth_tokens_add', '/_admin/my_account/auth_tokens/new', []);
207 pyroutes.register('my_account_auth_tokens_delete', '/_admin/my_account/auth_tokens/delete', []);
208 pyroutes.register('my_account_auth_tokens_view', '/_admin/my_account/auth_tokens/view', []);
209 pyroutes.register('my_account_bookmarks', '/_admin/my_account/bookmarks', []);
210 pyroutes.register('my_account_bookmarks_update', '/_admin/my_account/bookmarks/update', []);
211 pyroutes.register('my_account_edit', '/_admin/my_account/edit', []);
212 pyroutes.register('my_account_emails', '/_admin/my_account/emails', []);
213 pyroutes.register('my_account_emails_add', '/_admin/my_account/emails/new', []);
214 pyroutes.register('my_account_emails_delete', '/_admin/my_account/emails/delete', []);
215 pyroutes.register('my_account_external_identity', '/_admin/my_account/external-identity', []);
216 pyroutes.register('my_account_external_identity_delete', '/_admin/my_account/external-identity/delete', []);
217 pyroutes.register('my_account_goto_bookmark', '/_admin/my_account/bookmark/%(bookmark_id)s', ['bookmark_id']);
218 pyroutes.register('my_account_notifications', '/_admin/my_account/notifications', []);
219 pyroutes.register('my_account_notifications_test_channelstream', '/_admin/my_account/test_channelstream', []);
220 pyroutes.register('my_account_notifications_toggle_visibility', '/_admin/my_account/toggle_visibility', []);
221 pyroutes.register('my_account_password', '/_admin/my_account/password', []);
222 pyroutes.register('my_account_password_update', '/_admin/my_account/password/update', []);
223 pyroutes.register('my_account_perms', '/_admin/my_account/perms', []);
224 pyroutes.register('my_account_profile', '/_admin/my_account/profile', []);
225 pyroutes.register('my_account_pullrequests', '/_admin/my_account/pull_requests', []);
226 pyroutes.register('my_account_pullrequests_data', '/_admin/my_account/pull_requests/data', []);
227 pyroutes.register('my_account_repos', '/_admin/my_account/repos', []);
228 pyroutes.register('my_account_ssh_keys', '/_admin/my_account/ssh_keys', []);
229 pyroutes.register('my_account_ssh_keys_add', '/_admin/my_account/ssh_keys/new', []);
230 pyroutes.register('my_account_ssh_keys_delete', '/_admin/my_account/ssh_keys/delete', []);
231 pyroutes.register('my_account_ssh_keys_generate', '/_admin/my_account/ssh_keys/generate', []);
232 pyroutes.register('my_account_update', '/_admin/my_account/update', []);
233 pyroutes.register('my_account_user_group_membership', '/_admin/my_account/user_group_membership', []);
234 pyroutes.register('my_account_watched', '/_admin/my_account/watched', []);
235 pyroutes.register('notifications_delete', '/_admin/notifications/%(notification_id)s/delete', ['notification_id']);
236 pyroutes.register('notifications_mark_all_read', '/_admin/notifications_mark_all_read', []);
237 pyroutes.register('notifications_show', '/_admin/notifications/%(notification_id)s', ['notification_id']);
238 pyroutes.register('notifications_show_all', '/_admin/notifications', []);
239 pyroutes.register('notifications_update', '/_admin/notifications/%(notification_id)s/update', ['notification_id']);
240 pyroutes.register('ops_error_test', '/_admin/ops/error', []);
241 pyroutes.register('ops_ping', '/_admin/ops/ping', []);
242 pyroutes.register('ops_redirect_test', '/_admin/ops/redirect', []);
243 pyroutes.register('plugin_admin_chat', '/_admin/plugin_admin_chat/%(action)s', ['action']);
244 pyroutes.register('pull_requests_global', '/_admin/pull-request/%(pull_request_id)s', ['pull_request_id']);
245 pyroutes.register('pull_requests_global_0', '/_admin/pull_requests/%(pull_request_id)s', ['pull_request_id']);
246 pyroutes.register('pull_requests_global_1', '/_admin/pull-requests/%(pull_request_id)s', ['pull_request_id']);
247 pyroutes.register('pullrequest_comment_create', '/%(repo_name)s/pull-request/%(pull_request_id)s/comment', ['repo_name', 'pull_request_id']);
248 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']);
249 pyroutes.register('pullrequest_comment_edit', '/%(repo_name)s/pull-request/%(pull_request_id)s/comment/%(comment_id)s/edit', ['repo_name', 'pull_request_id', 'comment_id']);
250 pyroutes.register('pullrequest_comments', '/%(repo_name)s/pull-request/%(pull_request_id)s/comments', ['repo_name', 'pull_request_id']);
251 pyroutes.register('pullrequest_create', '/%(repo_name)s/pull-request/create', ['repo_name']);
252 pyroutes.register('pullrequest_delete', '/%(repo_name)s/pull-request/%(pull_request_id)s/delete', ['repo_name', 'pull_request_id']);
253 pyroutes.register('pullrequest_draft_comments_submit', '/%(repo_name)s/pull-request/%(pull_request_id)s/draft_comments_submit', ['repo_name', 'pull_request_id']);
254 pyroutes.register('pullrequest_drafts', '/%(repo_name)s/pull-request/%(pull_request_id)s/drafts', ['repo_name', 'pull_request_id']);
255 pyroutes.register('pullrequest_merge', '/%(repo_name)s/pull-request/%(pull_request_id)s/merge', ['repo_name', 'pull_request_id']);
256 pyroutes.register('pullrequest_new', '/%(repo_name)s/pull-request/new', ['repo_name']);
257 pyroutes.register('pullrequest_repo_refs', '/%(repo_name)s/pull-request/refs/%(target_repo_name)s', ['repo_name', 'target_repo_name']);
258 pyroutes.register('pullrequest_repo_targets', '/%(repo_name)s/pull-request/repo-targets', ['repo_name']);
236 259 pyroutes.register('pullrequest_show', '/%(repo_name)s/pull-request/%(pull_request_id)s', ['repo_name', 'pull_request_id']);
237 260 pyroutes.register('pullrequest_show_all', '/%(repo_name)s/pull-request', ['repo_name']);
238 261 pyroutes.register('pullrequest_show_all_data', '/%(repo_name)s/pull-request-data', ['repo_name']);
239 pyroutes.register('pullrequest_repo_refs', '/%(repo_name)s/pull-request/refs/%(target_repo_name)s', ['repo_name', 'target_repo_name']);
240 pyroutes.register('pullrequest_repo_targets', '/%(repo_name)s/pull-request/repo-targets', ['repo_name']);
241 pyroutes.register('pullrequest_new', '/%(repo_name)s/pull-request/new', ['repo_name']);
242 pyroutes.register('pullrequest_create', '/%(repo_name)s/pull-request/create', ['repo_name']);
262 pyroutes.register('pullrequest_todos', '/%(repo_name)s/pull-request/%(pull_request_id)s/todos', ['repo_name', 'pull_request_id']);
243 263 pyroutes.register('pullrequest_update', '/%(repo_name)s/pull-request/%(pull_request_id)s/update', ['repo_name', 'pull_request_id']);
244 pyroutes.register('pullrequest_merge', '/%(repo_name)s/pull-request/%(pull_request_id)s/merge', ['repo_name', 'pull_request_id']);
245 pyroutes.register('pullrequest_delete', '/%(repo_name)s/pull-request/%(pull_request_id)s/delete', ['repo_name', 'pull_request_id']);
246 pyroutes.register('pullrequest_comment_create', '/%(repo_name)s/pull-request/%(pull_request_id)s/comment', ['repo_name', 'pull_request_id']);
247 pyroutes.register('pullrequest_comment_edit', '/%(repo_name)s/pull-request/%(pull_request_id)s/comment/%(comment_id)s/edit', ['repo_name', 'pull_request_id', 'comment_id']);
248 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']);
249 pyroutes.register('pullrequest_comments', '/%(repo_name)s/pull-request/%(pull_request_id)s/comments', ['repo_name', 'pull_request_id']);
250 pyroutes.register('pullrequest_todos', '/%(repo_name)s/pull-request/%(pull_request_id)s/todos', ['repo_name', 'pull_request_id']);
251 pyroutes.register('pullrequest_drafts', '/%(repo_name)s/pull-request/%(pull_request_id)s/drafts', ['repo_name', 'pull_request_id']);
252 pyroutes.register('edit_repo', '/%(repo_name)s/settings', ['repo_name']);
253 pyroutes.register('edit_repo_advanced', '/%(repo_name)s/settings/advanced', ['repo_name']);
254 pyroutes.register('edit_repo_advanced_archive', '/%(repo_name)s/settings/advanced/archive', ['repo_name']);
255 pyroutes.register('edit_repo_advanced_delete', '/%(repo_name)s/settings/advanced/delete', ['repo_name']);
256 pyroutes.register('edit_repo_advanced_locking', '/%(repo_name)s/settings/advanced/locking', ['repo_name']);
257 pyroutes.register('edit_repo_advanced_journal', '/%(repo_name)s/settings/advanced/journal', ['repo_name']);
258 pyroutes.register('edit_repo_advanced_fork', '/%(repo_name)s/settings/advanced/fork', ['repo_name']);
259 pyroutes.register('edit_repo_advanced_hooks', '/%(repo_name)s/settings/advanced/hooks', ['repo_name']);
260 pyroutes.register('edit_repo_caches', '/%(repo_name)s/settings/caches', ['repo_name']);
261 pyroutes.register('edit_repo_perms', '/%(repo_name)s/settings/permissions', ['repo_name']);
262 pyroutes.register('edit_repo_perms_set_private', '/%(repo_name)s/settings/permissions/set_private', ['repo_name']);
263 pyroutes.register('edit_repo_maintenance', '/%(repo_name)s/settings/maintenance', ['repo_name']);
264 pyroutes.register('edit_repo_maintenance_execute', '/%(repo_name)s/settings/maintenance/execute', ['repo_name']);
265 pyroutes.register('edit_repo_fields', '/%(repo_name)s/settings/fields', ['repo_name']);
266 pyroutes.register('edit_repo_fields_create', '/%(repo_name)s/settings/fields/create', ['repo_name']);
267 pyroutes.register('edit_repo_fields_delete', '/%(repo_name)s/settings/fields/%(field_id)s/delete', ['repo_name', 'field_id']);
264 pyroutes.register('register', '/_admin/register', []);
265 pyroutes.register('repo_archivefile', '/%(repo_name)s/archive/%(fname)s', ['repo_name', 'fname']);
266 pyroutes.register('repo_artifacts_data', '/%(repo_name)s/artifacts_data', ['repo_name']);
267 pyroutes.register('repo_artifacts_delete', '/%(repo_name)s/artifacts/delete/%(uid)s', ['repo_name', 'uid']);
268 pyroutes.register('repo_artifacts_get', '/%(repo_name)s/artifacts/download/%(uid)s', ['repo_name', 'uid']);
269 pyroutes.register('repo_artifacts_info', '/%(repo_name)s/artifacts/info/%(uid)s', ['repo_name', 'uid']);
270 pyroutes.register('repo_artifacts_list', '/%(repo_name)s/artifacts', ['repo_name']);
271 pyroutes.register('repo_artifacts_new', '/%(repo_name)s/artifacts/new', ['repo_name']);
272 pyroutes.register('repo_artifacts_store', '/%(repo_name)s/artifacts/store', ['repo_name']);
273 pyroutes.register('repo_artifacts_stream_script', '/_file_store/stream-upload-script', []);
274 pyroutes.register('repo_artifacts_stream_store', '/_file_store/stream-upload', []);
275 pyroutes.register('repo_artifacts_update', '/%(repo_name)s/artifacts/update/%(uid)s', ['repo_name', 'uid']);
276 pyroutes.register('repo_automation', '/%(repo_name)s/settings/automation', ['repo_name']);
277 pyroutes.register('repo_automation_update', '/%(repo_name)s/settings/automation/%(entry_id)s/update', ['repo_name', 'entry_id']);
278 pyroutes.register('repo_changelog', '/%(repo_name)s/changelog', ['repo_name']);
279 pyroutes.register('repo_changelog_file', '/%(repo_name)s/changelog/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
280 pyroutes.register('repo_commit', '/%(repo_name)s/changeset/%(commit_id)s', ['repo_name', 'commit_id']);
281 pyroutes.register('repo_commit_children', '/%(repo_name)s/changeset_children/%(commit_id)s', ['repo_name', 'commit_id']);
282 pyroutes.register('repo_commit_comment_attachment_upload', '/%(repo_name)s/changeset/%(commit_id)s/comment/attachment_upload', ['repo_name', 'commit_id']);
283 pyroutes.register('repo_commit_comment_create', '/%(repo_name)s/changeset/%(commit_id)s/comment/create', ['repo_name', 'commit_id']);
284 pyroutes.register('repo_commit_comment_delete', '/%(repo_name)s/changeset/%(commit_id)s/comment/%(comment_id)s/delete', ['repo_name', 'commit_id', 'comment_id']);
285 pyroutes.register('repo_commit_comment_edit', '/%(repo_name)s/changeset/%(commit_id)s/comment/%(comment_id)s/edit', ['repo_name', 'commit_id', 'comment_id']);
286 pyroutes.register('repo_commit_comment_history_view', '/%(repo_name)s/changeset/%(commit_id)s/comment/%(comment_history_id)s/history_view', ['repo_name', 'commit_id', 'comment_history_id']);
287 pyroutes.register('repo_commit_comment_preview', '/%(repo_name)s/changeset/%(commit_id)s/comment/preview', ['repo_name', 'commit_id']);
288 pyroutes.register('repo_commit_data', '/%(repo_name)s/changeset-data/%(commit_id)s', ['repo_name', 'commit_id']);
289 pyroutes.register('repo_commit_download', '/%(repo_name)s/changeset-download/%(commit_id)s', ['repo_name', 'commit_id']);
290 pyroutes.register('repo_commit_parents', '/%(repo_name)s/changeset_parents/%(commit_id)s', ['repo_name', 'commit_id']);
291 pyroutes.register('repo_commit_patch', '/%(repo_name)s/changeset-patch/%(commit_id)s', ['repo_name', 'commit_id']);
292 pyroutes.register('repo_commit_raw', '/%(repo_name)s/changeset-diff/%(commit_id)s', ['repo_name', 'commit_id']);
293 pyroutes.register('repo_commit_raw_deprecated', '/%(repo_name)s/raw-changeset/%(commit_id)s', ['repo_name', 'commit_id']);
294 pyroutes.register('repo_commits', '/%(repo_name)s/commits', ['repo_name']);
295 pyroutes.register('repo_commits_elements', '/%(repo_name)s/commits_elements', ['repo_name']);
296 pyroutes.register('repo_commits_elements_file', '/%(repo_name)s/commits_elements/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
297 pyroutes.register('repo_commits_file', '/%(repo_name)s/commits/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
298 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']);
299 pyroutes.register('repo_compare_select', '/%(repo_name)s/compare', ['repo_name']);
300 pyroutes.register('repo_create', '/_admin/repos/create', []);
301 pyroutes.register('repo_creating', '/%(repo_name)s/repo_creating', ['repo_name']);
302 pyroutes.register('repo_creating_check', '/%(repo_name)s/repo_creating_check', ['repo_name']);
303 pyroutes.register('repo_default_reviewers_data', '/%(repo_name)s/settings/review/default-reviewers', ['repo_name']);
268 304 pyroutes.register('repo_edit_toggle_locking', '/%(repo_name)s/settings/toggle_locking', ['repo_name']);
269 pyroutes.register('edit_repo_remote', '/%(repo_name)s/settings/remote', ['repo_name']);
270 pyroutes.register('edit_repo_remote_pull', '/%(repo_name)s/settings/remote/pull', ['repo_name']);
271 pyroutes.register('edit_repo_statistics', '/%(repo_name)s/settings/statistics', ['repo_name']);
272 pyroutes.register('edit_repo_statistics_reset', '/%(repo_name)s/settings/statistics/update', ['repo_name']);
273 pyroutes.register('edit_repo_issuetracker', '/%(repo_name)s/settings/issue_trackers', ['repo_name']);
274 pyroutes.register('edit_repo_issuetracker_test', '/%(repo_name)s/settings/issue_trackers/test', ['repo_name']);
275 pyroutes.register('edit_repo_issuetracker_delete', '/%(repo_name)s/settings/issue_trackers/delete', ['repo_name']);
276 pyroutes.register('edit_repo_issuetracker_update', '/%(repo_name)s/settings/issue_trackers/update', ['repo_name']);
277 pyroutes.register('edit_repo_vcs', '/%(repo_name)s/settings/vcs', ['repo_name']);
278 pyroutes.register('edit_repo_vcs_update', '/%(repo_name)s/settings/vcs/update', ['repo_name']);
279 pyroutes.register('edit_repo_vcs_svn_pattern_delete', '/%(repo_name)s/settings/vcs/svn_pattern/delete', ['repo_name']);
280 pyroutes.register('repo_reviewers', '/%(repo_name)s/settings/review/rules', ['repo_name']);
281 pyroutes.register('repo_default_reviewers_data', '/%(repo_name)s/settings/review/default-reviewers', ['repo_name']);
282 pyroutes.register('edit_repo_strip', '/%(repo_name)s/settings/strip', ['repo_name']);
283 pyroutes.register('strip_check', '/%(repo_name)s/settings/strip_check', ['repo_name']);
284 pyroutes.register('strip_execute', '/%(repo_name)s/settings/strip_execute', ['repo_name']);
285 pyroutes.register('edit_repo_audit_logs', '/%(repo_name)s/settings/audit_logs', ['repo_name']);
286 pyroutes.register('rss_feed_home', '/%(repo_name)s/feed-rss', ['repo_name']);
287 pyroutes.register('atom_feed_home', '/%(repo_name)s/feed-atom', ['repo_name']);
288 pyroutes.register('rss_feed_home_old', '/%(repo_name)s/feed/rss', ['repo_name']);
289 pyroutes.register('atom_feed_home_old', '/%(repo_name)s/feed/atom', ['repo_name']);
290 pyroutes.register('repo_summary', '/%(repo_name)s', ['repo_name']);
291 pyroutes.register('repo_summary_slash', '/%(repo_name)s/', ['repo_name']);
292 pyroutes.register('edit_repo_group', '/%(repo_group_name)s/_edit', ['repo_group_name']);
293 pyroutes.register('edit_repo_group_advanced', '/%(repo_group_name)s/_settings/advanced', ['repo_group_name']);
294 pyroutes.register('edit_repo_group_advanced_delete', '/%(repo_group_name)s/_settings/advanced/delete', ['repo_group_name']);
295 pyroutes.register('edit_repo_group_perms', '/%(repo_group_name)s/_settings/permissions', ['repo_group_name']);
296 pyroutes.register('edit_repo_group_perms_update', '/%(repo_group_name)s/_settings/permissions/update', ['repo_group_name']);
305 pyroutes.register('repo_file_authors', '/%(repo_name)s/authors/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
306 pyroutes.register('repo_file_download', '/%(repo_name)s/download/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
307 pyroutes.register('repo_file_download:legacy', '/%(repo_name)s/rawfile/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
308 pyroutes.register('repo_file_history', '/%(repo_name)s/history/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
309 pyroutes.register('repo_file_raw', '/%(repo_name)s/raw/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
310 pyroutes.register('repo_files', '/%(repo_name)s/files/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
311 pyroutes.register('repo_files:annotated', '/%(repo_name)s/annotate/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
312 pyroutes.register('repo_files:annotated_previous', '/%(repo_name)s/annotate-previous/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
313 pyroutes.register('repo_files:default_commit', '/%(repo_name)s/files', ['repo_name']);
314 pyroutes.register('repo_files:default_path', '/%(repo_name)s/files/%(commit_id)s/', ['repo_name', 'commit_id']);
315 pyroutes.register('repo_files:rendered', '/%(repo_name)s/render/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
316 pyroutes.register('repo_files_add_file', '/%(repo_name)s/add_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
317 pyroutes.register('repo_files_check_head', '/%(repo_name)s/check_head/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
318 pyroutes.register('repo_files_create_file', '/%(repo_name)s/create_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
319 pyroutes.register('repo_files_delete_file', '/%(repo_name)s/delete_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
320 pyroutes.register('repo_files_diff', '/%(repo_name)s/diff/%(f_path)s', ['repo_name', 'f_path']);
321 pyroutes.register('repo_files_diff_2way_redirect', '/%(repo_name)s/diff-2way/%(f_path)s', ['repo_name', 'f_path']);
322 pyroutes.register('repo_files_edit_file', '/%(repo_name)s/edit_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
323 pyroutes.register('repo_files_nodelist', '/%(repo_name)s/nodelist/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
324 pyroutes.register('repo_files_remove_file', '/%(repo_name)s/remove_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
325 pyroutes.register('repo_files_update_file', '/%(repo_name)s/update_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
326 pyroutes.register('repo_files_upload_file', '/%(repo_name)s/upload_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
327 pyroutes.register('repo_fork_create', '/%(repo_name)s/fork/create', ['repo_name']);
328 pyroutes.register('repo_fork_new', '/%(repo_name)s/fork', ['repo_name']);
329 pyroutes.register('repo_forks_data', '/%(repo_name)s/forks/data', ['repo_name']);
330 pyroutes.register('repo_forks_show_all', '/%(repo_name)s/forks', ['repo_name']);
331 pyroutes.register('repo_group_create', '/_admin/repo_group/create', []);
297 332 pyroutes.register('repo_group_home', '/%(repo_group_name)s', ['repo_group_name']);
298 333 pyroutes.register('repo_group_home_slash', '/%(repo_group_name)s/', ['repo_group_name']);
299 pyroutes.register('user_group_members_data', '/_admin/user_groups/%(user_group_id)s/members', ['user_group_id']);
300 pyroutes.register('edit_user_group_perms_summary', '/_admin/user_groups/%(user_group_id)s/edit/permissions_summary', ['user_group_id']);
301 pyroutes.register('edit_user_group_perms_summary_json', '/_admin/user_groups/%(user_group_id)s/edit/permissions_summary/json', ['user_group_id']);
302 pyroutes.register('edit_user_group', '/_admin/user_groups/%(user_group_id)s/edit', ['user_group_id']);
303 pyroutes.register('user_groups_update', '/_admin/user_groups/%(user_group_id)s/update', ['user_group_id']);
304 pyroutes.register('edit_user_group_global_perms', '/_admin/user_groups/%(user_group_id)s/edit/global_permissions', ['user_group_id']);
305 pyroutes.register('edit_user_group_global_perms_update', '/_admin/user_groups/%(user_group_id)s/edit/global_permissions/update', ['user_group_id']);
306 pyroutes.register('edit_user_group_perms', '/_admin/user_groups/%(user_group_id)s/edit/permissions', ['user_group_id']);
307 pyroutes.register('edit_user_group_perms_update', '/_admin/user_groups/%(user_group_id)s/edit/permissions/update', ['user_group_id']);
308 pyroutes.register('edit_user_group_advanced', '/_admin/user_groups/%(user_group_id)s/edit/advanced', ['user_group_id']);
309 pyroutes.register('edit_user_group_advanced_sync', '/_admin/user_groups/%(user_group_id)s/edit/advanced/sync', ['user_group_id']);
310 pyroutes.register('user_groups_delete', '/_admin/user_groups/%(user_group_id)s/delete', ['user_group_id']);
334 pyroutes.register('repo_group_integrations_create', '/%(repo_group_name)s/_settings/integrations/%(integration)s/new', ['repo_group_name', 'integration']);
335 pyroutes.register('repo_group_integrations_edit', '/%(repo_group_name)s/_settings/integrations/%(integration)s/%(integration_id)s', ['repo_group_name', 'integration', 'integration_id']);
336 pyroutes.register('repo_group_integrations_home', '/%(repo_group_name)s/_settings/integrations', ['repo_group_name']);
337 pyroutes.register('repo_group_integrations_list', '/%(repo_group_name)s/_settings/integrations/%(integration)s', ['repo_group_name', 'integration']);
338 pyroutes.register('repo_group_integrations_new', '/%(repo_group_name)s/_settings/integrations/new', ['repo_group_name']);
339 pyroutes.register('repo_group_list_data', '/_repo_groups', []);
340 pyroutes.register('repo_group_new', '/_admin/repo_group/new', []);
341 pyroutes.register('repo_groups', '/_admin/repo_groups', []);
342 pyroutes.register('repo_groups_data', '/_admin/repo_groups_data', []);
343 pyroutes.register('repo_integrations_create', '/%(repo_name)s/settings/integrations/%(integration)s/new', ['repo_name', 'integration']);
344 pyroutes.register('repo_integrations_edit', '/%(repo_name)s/settings/integrations/%(integration)s/%(integration_id)s', ['repo_name', 'integration', 'integration_id']);
345 pyroutes.register('repo_integrations_home', '/%(repo_name)s/settings/integrations', ['repo_name']);
346 pyroutes.register('repo_integrations_list', '/%(repo_name)s/settings/integrations/%(integration)s', ['repo_name', 'integration']);
347 pyroutes.register('repo_integrations_new', '/%(repo_name)s/settings/integrations/new', ['repo_name']);
348 pyroutes.register('repo_list_data', '/_repos', []);
349 pyroutes.register('repo_new', '/_admin/repos/new', []);
350 pyroutes.register('repo_nodetree_full', '/%(repo_name)s/nodetree_full/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
351 pyroutes.register('repo_nodetree_full:default_path', '/%(repo_name)s/nodetree_full/%(commit_id)s/', ['repo_name', 'commit_id']);
352 pyroutes.register('repo_refs_changelog_data', '/%(repo_name)s/refs-data-changelog', ['repo_name']);
353 pyroutes.register('repo_refs_data', '/%(repo_name)s/refs-data', ['repo_name']);
354 pyroutes.register('repo_reviewers', '/%(repo_name)s/settings/review/rules', ['repo_name']);
355 pyroutes.register('repo_reviewers_review_rule_delete', '/%(repo_name)s/settings/review/rules/%(rule_id)s/delete', ['repo_name', 'rule_id']);
356 pyroutes.register('repo_reviewers_review_rule_edit', '/%(repo_name)s/settings/review/rules/%(rule_id)s', ['repo_name', 'rule_id']);
357 pyroutes.register('repo_reviewers_review_rule_new', '/%(repo_name)s/settings/review/rules/new', ['repo_name']);
358 pyroutes.register('repo_stats', '/%(repo_name)s/repo_stats/%(commit_id)s', ['repo_name', 'commit_id']);
359 pyroutes.register('repo_summary', '/%(repo_name)s', ['repo_name']);
360 pyroutes.register('repo_summary_commits', '/%(repo_name)s/summary-commits', ['repo_name']);
361 pyroutes.register('repo_summary_explicit', '/%(repo_name)s/summary', ['repo_name']);
362 pyroutes.register('repo_summary_slash', '/%(repo_name)s/', ['repo_name']);
363 pyroutes.register('repos', '/_admin/repos', []);
364 pyroutes.register('repos_data', '/_admin/repos_data', []);
365 pyroutes.register('reset_password', '/_admin/password_reset', []);
366 pyroutes.register('reset_password_confirmation', '/_admin/password_reset_confirmation', []);
367 pyroutes.register('robots', '/robots.txt', []);
368 pyroutes.register('rss_feed_home', '/%(repo_name)s/feed-rss', ['repo_name']);
369 pyroutes.register('rss_feed_home_old', '/%(repo_name)s/feed/rss', ['repo_name']);
311 370 pyroutes.register('search', '/_admin/search', []);
312 371 pyroutes.register('search_repo', '/%(repo_name)s/_search', ['repo_name']);
313 372 pyroutes.register('search_repo_alt', '/%(repo_name)s/search', ['repo_name']);
314 373 pyroutes.register('search_repo_group', '/%(repo_group_name)s/_search', ['repo_group_name']);
315 pyroutes.register('user_profile', '/_profiles/%(username)s', ['username']);
374 pyroutes.register('store_user_session_value', '/_store_session_attr', []);
375 pyroutes.register('strip_check', '/%(repo_name)s/settings/strip_check', ['repo_name']);
376 pyroutes.register('strip_execute', '/%(repo_name)s/settings/strip_execute', ['repo_name']);
377 pyroutes.register('tags_home', '/%(repo_name)s/tags', ['repo_name']);
378 pyroutes.register('toggle_following', '/_admin/toggle_following', []);
379 pyroutes.register('upload_file', '/_file_store/upload', []);
380 pyroutes.register('user_autocomplete_data', '/_users', []);
381 pyroutes.register('user_create_personal_repo_group', '/_admin/users/%(user_id)s/create_repo_group', ['user_id']);
382 pyroutes.register('user_delete', '/_admin/users/%(user_id)s/delete', ['user_id']);
383 pyroutes.register('user_disable_force_password_reset', '/_admin/users/%(user_id)s/password_reset_disable', ['user_id']);
384 pyroutes.register('user_edit', '/_admin/users/%(user_id)s/edit', ['user_id']);
385 pyroutes.register('user_edit_advanced', '/_admin/users/%(user_id)s/edit/advanced', ['user_id']);
386 pyroutes.register('user_edit_global_perms', '/_admin/users/%(user_id)s/edit/global_permissions', ['user_id']);
387 pyroutes.register('user_edit_global_perms_update', '/_admin/users/%(user_id)s/edit/global_permissions/update', ['user_id']);
388 pyroutes.register('user_enable_force_password_reset', '/_admin/users/%(user_id)s/password_reset_enable', ['user_id']);
389 pyroutes.register('user_group_autocomplete_data', '/_user_groups', []);
390 pyroutes.register('user_group_members_data', '/_admin/user_groups/%(user_group_id)s/members', ['user_group_id']);
316 391 pyroutes.register('user_group_profile', '/_profile_user_group/%(user_group_name)s', ['user_group_name']);
317 pyroutes.register('my_account_profile', '/_admin/my_account/profile', []);
318 pyroutes.register('my_account_edit', '/_admin/my_account/edit', []);
319 pyroutes.register('my_account_update', '/_admin/my_account/update', []);
320 pyroutes.register('my_account_password', '/_admin/my_account/password', []);
321 pyroutes.register('my_account_password_update', '/_admin/my_account/password/update', []);
322 pyroutes.register('my_account_auth_tokens_view', '/_admin/my_account/auth_tokens/view', []);
323 pyroutes.register('my_account_auth_tokens_delete', '/_admin/my_account/auth_tokens/delete', []);
324 pyroutes.register('my_account_ssh_keys', '/_admin/my_account/ssh_keys', []);
325 pyroutes.register('my_account_ssh_keys_generate', '/_admin/my_account/ssh_keys/generate', []);
326 pyroutes.register('my_account_ssh_keys_add', '/_admin/my_account/ssh_keys/new', []);
327 pyroutes.register('my_account_ssh_keys_delete', '/_admin/my_account/ssh_keys/delete', []);
328 pyroutes.register('my_account_user_group_membership', '/_admin/my_account/user_group_membership', []);
329 pyroutes.register('my_account_emails', '/_admin/my_account/emails', []);
330 pyroutes.register('my_account_emails_add', '/_admin/my_account/emails/new', []);
331 pyroutes.register('my_account_emails_delete', '/_admin/my_account/emails/delete', []);
332 pyroutes.register('my_account_repos', '/_admin/my_account/repos', []);
333 pyroutes.register('my_account_watched', '/_admin/my_account/watched', []);
334 pyroutes.register('my_account_bookmarks', '/_admin/my_account/bookmarks', []);
335 pyroutes.register('my_account_bookmarks_update', '/_admin/my_account/bookmarks/update', []);
336 pyroutes.register('my_account_goto_bookmark', '/_admin/my_account/bookmark/%(bookmark_id)s', ['bookmark_id']);
337 pyroutes.register('my_account_perms', '/_admin/my_account/perms', []);
338 pyroutes.register('my_account_notifications', '/_admin/my_account/notifications', []);
339 pyroutes.register('my_account_notifications_toggle_visibility', '/_admin/my_account/toggle_visibility', []);
340 pyroutes.register('my_account_pullrequests', '/_admin/my_account/pull_requests', []);
341 pyroutes.register('my_account_pullrequests_data', '/_admin/my_account/pull_requests/data', []);
342 pyroutes.register('notifications_show_all', '/_admin/notifications', []);
343 pyroutes.register('notifications_mark_all_read', '/_admin/notifications/mark_all_read', []);
344 pyroutes.register('notifications_show', '/_admin/notifications/%(notification_id)s', ['notification_id']);
345 pyroutes.register('notifications_update', '/_admin/notifications/%(notification_id)s/update', ['notification_id']);
346 pyroutes.register('notifications_delete', '/_admin/notifications/%(notification_id)s/delete', ['notification_id']);
347 pyroutes.register('my_account_notifications_test_channelstream', '/_admin/my_account/test_channelstream', []);
348 pyroutes.register('gists_show', '/_admin/gists', []);
349 pyroutes.register('gists_new', '/_admin/gists/new', []);
350 pyroutes.register('gists_create', '/_admin/gists/create', []);
351 pyroutes.register('gist_show', '/_admin/gists/%(gist_id)s', ['gist_id']);
352 pyroutes.register('gist_delete', '/_admin/gists/%(gist_id)s/delete', ['gist_id']);
353 pyroutes.register('gist_edit', '/_admin/gists/%(gist_id)s/edit', ['gist_id']);
354 pyroutes.register('gist_edit_check_revision', '/_admin/gists/%(gist_id)s/edit/check_revision', ['gist_id']);
355 pyroutes.register('gist_update', '/_admin/gists/%(gist_id)s/update', ['gist_id']);
356 pyroutes.register('gist_show_rev', '/_admin/gists/%(gist_id)s/%(revision)s', ['gist_id', 'revision']);
357 pyroutes.register('gist_show_formatted', '/_admin/gists/%(gist_id)s/%(revision)s/%(format)s', ['gist_id', 'revision', 'format']);
358 pyroutes.register('gist_show_formatted_path', '/_admin/gists/%(gist_id)s/%(revision)s/%(format)s/%(f_path)s', ['gist_id', 'revision', 'format', 'f_path']);
359 pyroutes.register('debug_style_home', '/_admin/debug_style', []);
360 pyroutes.register('debug_style_email', '/_admin/debug_style/email/%(email_id)s', ['email_id']);
361 pyroutes.register('debug_style_email_plain_rendered', '/_admin/debug_style/email-rendered/%(email_id)s', ['email_id']);
362 pyroutes.register('debug_style_template', '/_admin/debug_style/t/%(t_path)s', ['t_path']);
363 pyroutes.register('apiv2', '/_admin/api', []);
364 pyroutes.register('admin_settings_license', '/_admin/settings/license', []);
365 pyroutes.register('admin_settings_license_unlock', '/_admin/settings/license_unlock', []);
366 pyroutes.register('login', '/_admin/login', []);
367 pyroutes.register('register', '/_admin/register', []);
368 pyroutes.register('repo_reviewers_review_rule_new', '/%(repo_name)s/settings/review/rules/new', ['repo_name']);
369 pyroutes.register('repo_reviewers_review_rule_edit', '/%(repo_name)s/settings/review/rules/%(rule_id)s', ['repo_name', 'rule_id']);
370 pyroutes.register('repo_reviewers_review_rule_delete', '/%(repo_name)s/settings/review/rules/%(rule_id)s/delete', ['repo_name', 'rule_id']);
371 pyroutes.register('plugin_admin_chat', '/_admin/plugin_admin_chat/%(action)s', ['action']);
372 pyroutes.register('edit_user_auth_tokens', '/_admin/users/%(user_id)s/edit/auth_tokens', ['user_id']);
373 pyroutes.register('edit_user_auth_tokens_add', '/_admin/users/%(user_id)s/edit/auth_tokens/new', ['user_id']);
374 pyroutes.register('admin_settings_scheduler_show_tasks', '/_admin/settings/scheduler/_tasks', []);
375 pyroutes.register('admin_settings_scheduler_show_all', '/_admin/settings/scheduler', []);
376 pyroutes.register('admin_settings_scheduler_new', '/_admin/settings/scheduler/new', []);
377 pyroutes.register('admin_settings_scheduler_create', '/_admin/settings/scheduler/create', []);
378 pyroutes.register('admin_settings_scheduler_edit', '/_admin/settings/scheduler/%(schedule_id)s', ['schedule_id']);
379 pyroutes.register('admin_settings_scheduler_update', '/_admin/settings/scheduler/%(schedule_id)s/update', ['schedule_id']);
380 pyroutes.register('admin_settings_scheduler_delete', '/_admin/settings/scheduler/%(schedule_id)s/delete', ['schedule_id']);
381 pyroutes.register('admin_settings_scheduler_execute', '/_admin/settings/scheduler/%(schedule_id)s/execute', ['schedule_id']);
382 pyroutes.register('admin_settings_automation', '/_admin/settings/automation', []);
383 pyroutes.register('admin_settings_automation_update', '/_admin/settings/automation/%(entry_id)s/update', ['entry_id']);
384 pyroutes.register('admin_permissions_branch', '/_admin/permissions/branch', []);
385 pyroutes.register('admin_permissions_branch_update', '/_admin/permissions/branch/update', []);
386 pyroutes.register('my_account_auth_tokens', '/_admin/my_account/auth_tokens', []);
387 pyroutes.register('my_account_auth_tokens_add', '/_admin/my_account/auth_tokens/new', []);
388 pyroutes.register('my_account_external_identity', '/_admin/my_account/external-identity', []);
389 pyroutes.register('my_account_external_identity_delete', '/_admin/my_account/external-identity/delete', []);
390 pyroutes.register('pullrequest_draft_comments_submit', '/%(repo_name)s/pull-request/%(pull_request_id)s/draft_comments_submit', ['repo_name', 'pull_request_id']);
391 pyroutes.register('commit_draft_comments_submit', '/%(repo_name)s/changeset/%(commit_id)s/draft_comments_submit', ['repo_name', 'commit_id']);
392 pyroutes.register('repo_artifacts_list', '/%(repo_name)s/artifacts', ['repo_name']);
393 pyroutes.register('repo_artifacts_data', '/%(repo_name)s/artifacts_data', ['repo_name']);
394 pyroutes.register('repo_artifacts_new', '/%(repo_name)s/artifacts/new', ['repo_name']);
395 pyroutes.register('repo_artifacts_get', '/%(repo_name)s/artifacts/download/%(uid)s', ['repo_name', 'uid']);
396 pyroutes.register('repo_artifacts_store', '/%(repo_name)s/artifacts/store', ['repo_name']);
397 pyroutes.register('repo_artifacts_info', '/%(repo_name)s/artifacts/info/%(uid)s', ['repo_name', 'uid']);
398 pyroutes.register('repo_artifacts_delete', '/%(repo_name)s/artifacts/delete/%(uid)s', ['repo_name', 'uid']);
399 pyroutes.register('repo_artifacts_update', '/%(repo_name)s/artifacts/update/%(uid)s', ['repo_name', 'uid']);
400 pyroutes.register('repo_automation', '/%(repo_name)s/settings/automation', ['repo_name']);
401 pyroutes.register('repo_automation_update', '/%(repo_name)s/settings/automation/%(entry_id)s/update', ['repo_name', 'entry_id']);
402 pyroutes.register('edit_repo_remote_push', '/%(repo_name)s/settings/remote/push', ['repo_name']);
403 pyroutes.register('edit_repo_perms_branch', '/%(repo_name)s/settings/branch_permissions', ['repo_name']);
404 pyroutes.register('edit_repo_perms_branch_delete', '/%(repo_name)s/settings/branch_permissions/%(rule_id)s/delete', ['repo_name', 'rule_id']);
392 pyroutes.register('user_groups', '/_admin/user_groups', []);
393 pyroutes.register('user_groups_create', '/_admin/user_groups/create', []);
394 pyroutes.register('user_groups_data', '/_admin/user_groups_data', []);
395 pyroutes.register('user_groups_delete', '/_admin/user_groups/%(user_group_id)s/delete', ['user_group_id']);
396 pyroutes.register('user_groups_new', '/_admin/user_groups/new', []);
397 pyroutes.register('user_groups_update', '/_admin/user_groups/%(user_group_id)s/update', ['user_group_id']);
398 pyroutes.register('user_notice_dismiss', '/_admin/users/%(user_id)s/notice_dismiss', ['user_id']);
399 pyroutes.register('user_profile', '/_profiles/%(username)s', ['username']);
400 pyroutes.register('user_update', '/_admin/users/%(user_id)s/update', ['user_id']);
401 pyroutes.register('users', '/_admin/users', []);
402 pyroutes.register('users_create', '/_admin/users/create', []);
403 pyroutes.register('users_data', '/_admin/users_data', []);
404 pyroutes.register('users_new', '/_admin/users/new', []);
405 405 }
@@ -618,7 +618,7 b' function scrollToElement(element, percen'
618 618 offsetScroll($line, 70);
619 619 }
620 620 if (!$line.hasClass('comment-outdated') && result.remainder === '/ReplyToComment') {
621 $line.nextAll('.cb-comment-add-button').trigger('click');
621 $line.parent().find('.cb-comment-add-button').trigger('click');
622 622 }
623 623 }
624 624
@@ -714,3 +714,11 b' var getUserSessionAttr = function(key) {'
714 714 }
715 715 return null
716 716 }
717
718 window.scrollDown = function () {
719 $(document).scrollTop($(document).height());
720 }
721
722 window.scrollUp = function scrollUp() {
723 $(window).scrollTop(0);
724 }
@@ -371,7 +371,7 b' var _submitAjaxPOST = function(url, post'
371 371 location.reload(true);
372 372 } else {
373 373 // inject newly created comments, json_data is {<comment_id>: {}}
374 self.attachGeneralComment(json_data)
374 Rhodecode.comments.attachGeneralComment(json_data)
375 375
376 376 self.resetCommentFormState();
377 377 timeagoActivate();
@@ -1462,10 +1462,11 b' var CommentsController = function() {'
1462 1462
1463 1463 var comment = $('#comment-'+commentId);
1464 1464 var commentData = comment.data();
1465 console.log(commentData);
1466
1465 1467 if (commentData.commentInline) {
1466 var f_path = commentData.fPath;
1467 var line_no = commentData.lineNo;
1468 //TODO check this if we need to give f_path/line_no
1468 var f_path = commentData.commentFPath;
1469 var line_no = commentData.commentLineNo;
1469 1470 this.createComment(comment, f_path, line_no, commentId)
1470 1471 } else {
1471 1472 this.createGeneralComment('general', "$placeholder", commentId)
@@ -269,8 +269,8 b' window.ReviewersController = function ()'
269 269 'source_ref': sourceRef[2],
270 270 'target_repo': targetRepo,
271 271 'target_ref': targetRef[2],
272 'target_ref_type': sourceRef[0],
273 'target_ref_name': sourceRef[1]
272 'target_ref_type': targetRef[0],
273 'target_ref_name': targetRef[1]
274 274 });
275 275
276 276 self.currentRequest = $.ajax({
@@ -397,6 +397,7 b' window.ReviewersController = function ()'
397 397 'user_group': reviewer_obj.user_group,
398 398 'create': true,
399 399 'rule_show': true,
400 'rhodecode_user': templateContext.rhodecode_user
400 401 })
401 402
402 403 if (role === self.ROLE_REVIEWER) {
@@ -820,7 +821,8 b' window.ReviewersPanel = {'
820 821 'review_status': member.review_status,
821 822 'review_status_label': member.review_status_label,
822 823 'user_group': member.user_group,
823 'create': false
824 'create': false,
825 'rhodecode_user': templateContext.rhodecode_user
824 826 });
825 827
826 828 $(self.controller.$reviewMembers.selector).append(entry)
@@ -915,7 +917,8 b' window.ObserversPanel = {'
915 917 'review_status': member.review_status,
916 918 'review_status_label': member.review_status_label,
917 919 'user_group': member.user_group,
918 'create': false
920 'create': false,
921 'rhodecode_user': templateContext.rhodecode_user
919 922 });
920 923
921 924 $(self.controller.$observerMembers.selector).append(entry)
@@ -18,6 +18,8 b''
18 18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 20 import io
21 import shlex
22
21 23 import math
22 24 import re
23 25 import os
@@ -231,7 +233,7 b' def write_usage_data(event):'
231 233
232 234 # write every 6th hour
233 235 if age_in_min and age_in_min < 60 * 6:
234 log.debug('Usage file created %s minutes ago, skipping (threashold: %s)...',
236 log.debug('Usage file created %s minutes ago, skipping (threshold: %s minutes)...',
235 237 age_in_min, 60 * 6)
236 238 return
237 239
@@ -357,10 +359,16 b' class AsyncSubscriber(Subscriber):'
357 359 class AsyncSubprocessSubscriber(AsyncSubscriber):
358 360 """
359 361 Subscriber that uses the subprocess32 module to execute a command if an
360 event is received. Events are handled asynchronously.
362 event is received. Events are handled asynchronously::
363
364 subscriber = AsyncSubprocessSubscriber('ls -la', timeout=10)
365 subscriber(dummyEvent) # running __call__(event)
366
361 367 """
362 368
363 369 def __init__(self, cmd, timeout=None):
370 if not isinstance(cmd, (list, tuple)):
371 cmd = shlex.split(cmd)
364 372 super(AsyncSubprocessSubscriber, self).__init__()
365 373 self._cmd = cmd
366 374 self._timeout = timeout
@@ -384,6 +392,6 b' class AsyncSubprocessSubscriber(AsyncSub'
384 392 log.exception('Error while executing command.')
385 393 if e.output:
386 394 log.error('Command output: %s', e.output)
387 except:
395 except Exception:
388 396 log.exception(
389 397 'Exception while executing command %s.', cmd)
@@ -235,13 +235,14 b''
235 235 %for field in c.repo_fields:
236 236 <div class="field">
237 237 <div class="label">
238 <label for="${field.field_key_prefixed}">${field.field_label} (${field.field_key}):</label>
238 <label for="${field.field_key_prefixed}">${(field.field_label or field.field_key)}:</label>
239 239 </div>
240 240 <div class="input input-medium">
241 241 ${h.text(field.field_key_prefixed, field.field_value, class_='medium')}
242 %if field.field_desc:
243 <span class="help-block">${field.field_desc}</span>
244 %endif
242 <span class="help-block">
243 key: ${field.field_key};
244 ${field.field_desc}
245 </span>
245 246 </div>
246 247 </div>
247 248 %endfor
@@ -510,9 +510,9 b''
510 510 % if form_type == 'inline':
511 511 % if c.rhodecode_edition_id == 'EE':
512 512 ## Disable the button for CE, the "real" validation is in the backend code anyway
513 <input class="btn btn-warning comment-button-input submit-draft-action" id="save_draft_${lineno_id}" name="save_draft" type="submit" value="${_('Add draft')}" data-is-draft=true onclick="$(this).addClass('submitter')">
513 <input class="btn btn-draft comment-button-input submit-draft-action" id="save_draft_${lineno_id}" name="save_draft" type="submit" value="${_('Add draft')}" data-is-draft=true onclick="$(this).addClass('submitter')">
514 514 % else:
515 <input class="btn btn-warning comment-button-input submit-draft-action disabled" disabled="disabled" type="submit" value="${_('Add draft')}" onclick="return false;" title="Draft comments only available in EE edition of RhodeCode">
515 <input class="btn btn-draft comment-button-input submit-draft-action disabled" disabled="disabled" type="submit" value="${_('Add draft')}" onclick="return false;" title="Draft comments only available in EE edition of RhodeCode">
516 516 % endif
517 517 % endif
518 518
@@ -534,9 +534,9 b''
534 534 % if form_type == 'inline':
535 535 <input type="hidden" name="f_path" value="{0}">
536 536 <input type="hidden" name="line" value="${lineno_id}">
537 <button type="button" class="cb-comment-cancel" onclick="return Rhodecode.comments.cancelComment(this);">
538 <i class="icon-cancel-circled2"></i>
539 </button>
537 <span style="opacity: 0.7" class="cursor-pointer cb-comment-cancel" onclick="return Rhodecode.comments.cancelComment(this);">
538 ${_('dismiss')}
539 </span>
540 540 % endif
541 541 </div>
542 542
@@ -645,12 +645,18 b" return '%s_%s_%i' % (h.md5_safe(commit+f"
645 645 <div class="reply-thread-container-wrapper${extra_class}" style="${extra_style}">
646 646 <div class="reply-thread-container${extra_class}">
647 647 <div class="reply-thread-gravatar">
648 % if c.rhodecode_user.username != h.DEFAULT_USER:
648 649 ${base.gravatar(c.rhodecode_user.email, 20, tooltip=True, user=c.rhodecode_user)}
650 % endif
649 651 </div>
652
650 653 <div class="reply-thread-reply-button">
654 % if c.rhodecode_user.username != h.DEFAULT_USER:
651 655 ## initial reply button, some JS logic can append here a FORM to leave a first comment.
652 656 <button class="cb-comment-add-button" onclick="return Rhodecode.comments.createComment(this, '${f_path}', '${line_no}', null)">Reply...</button>
657 % endif
653 658 </div>
659 ##% endif
654 660 <div class="reply-thread-last"></div>
655 661 </div>
656 662 </div>
@@ -910,6 +916,16 b' def get_comments_for(diff_type, comments'
910 916 <div class="sidebar__inner">
911 917 <div class="sidebar__bar">
912 918 <div class="pull-right">
919
920 <div class="btn-group" style="margin-right: 5px;">
921 <a class="tooltip btn" onclick="scrollDown();return false" title="${_('Scroll to page bottom')}">
922 <i class="icon-arrow_down"></i>
923 </a>
924 <a class="tooltip btn" onclick="scrollUp();return false" title="${_('Scroll to page top')}">
925 <i class="icon-arrow_up"></i>
926 </a>
927 </div>
928
913 929 <div class="btn-group">
914 930 <a class="btn tooltip toggle-wide-diff" href="#toggle-wide-diff" onclick="toggleWideDiff(this); return false" title="${h.tooltip(_('Toggle wide diff'))}">
915 931 <i class="icon-wide-mode"></i>
@@ -948,9 +964,37 b' def get_comments_for(diff_type, comments'
948 964 </div>
949 965 <div class="btn-group">
950 966
951 <div class="pull-left">
952 ${h.hidden('diff_menu_{}'.format(diffset_container_id))}
953 </div>
967 <details class="details-reset details-inline-block">
968 <summary class="noselect btn">
969 <i class="icon-options cursor-pointer" op="options"></i>
970 </summary>
971
972 <div>
973 <details-menu class="details-dropdown" style="top: 35px;">
974
975 <div class="dropdown-item">
976 <div style="padding: 2px 0px">
977 % if request.GET.get('ignorews', '') == '1':
978 <a href="${h.current_route_path(request, ignorews=0)}">${_('Show whitespace changes')}</a>
979 % else:
980 <a href="${h.current_route_path(request, ignorews=1)}">${_('Hide whitespace changes')}</a>
981 % endif
982 </div>
983 </div>
984
985 <div class="dropdown-item">
986 <div style="padding: 2px 0px">
987 % if request.GET.get('fullcontext', '') == '1':
988 <a href="${h.current_route_path(request, fullcontext=0)}">${_('Hide full context diff')}</a>
989 % else:
990 <a href="${h.current_route_path(request, fullcontext=1)}">${_('Show full context diff')}</a>
991 % endif
992 </div>
993 </div>
994
995 </details-menu>
996 </div>
997 </details>
954 998
955 999 </div>
956 1000 </div>
@@ -970,7 +1014,6 b' def get_comments_for(diff_type, comments'
970 1014 </strong>
971 1015 </div>
972 1016 <div class="pull-right noselect">
973
974 1017 %if commit:
975 1018 <span>
976 1019 <code>${h.show_id(commit)}</code>
@@ -1264,61 +1307,6 b' def get_comments_for(diff_type, comments'
1264 1307 return null;
1265 1308 };
1266 1309
1267 var preloadDiffMenuData = {
1268 results: [
1269
1270 ## Whitespace change
1271 % if request.GET.get('ignorews', '') == '1':
1272 {
1273 id: 2,
1274 text: _gettext('Show whitespace changes'),
1275 action: function () {},
1276 url: "${h.current_route_path(request, ignorews=0)|n}"
1277 },
1278 % else:
1279 {
1280 id: 2,
1281 text: _gettext('Hide whitespace changes'),
1282 action: function () {},
1283 url: "${h.current_route_path(request, ignorews=1)|n}"
1284 },
1285 % endif
1286
1287 ## FULL CONTEXT
1288 % if request.GET.get('fullcontext', '') == '1':
1289 {
1290 id: 3,
1291 text: _gettext('Hide full context diff'),
1292 action: function () {},
1293 url: "${h.current_route_path(request, fullcontext=0)|n}"
1294 },
1295 % else:
1296 {
1297 id: 3,
1298 text: _gettext('Show full context diff'),
1299 action: function () {},
1300 url: "${h.current_route_path(request, fullcontext=1)|n}"
1301 },
1302 % endif
1303
1304 ]
1305 };
1306
1307 var diffMenuId = "#diff_menu_" + "${diffset_container_id}";
1308 $(diffMenuId).select2({
1309 minimumResultsForSearch: -1,
1310 containerCssClass: "drop-menu-no-width",
1311 dropdownCssClass: "drop-menu-dropdown",
1312 dropdownAutoWidth: true,
1313 data: preloadDiffMenuData,
1314 placeholder: "${_('...')}",
1315 });
1316 $(diffMenuId).on('select2-selecting', function (e) {
1317 e.choice.action();
1318 if (e.choice.url !== null) {
1319 window.location = e.choice.url
1320 }
1321 });
1322 1310 toggleExpand = function (el, diffsetEl) {
1323 1311 var el = $(el);
1324 1312 if (el.hasClass('collapsed')) {
@@ -65,6 +65,9 b" var data_hovercard_url = pyroutes.url('h"
65 65
66 66 <tr id="reviewer_<%= member.user_id %>" class="reviewer_entry" tooltip="Review Group" data-reviewer-user-id="<%= member.user_id %>">
67 67
68 <% if (create) { %>
69 <td style="width: 1px"></td>
70 <% } else { %>
68 71 <td style="width: 20px">
69 72 <div class="tooltip presence-state" style="display: none; position: absolute; left: 2px" title="This users is currently at this page">
70 73 <i class="icon-eye" style="color: #0ac878"></i>
@@ -79,6 +82,25 b" var data_hovercard_url = pyroutes.url('h"
79 82 </div>
80 83 <% } %>
81 84 </td>
85 <% } %>
86
87
88 <% if (mandatory) { %>
89 <td style="text-align: right;width: 10px;">
90 <div class="reviewer_member_mandatory tooltip" title="Mandatory reviewer">
91 <i class="icon-lock"></i>
92 </div>
93 </td>
94
95 <% } else { %>
96 <td style="text-align: right;width: 10px;">
97 <% if (allowed_to_update) { %>
98 <div class="<%=role %>_member_remove" onclick="reviewersController.removeMember(<%= member.user_id %>, true)" style="visibility: <%= edit_visibility %>;">
99 <i class="icon-remove" style="color: #e85e4d;"></i>
100 </div>
101 <% } %>
102 </td>
103 <% } %>
82 104
83 105 <td>
84 106 <div id="reviewer_<%= member.user_id %>_name" class="reviewer_name">
@@ -94,9 +116,6 b" var data_hovercard_url = pyroutes.url('h"
94 116 })
95 117 %>
96 118 </div>
97 </td>
98
99 <td style="width: 10px">
100 119 <% if (reviewGroup !== null) { %>
101 120 <span class="tooltip" title="Member of review group from rule: `<%= member.user_group.name %>`" style="color: <%= reviewGroupColor %>">
102 121 <%- reviewGroup %>
@@ -104,23 +123,6 b" var data_hovercard_url = pyroutes.url('h"
104 123 <% } %>
105 124 </td>
106 125
107 <% if (mandatory) { %>
108 <td style="text-align: right;width: 10px;">
109 <div class="reviewer_member_mandatory tooltip" title="Mandatory reviewer">
110 <i class="icon-lock"></i>
111 </div>
112 </td>
113
114 <% } else { %>
115 <td style="text-align: right;width: 10px;">
116 <% if (allowed_to_update) { %>
117 <div class="<%=role %>_member_remove" onclick="reviewersController.removeMember(<%= member.user_id %>, true)" style="visibility: <%= edit_visibility %>;">
118 <i class="icon-remove"></i>
119 </div>
120 <% } %>
121 </td>
122 <% } %>
123
124 126 </tr>
125 127
126 128 <tr id="reviewer_<%= member.user_id %>_rules">
@@ -194,9 +196,10 b' if (show_disabled) {'
194 196 <script id="ejs_sideBarCommentHovercard" type="text/template" class="ejsTemplate">
195 197
196 198 <div>
199
197 200 <% if (is_todo) { %>
198 201 <% if (inline) { %>
199 <strong>Inline</strong> TODO on line: <%= line_no %>
202 <strong>Inline</strong> TODO (<code>#<%- comment_id -%></code>) on line: <%= line_no %>
200 203 <% if (version_info) { %>
201 204 <%= version_info %>
202 205 <% } %>
@@ -206,14 +209,14 b' if (show_disabled) {'
206 209 <% if (review_status) { %>
207 210 <i class="icon-circle review-status-<%= review_status %>"></i>
208 211 <% } %>
209 <strong>General</strong> TODO
212 <strong>General</strong> TODO (<code>#<%- comment_id -%></code>)
210 213 <% if (version_info) { %>
211 214 <%= version_info %>
212 215 <% } %>
213 216 <% } %>
214 217 <% } else { %>
215 218 <% if (inline) { %>
216 <strong>Inline</strong> comment on line: <%= line_no %>
219 <strong>Inline</strong> comment (<code>#<%- comment_id -%></code>) on line: <%= line_no %>
217 220 <% if (version_info) { %>
218 221 <%= version_info %>
219 222 <% } %>
@@ -223,7 +226,7 b' if (show_disabled) {'
223 226 <% if (review_status) { %>
224 227 <i class="icon-circle review-status-<%= review_status %>"></i>
225 228 <% } %>
226 <strong>General</strong> comment
229 <strong>General</strong> comment (<code>#<%- comment_id -%></code>)
227 230 <% if (version_info) { %>
228 231 <%= version_info %>
229 232 <% } %>
@@ -598,26 +598,13 b''
598 598 ${c.reviewers_count}
599 599 </div>
600 600
601 ## REVIEW RULES
602 <div id="review_rules" style="display: none" class="">
603 <div class="right-sidebar-expanded-state pr-details-title">
604 <span class="sidebar-heading">
605 ${_('Reviewer rules')}
606 </span>
607
608 </div>
609 <div class="pr-reviewer-rules">
610 ## review rules will be appended here, by default reviewers logic
611 </div>
612 <input id="review_data" type="hidden" name="review_data" value="">
613 </div>
614
615 601 ## REVIEWERS
616 602 <div class="right-sidebar-expanded-state pr-details-title">
617 603 <span class="tooltip sidebar-heading" title="${vote_title}">
618 604 <i class="icon-circle review-status-${c.pull_request_review_status}"></i>
619 605 ${_('Reviewers')}
620 606 </span>
607
621 608 %if c.allowed_to_update:
622 609 <span id="open_edit_reviewers" class="block-right action_button last-item">${_('Edit')}</span>
623 610 <span id="close_edit_reviewers" class="block-right action_button last-item" style="display: none;">${_('Close')}</span>
@@ -629,6 +616,15 b''
629 616
630 617 <div id="reviewers" class="right-sidebar-expanded-state pr-details-content reviewers">
631 618
619 <div id="review_rules" style="display: none" class="">
620
621 <strong>${_('Reviewer rules')}</strong>
622 <div class="pr-reviewer-rules">
623 ## review rules will be appended here, by default reviewers logic
624 </div>
625 <input id="review_data" type="hidden" name="review_data" value="">
626 </div>
627
632 628 ## members redering block
633 629 <input type="hidden" name="__start__" value="review_members:sequence">
634 630
@@ -649,7 +645,7 b''
649 645 </div>
650 646 % endif
651 647 <div class="pull-right" style="margin-bottom: 15px">
652 <button data-role="reviewer" id="update_reviewers" class="btn btn-small no-margin">${_('Save Changes')}</button>
648 <button data-role="reviewer" id="update_reviewers" class="btn btn-sm no-margin">${_('Save Changes')}</button>
653 649 </div>
654 650 %endif
655 651 </div>
@@ -702,7 +698,7 b''
702 698 </div>
703 699 % endif
704 700 <div class="pull-right" style="margin-bottom: 15px">
705 <button data-role="observer" id="update_observers" class="btn btn-small no-margin">${_('Save Changes')}</button>
701 <button data-role="observer" id="update_observers" class="btn btn-sm no-margin">${_('Save Changes')}</button>
706 702 </div>
707 703 %endif
708 704 </div>
@@ -119,3 +119,4 b' def includeme(config):'
119 119
120 120 # This needs to be the LAST item
121 121 config.add_tween('rhodecode.lib.middleware.request_wrapper.RequestWrapperTween')
122 log.debug('configured all tweens')
General Comments 0
You need to be logged in to leave comments. Login now