##// 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 7e2eb896a02ca7cd2cd9f0f853ef3dac3f0039e3 v4.20.1
70 7e2eb896a02ca7cd2cd9f0f853ef3dac3f0039e3 v4.20.1
71 8bb5fece08ab65986225b184e46f53d2a71729cb v4.21.0
71 8bb5fece08ab65986225b184e46f53d2a71729cb v4.21.0
72 90734aac31ee4563bbe665a43ff73190cc762275 v4.22.0
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 proxy_set_header X-Host $http_host;
36 proxy_set_header X-Host $http_host;
37 proxy_set_header X-Real-IP $remote_addr;
37 proxy_set_header X-Real-IP $remote_addr;
38 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
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 proxy_set_header Proxy-host $proxy_host;
41 proxy_set_header Proxy-host $proxy_host;
40
42
41 proxy_connect_timeout 7200;
43 proxy_connect_timeout 7200;
@@ -9,6 +9,8 b' Release Notes'
9 .. toctree::
9 .. toctree::
10 :maxdepth: 1
10 :maxdepth: 1
11
11
12 release-notes-4.23.2.rst
13 release-notes-4.23.1.rst
12 release-notes-4.23.0.rst
14 release-notes-4.23.0.rst
13 release-notes-4.22.0.rst
15 release-notes-4.22.0.rst
14 release-notes-4.21.0.rst
16 release-notes-4.21.0.rst
@@ -1883,7 +1883,7 b' self: super: {'
1883 };
1883 };
1884 };
1884 };
1885 "rhodecode-enterprise-ce" = super.buildPythonPackage {
1885 "rhodecode-enterprise-ce" = super.buildPythonPackage {
1886 name = "rhodecode-enterprise-ce-4.23.0";
1886 name = "rhodecode-enterprise-ce-4.23.2";
1887 buildInputs = [
1887 buildInputs = [
1888 self."pytest"
1888 self."pytest"
1889 self."py"
1889 self."py"
@@ -527,6 +527,14 b' class jsonrpc_deprecated_method(object):'
527 return result
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 def includeme(config):
538 def includeme(config):
531 plugin_module = 'rhodecode.api'
539 plugin_module = 'rhodecode.api'
532 plugin_settings = get_plugin_settings(
540 plugin_settings = get_plugin_settings(
@@ -549,7 +557,8 b' def includeme(config):'
549 config.add_route(
557 config.add_route(
550 'apiv2', plugin_settings.get('url', DEFAULT_URL), jsonrpc_call=True)
558 'apiv2', plugin_settings.get('url', DEFAULT_URL), jsonrpc_call=True)
551
559
552 config.scan(plugin_module, ignore='rhodecode.api.tests')
553 # register some exception handling view
560 # register some exception handling view
554 config.add_view(exception_view, context=JSONRPCBaseError)
561 config.add_view(exception_view, context=JSONRPCBaseError)
555 config.add_notfound_view(exception_view, jsonrpc_method_not_found=True)
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 labs_active = str2bool(settings.get('labs_settings_active', False))
144 labs_active = str2bool(settings.get('labs_settings_active', False))
145 navigation_registry_instance = NavigationRegistry(labs_active=labs_active)
145 navigation_registry_instance = NavigationRegistry(labs_active=labs_active)
146 config.registry.registerUtility(navigation_registry_instance)
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 Admin prefixed routes
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 config.add_route(
45 config.add_route(
30 name='admin_audit_logs',
46 name='admin_audit_logs',
31 pattern='/audit_logs')
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 config.add_route(
54 config.add_route(
34 name='admin_audit_log_entry',
55 name='admin_audit_log_entry',
35 pattern='/audit_logs/{audit_log_id}')
56 pattern='/audit_logs/{audit_log_id}')
36
57 config.add_view(
37 config.add_route(
58 AdminAuditLogsView,
38 name='pull_requests_global_0', # backward compat
59 attr='admin_audit_log_entry',
39 pattern='/pull_requests/{pull_request_id:\d+}')
60 route_name='admin_audit_log_entry', request_method='GET',
40 config.add_route(
61 renderer='rhodecode:templates/admin/admin_audit_log_entry.mako')
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+}')
46
62
47 config.add_route(
63 config.add_route(
48 name='admin_settings_open_source',
64 name='admin_settings_open_source',
49 pattern='/settings/open_source')
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 config.add_route(
72 config.add_route(
51 name='admin_settings_vcs_svn_generate_cfg',
73 name='admin_settings_vcs_svn_generate_cfg',
52 pattern='/settings/vcs/svn_generate_cfg')
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 config.add_route(
81 config.add_route(
55 name='admin_settings_system',
82 name='admin_settings_system',
56 pattern='/settings/system')
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 config.add_route(
90 config.add_route(
58 name='admin_settings_system_update',
91 name='admin_settings_system_update',
59 pattern='/settings/system/updates')
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 config.add_route(
99 config.add_route(
62 name='admin_settings_exception_tracker',
100 name='admin_settings_exception_tracker',
63 pattern='/settings/exceptions')
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 config.add_route(
108 config.add_route(
65 name='admin_settings_exception_tracker_delete_all',
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 config.add_route(
117 config.add_route(
68 name='admin_settings_exception_tracker_show',
118 name='admin_settings_exception_tracker_show',
69 pattern='/settings/exceptions/{exception_id}')
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 config.add_route(
126 config.add_route(
71 name='admin_settings_exception_tracker_delete',
127 name='admin_settings_exception_tracker_delete',
72 pattern='/settings/exceptions/{exception_id}/delete')
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 config.add_route(
135 config.add_route(
75 name='admin_settings_sessions',
136 name='admin_settings_sessions',
76 pattern='/settings/sessions')
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 config.add_route(
144 config.add_route(
78 name='admin_settings_sessions_cleanup',
145 name='admin_settings_sessions_cleanup',
79 pattern='/settings/sessions/cleanup')
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 config.add_route(
152 config.add_route(
82 name='admin_settings_process_management',
153 name='admin_settings_process_management',
83 pattern='/settings/process_management')
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 config.add_route(
161 config.add_route(
85 name='admin_settings_process_management_data',
162 name='admin_settings_process_management_data',
86 pattern='/settings/process_management/data')
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 config.add_route(
170 config.add_route(
88 name='admin_settings_process_management_signal',
171 name='admin_settings_process_management_signal',
89 pattern='/settings/process_management/signal')
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 config.add_route(
179 config.add_route(
91 name='admin_settings_process_management_master_signal',
180 name='admin_settings_process_management_master_signal',
92 pattern='/settings/process_management/master_signal')
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 # default settings
188 # default settings
95 config.add_route(
189 config.add_route(
96 name='admin_defaults_repositories',
190 name='admin_defaults_repositories',
97 pattern='/defaults/repositories')
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 config.add_route(
198 config.add_route(
99 name='admin_defaults_repositories_update',
199 name='admin_defaults_repositories_update',
100 pattern='/defaults/repositories/update')
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 # admin settings
207 # admin settings
103
208
104 config.add_route(
209 config.add_route(
105 name='admin_settings',
210 name='admin_settings',
106 pattern='/settings')
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 config.add_route(
218 config.add_route(
108 name='admin_settings_update',
219 name='admin_settings_update',
109 pattern='/settings/update')
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 config.add_route(
227 config.add_route(
112 name='admin_settings_global',
228 name='admin_settings_global',
113 pattern='/settings/global')
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 config.add_route(
236 config.add_route(
115 name='admin_settings_global_update',
237 name='admin_settings_global_update',
116 pattern='/settings/global/update')
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 config.add_route(
245 config.add_route(
119 name='admin_settings_vcs',
246 name='admin_settings_vcs',
120 pattern='/settings/vcs')
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 config.add_route(
254 config.add_route(
122 name='admin_settings_vcs_update',
255 name='admin_settings_vcs_update',
123 pattern='/settings/vcs/update')
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 config.add_route(
263 config.add_route(
125 name='admin_settings_vcs_svn_pattern_delete',
264 name='admin_settings_vcs_svn_pattern_delete',
126 pattern='/settings/vcs/svn_pattern_delete')
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 config.add_route(
272 config.add_route(
129 name='admin_settings_mapping',
273 name='admin_settings_mapping',
130 pattern='/settings/mapping')
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 config.add_route(
281 config.add_route(
132 name='admin_settings_mapping_update',
282 name='admin_settings_mapping_update',
133 pattern='/settings/mapping/update')
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 config.add_route(
290 config.add_route(
136 name='admin_settings_visual',
291 name='admin_settings_visual',
137 pattern='/settings/visual')
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 config.add_route(
299 config.add_route(
139 name='admin_settings_visual_update',
300 name='admin_settings_visual_update',
140 pattern='/settings/visual/update')
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 config.add_route(
308 config.add_route(
143 name='admin_settings_issuetracker',
309 name='admin_settings_issuetracker',
144 pattern='/settings/issue-tracker')
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 config.add_route(
317 config.add_route(
146 name='admin_settings_issuetracker_update',
318 name='admin_settings_issuetracker_update',
147 pattern='/settings/issue-tracker/update')
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 config.add_route(
326 config.add_route(
149 name='admin_settings_issuetracker_test',
327 name='admin_settings_issuetracker_test',
150 pattern='/settings/issue-tracker/test')
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 config.add_route(
335 config.add_route(
152 name='admin_settings_issuetracker_delete',
336 name='admin_settings_issuetracker_delete',
153 pattern='/settings/issue-tracker/delete')
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 config.add_route(
344 config.add_route(
156 name='admin_settings_email',
345 name='admin_settings_email',
157 pattern='/settings/email')
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 config.add_route(
353 config.add_route(
159 name='admin_settings_email_update',
354 name='admin_settings_email_update',
160 pattern='/settings/email/update')
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 config.add_route(
362 config.add_route(
163 name='admin_settings_hooks',
363 name='admin_settings_hooks',
164 pattern='/settings/hooks')
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 config.add_route(
371 config.add_route(
166 name='admin_settings_hooks_update',
372 name='admin_settings_hooks_update',
167 pattern='/settings/hooks/update')
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 config.add_route(
380 config.add_route(
169 name='admin_settings_hooks_delete',
381 name='admin_settings_hooks_delete',
170 pattern='/settings/hooks/delete')
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 config.add_route(
389 config.add_route(
173 name='admin_settings_search',
390 name='admin_settings_search',
174 pattern='/settings/search')
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 config.add_route(
398 config.add_route(
177 name='admin_settings_labs',
399 name='admin_settings_labs',
178 pattern='/settings/labs')
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 config.add_route(
407 config.add_route(
180 name='admin_settings_labs_update',
408 name='admin_settings_labs_update',
181 pattern='/settings/labs/update')
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 # Automation EE feature
416 # Automation EE feature
184 config.add_route(
417 config.add_route(
185 'admin_settings_automation',
418 'admin_settings_automation',
186 pattern=ADMIN_PREFIX + '/settings/automation')
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 # global permissions
426 # global permissions
189
427
190 config.add_route(
428 config.add_route(
191 name='admin_permissions_application',
429 name='admin_permissions_application',
192 pattern='/permissions/application')
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 config.add_route(
437 config.add_route(
194 name='admin_permissions_application_update',
438 name='admin_permissions_application_update',
195 pattern='/permissions/application/update')
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 config.add_route(
446 config.add_route(
198 name='admin_permissions_global',
447 name='admin_permissions_global',
199 pattern='/permissions/global')
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 config.add_route(
455 config.add_route(
201 name='admin_permissions_global_update',
456 name='admin_permissions_global_update',
202 pattern='/permissions/global/update')
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 config.add_route(
464 config.add_route(
205 name='admin_permissions_object',
465 name='admin_permissions_object',
206 pattern='/permissions/object')
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 config.add_route(
473 config.add_route(
208 name='admin_permissions_object_update',
474 name='admin_permissions_object_update',
209 pattern='/permissions/object/update')
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 # Branch perms EE feature
482 # Branch perms EE feature
212 config.add_route(
483 config.add_route(
213 name='admin_permissions_branch',
484 name='admin_permissions_branch',
214 pattern='/permissions/branch')
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 config.add_route(
492 config.add_route(
217 name='admin_permissions_ips',
493 name='admin_permissions_ips',
218 pattern='/permissions/ips')
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 config.add_route(
501 config.add_route(
221 name='admin_permissions_overview',
502 name='admin_permissions_overview',
222 pattern='/permissions/overview')
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 config.add_route(
510 config.add_route(
225 name='admin_permissions_auth_token_access',
511 name='admin_permissions_auth_token_access',
226 pattern='/permissions/auth_token_access')
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 config.add_route(
519 config.add_route(
229 name='admin_permissions_ssh_keys',
520 name='admin_permissions_ssh_keys',
230 pattern='/permissions/ssh_keys')
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 config.add_route(
528 config.add_route(
232 name='admin_permissions_ssh_keys_data',
529 name='admin_permissions_ssh_keys_data',
233 pattern='/permissions/ssh_keys/data')
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 config.add_route(
537 config.add_route(
235 name='admin_permissions_ssh_keys_update',
538 name='admin_permissions_ssh_keys_update',
236 pattern='/permissions/ssh_keys/update')
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 # users admin
546 # users admin
239 config.add_route(
547 config.add_route(
240 name='users',
548 name='users',
241 pattern='/users')
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 config.add_route(
556 config.add_route(
244 name='users_data',
557 name='users_data',
245 pattern='/users_data')
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 config.add_route(
566 config.add_route(
248 name='users_create',
567 name='users_create',
249 pattern='/users/create')
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 config.add_route(
575 config.add_route(
252 name='users_new',
576 name='users_new',
253 pattern='/users/new')
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 # user management
584 # user management
256 config.add_route(
585 config.add_route(
257 name='user_edit',
586 name='user_edit',
258 pattern='/users/{user_id:\d+}/edit',
587 pattern='/users/{user_id:\d+}/edit',
259 user_route=True)
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 config.add_route(
595 config.add_route(
261 name='user_edit_advanced',
596 name='user_edit_advanced',
262 pattern='/users/{user_id:\d+}/edit/advanced',
597 pattern='/users/{user_id:\d+}/edit/advanced',
263 user_route=True)
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 config.add_route(
605 config.add_route(
265 name='user_edit_global_perms',
606 name='user_edit_global_perms',
266 pattern='/users/{user_id:\d+}/edit/global_permissions',
607 pattern='/users/{user_id:\d+}/edit/global_permissions',
267 user_route=True)
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 config.add_route(
615 config.add_route(
269 name='user_edit_global_perms_update',
616 name='user_edit_global_perms_update',
270 pattern='/users/{user_id:\d+}/edit/global_permissions/update',
617 pattern='/users/{user_id:\d+}/edit/global_permissions/update',
271 user_route=True)
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 config.add_route(
625 config.add_route(
273 name='user_update',
626 name='user_update',
274 pattern='/users/{user_id:\d+}/update',
627 pattern='/users/{user_id:\d+}/update',
275 user_route=True)
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 config.add_route(
635 config.add_route(
277 name='user_delete',
636 name='user_delete',
278 pattern='/users/{user_id:\d+}/delete',
637 pattern='/users/{user_id:\d+}/delete',
279 user_route=True)
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 config.add_route(
645 config.add_route(
281 name='user_enable_force_password_reset',
646 name='user_enable_force_password_reset',
282 pattern='/users/{user_id:\d+}/password_reset_enable',
647 pattern='/users/{user_id:\d+}/password_reset_enable',
283 user_route=True)
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 config.add_route(
655 config.add_route(
285 name='user_disable_force_password_reset',
656 name='user_disable_force_password_reset',
286 pattern='/users/{user_id:\d+}/password_reset_disable',
657 pattern='/users/{user_id:\d+}/password_reset_disable',
287 user_route=True)
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 config.add_route(
665 config.add_route(
289 name='user_create_personal_repo_group',
666 name='user_create_personal_repo_group',
290 pattern='/users/{user_id:\d+}/create_repo_group',
667 pattern='/users/{user_id:\d+}/create_repo_group',
291 user_route=True)
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 # user notice
675 # user notice
294 config.add_route(
676 config.add_route(
295 name='user_notice_dismiss',
677 name='user_notice_dismiss',
296 pattern='/users/{user_id:\d+}/notice_dismiss',
678 pattern='/users/{user_id:\d+}/notice_dismiss',
297 user_route=True)
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 # user auth tokens
686 # user auth tokens
300 config.add_route(
687 config.add_route(
301 name='edit_user_auth_tokens',
688 name='edit_user_auth_tokens',
302 pattern='/users/{user_id:\d+}/edit/auth_tokens',
689 pattern='/users/{user_id:\d+}/edit/auth_tokens',
303 user_route=True)
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 config.add_route(
697 config.add_route(
305 name='edit_user_auth_tokens_view',
698 name='edit_user_auth_tokens_view',
306 pattern='/users/{user_id:\d+}/edit/auth_tokens/view',
699 pattern='/users/{user_id:\d+}/edit/auth_tokens/view',
307 user_route=True)
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 config.add_route(
707 config.add_route(
309 name='edit_user_auth_tokens_add',
708 name='edit_user_auth_tokens_add',
310 pattern='/users/{user_id:\d+}/edit/auth_tokens/new',
709 pattern='/users/{user_id:\d+}/edit/auth_tokens/new',
311 user_route=True)
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 config.add_route(
716 config.add_route(
313 name='edit_user_auth_tokens_delete',
717 name='edit_user_auth_tokens_delete',
314 pattern='/users/{user_id:\d+}/edit/auth_tokens/delete',
718 pattern='/users/{user_id:\d+}/edit/auth_tokens/delete',
315 user_route=True)
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 # user ssh keys
725 # user ssh keys
318 config.add_route(
726 config.add_route(
319 name='edit_user_ssh_keys',
727 name='edit_user_ssh_keys',
320 pattern='/users/{user_id:\d+}/edit/ssh_keys',
728 pattern='/users/{user_id:\d+}/edit/ssh_keys',
321 user_route=True)
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 config.add_route(
736 config.add_route(
323 name='edit_user_ssh_keys_generate_keypair',
737 name='edit_user_ssh_keys_generate_keypair',
324 pattern='/users/{user_id:\d+}/edit/ssh_keys/generate',
738 pattern='/users/{user_id:\d+}/edit/ssh_keys/generate',
325 user_route=True)
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 config.add_route(
746 config.add_route(
327 name='edit_user_ssh_keys_add',
747 name='edit_user_ssh_keys_add',
328 pattern='/users/{user_id:\d+}/edit/ssh_keys/new',
748 pattern='/users/{user_id:\d+}/edit/ssh_keys/new',
329 user_route=True)
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 config.add_route(
755 config.add_route(
331 name='edit_user_ssh_keys_delete',
756 name='edit_user_ssh_keys_delete',
332 pattern='/users/{user_id:\d+}/edit/ssh_keys/delete',
757 pattern='/users/{user_id:\d+}/edit/ssh_keys/delete',
333 user_route=True)
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 # user emails
764 # user emails
336 config.add_route(
765 config.add_route(
337 name='edit_user_emails',
766 name='edit_user_emails',
338 pattern='/users/{user_id:\d+}/edit/emails',
767 pattern='/users/{user_id:\d+}/edit/emails',
339 user_route=True)
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 config.add_route(
775 config.add_route(
341 name='edit_user_emails_add',
776 name='edit_user_emails_add',
342 pattern='/users/{user_id:\d+}/edit/emails/new',
777 pattern='/users/{user_id:\d+}/edit/emails/new',
343 user_route=True)
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 config.add_route(
784 config.add_route(
345 name='edit_user_emails_delete',
785 name='edit_user_emails_delete',
346 pattern='/users/{user_id:\d+}/edit/emails/delete',
786 pattern='/users/{user_id:\d+}/edit/emails/delete',
347 user_route=True)
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 # user IPs
793 # user IPs
350 config.add_route(
794 config.add_route(
351 name='edit_user_ips',
795 name='edit_user_ips',
352 pattern='/users/{user_id:\d+}/edit/ips',
796 pattern='/users/{user_id:\d+}/edit/ips',
353 user_route=True)
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 config.add_route(
804 config.add_route(
355 name='edit_user_ips_add',
805 name='edit_user_ips_add',
356 pattern='/users/{user_id:\d+}/edit/ips/new',
806 pattern='/users/{user_id:\d+}/edit/ips/new',
357 user_route_with_default=True) # enabled for default user too
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 config.add_route(
813 config.add_route(
359 name='edit_user_ips_delete',
814 name='edit_user_ips_delete',
360 pattern='/users/{user_id:\d+}/edit/ips/delete',
815 pattern='/users/{user_id:\d+}/edit/ips/delete',
361 user_route_with_default=True) # enabled for default user too
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 # user perms
822 # user perms
364 config.add_route(
823 config.add_route(
365 name='edit_user_perms_summary',
824 name='edit_user_perms_summary',
366 pattern='/users/{user_id:\d+}/edit/permissions_summary',
825 pattern='/users/{user_id:\d+}/edit/permissions_summary',
367 user_route=True)
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 config.add_route(
833 config.add_route(
369 name='edit_user_perms_summary_json',
834 name='edit_user_perms_summary_json',
370 pattern='/users/{user_id:\d+}/edit/permissions_summary/json',
835 pattern='/users/{user_id:\d+}/edit/permissions_summary/json',
371 user_route=True)
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 # user user groups management
843 # user user groups management
374 config.add_route(
844 config.add_route(
375 name='edit_user_groups_management',
845 name='edit_user_groups_management',
376 pattern='/users/{user_id:\d+}/edit/groups_management',
846 pattern='/users/{user_id:\d+}/edit/groups_management',
377 user_route=True)
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 config.add_route(
854 config.add_route(
380 name='edit_user_groups_management_updates',
855 name='edit_user_groups_management_updates',
381 pattern='/users/{user_id:\d+}/edit/edit_user_groups_management/updates',
856 pattern='/users/{user_id:\d+}/edit/edit_user_groups_management/updates',
382 user_route=True)
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 # user audit logs
863 # user audit logs
385 config.add_route(
864 config.add_route(
386 name='edit_user_audit_logs',
865 name='edit_user_audit_logs',
387 pattern='/users/{user_id:\d+}/edit/audit', user_route=True)
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 config.add_route(
873 config.add_route(
390 name='edit_user_audit_logs_download',
874 name='edit_user_audit_logs_download',
391 pattern='/users/{user_id:\d+}/edit/audit/download', user_route=True)
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 # user caches
882 # user caches
394 config.add_route(
883 config.add_route(
395 name='edit_user_caches',
884 name='edit_user_caches',
396 pattern='/users/{user_id:\d+}/edit/caches',
885 pattern='/users/{user_id:\d+}/edit/caches',
397 user_route=True)
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 config.add_route(
893 config.add_route(
399 name='edit_user_caches_update',
894 name='edit_user_caches_update',
400 pattern='/users/{user_id:\d+}/edit/caches/update',
895 pattern='/users/{user_id:\d+}/edit/caches/update',
401 user_route=True)
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 # user-groups admin
902 # user-groups admin
404 config.add_route(
903 config.add_route(
405 name='user_groups',
904 name='user_groups',
406 pattern='/user_groups')
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 config.add_route(
912 config.add_route(
409 name='user_groups_data',
913 name='user_groups_data',
410 pattern='/user_groups_data')
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 config.add_route(
921 config.add_route(
413 name='user_groups_new',
922 name='user_groups_new',
414 pattern='/user_groups/new')
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 config.add_route(
930 config.add_route(
417 name='user_groups_create',
931 name='user_groups_create',
418 pattern='/user_groups/create')
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 # repos admin
939 # repos admin
421 config.add_route(
940 config.add_route(
422 name='repos',
941 name='repos',
423 pattern='/repos')
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 config.add_route(
949 config.add_route(
426 name='repos_data',
950 name='repos_data',
427 pattern='/repos_data')
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 config.add_route(
958 config.add_route(
430 name='repo_new',
959 name='repo_new',
431 pattern='/repos/new')
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 config.add_route(
967 config.add_route(
434 name='repo_create',
968 name='repo_create',
435 pattern='/repos/create')
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 # repo groups admin
976 # repo groups admin
438 config.add_route(
977 config.add_route(
439 name='repo_groups',
978 name='repo_groups',
440 pattern='/repo_groups')
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 config.add_route(
986 config.add_route(
443 name='repo_groups_data',
987 name='repo_groups_data',
444 pattern='/repo_groups_data')
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 config.add_route(
995 config.add_route(
447 name='repo_group_new',
996 name='repo_group_new',
448 pattern='/repo_group/new')
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 config.add_route(
1004 config.add_route(
451 name='repo_group_create',
1005 name='repo_group_create',
452 pattern='/repo_group/create')
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 def includeme(config):
1014 def includeme(config):
456 from rhodecode.apps._base.navigation import includeme as nav_includeme
1015 from rhodecode.apps._base.navigation import includeme as nav_includeme
1016 from rhodecode.apps.admin.views.main_views import AdminMainView
457
1017
458 # Create admin navigation registry and add it to the pyramid registry.
1018 # Create admin navigation registry and add it to the pyramid registry.
459 nav_includeme(config)
1019 nav_includeme(config)
460
1020
461 # main admin routes
1021 # main admin routes
462 config.add_route(name='admin_home', pattern=ADMIN_PREFIX)
1022 config.add_route(
463 config.include(admin_routes, route_prefix=ADMIN_PREFIX)
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.
1039 config.add_route(
466 config.scan('.views', ignore='.tests')
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 import logging
21 import logging
22
22
23 from pyramid.httpexceptions import HTTPNotFound
23 from pyramid.httpexceptions import HTTPNotFound
24 from pyramid.view import view_config
25
24
26 from rhodecode.apps._base import BaseAppView
25 from rhodecode.apps._base import BaseAppView
27 from rhodecode.model.db import joinedload, UserLog
26 from rhodecode.model.db import joinedload, UserLog
@@ -34,15 +33,13 b' log = logging.getLogger(__name__)'
34
33
35
34
36 class AdminAuditLogsView(BaseAppView):
35 class AdminAuditLogsView(BaseAppView):
36
37 def load_default_context(self):
37 def load_default_context(self):
38 c = self._get_local_tmpl_context()
38 c = self._get_local_tmpl_context()
39 return c
39 return c
40
40
41 @LoginRequired()
41 @LoginRequired()
42 @HasPermissionAllDecorator('hg.admin')
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 def admin_audit_logs(self):
43 def admin_audit_logs(self):
47 c = self.load_default_context()
44 c = self.load_default_context()
48
45
@@ -76,9 +73,6 b' class AdminAuditLogsView(BaseAppView):'
76
73
77 @LoginRequired()
74 @LoginRequired()
78 @HasPermissionAllDecorator('hg.admin')
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 def admin_audit_log_entry(self):
76 def admin_audit_log_entry(self):
83 c = self.load_default_context()
77 c = self.load_default_context()
84 audit_log_id = self.request.matchdict['audit_log_id']
78 audit_log_id = self.request.matchdict['audit_log_id']
@@ -23,7 +23,6 b' import logging'
23 import formencode
23 import formencode
24 import formencode.htmlfill
24 import formencode.htmlfill
25
25
26 from pyramid.view import view_config
27 from pyramid.httpexceptions import HTTPFound
26 from pyramid.httpexceptions import HTTPFound
28 from pyramid.renderers import render
27 from pyramid.renderers import render
29 from pyramid.response import Response
28 from pyramid.response import Response
@@ -41,17 +40,13 b' log = logging.getLogger(__name__)'
41
40
42
41
43 class AdminDefaultSettingsView(BaseAppView):
42 class AdminDefaultSettingsView(BaseAppView):
43
44 def load_default_context(self):
44 def load_default_context(self):
45 c = self._get_local_tmpl_context()
45 c = self._get_local_tmpl_context()
46
47
48 return c
46 return c
49
47
50 @LoginRequired()
48 @LoginRequired()
51 @HasPermissionAllDecorator('hg.admin')
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 def defaults_repository_show(self):
50 def defaults_repository_show(self):
56 c = self.load_default_context()
51 c = self.load_default_context()
57 c.backends = BACKENDS.keys()
52 c.backends = BACKENDS.keys()
@@ -72,9 +67,6 b' class AdminDefaultSettingsView(BaseAppVi'
72 @LoginRequired()
67 @LoginRequired()
73 @HasPermissionAllDecorator('hg.admin')
68 @HasPermissionAllDecorator('hg.admin')
74 @CSRFRequired()
69 @CSRFRequired()
75 @view_config(
76 route_name='admin_defaults_repositories_update', request_method='POST',
77 renderer='rhodecode:templates/admin/defaults/defaults.mako')
78 def defaults_repository_update(self):
70 def defaults_repository_update(self):
79 _ = self.request.translate
71 _ = self.request.translate
80 c = self.load_default_context()
72 c = self.load_default_context()
@@ -21,7 +21,6 b' import os'
21 import logging
21 import logging
22
22
23 from pyramid.httpexceptions import HTTPFound
23 from pyramid.httpexceptions import HTTPFound
24 from pyramid.view import view_config
25
24
26 from rhodecode.apps._base import BaseAppView
25 from rhodecode.apps._base import BaseAppView
27 from rhodecode.apps._base.navigation import navigation_list
26 from rhodecode.apps._base.navigation import navigation_list
@@ -99,9 +98,6 b' class ExceptionsTrackerView(BaseAppView)'
99
98
100 @LoginRequired()
99 @LoginRequired()
101 @HasPermissionAllDecorator('hg.admin')
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 def browse_exceptions(self):
101 def browse_exceptions(self):
106 _ = self.request.translate
102 _ = self.request.translate
107 c = self.load_default_context()
103 c = self.load_default_context()
@@ -117,9 +113,6 b' class ExceptionsTrackerView(BaseAppView)'
117
113
118 @LoginRequired()
114 @LoginRequired()
119 @HasPermissionAllDecorator('hg.admin')
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 def exception_show(self):
116 def exception_show(self):
124 _ = self.request.translate
117 _ = self.request.translate
125 c = self.load_default_context()
118 c = self.load_default_context()
@@ -132,9 +125,6 b' class ExceptionsTrackerView(BaseAppView)'
132 @LoginRequired()
125 @LoginRequired()
133 @HasPermissionAllDecorator('hg.admin')
126 @HasPermissionAllDecorator('hg.admin')
134 @CSRFRequired()
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 def exception_delete_all(self):
128 def exception_delete_all(self):
139 _ = self.request.translate
129 _ = self.request.translate
140 c = self.load_default_context()
130 c = self.load_default_context()
@@ -159,9 +149,6 b' class ExceptionsTrackerView(BaseAppView)'
159 @LoginRequired()
149 @LoginRequired()
160 @HasPermissionAllDecorator('hg.admin')
150 @HasPermissionAllDecorator('hg.admin')
161 @CSRFRequired()
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 def exception_delete(self):
152 def exception_delete(self):
166 _ = self.request.translate
153 _ = self.request.translate
167 c = self.load_default_context()
154 c = self.load_default_context()
@@ -21,7 +21,6 b''
21 import logging
21 import logging
22
22
23 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
23 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
24 from pyramid.view import view_config
25
24
26 from rhodecode.apps._base import BaseAppView
25 from rhodecode.apps._base import BaseAppView
27 from rhodecode.lib import helpers as h
26 from rhodecode.lib import helpers as h
@@ -39,9 +38,6 b' class AdminMainView(BaseAppView):'
39
38
40 @LoginRequired()
39 @LoginRequired()
41 @NotAnonymous()
40 @NotAnonymous()
42 @view_config(
43 route_name='admin_home', request_method='GET',
44 renderer='rhodecode:templates/admin/main.mako')
45 def admin_main(self):
41 def admin_main(self):
46 c = self.load_default_context()
42 c = self.load_default_context()
47 c.active = 'admin'
43 c.active = 'admin'
@@ -52,9 +48,6 b' class AdminMainView(BaseAppView):'
52 return self._get_template_context(c)
48 return self._get_template_context(c)
53
49
54 @LoginRequired()
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 def pull_requests(self):
51 def pull_requests(self):
59 """
52 """
60 Global redirect for Pull Requests
53 Global redirect for Pull Requests
@@ -21,8 +21,6 b''
21 import collections
21 import collections
22 import logging
22 import logging
23
23
24 from pyramid.view import view_config
25
26 from rhodecode.apps._base import BaseAppView
24 from rhodecode.apps._base import BaseAppView
27 from rhodecode.apps._base.navigation import navigation_list
25 from rhodecode.apps._base.navigation import navigation_list
28 from rhodecode.lib.auth import (LoginRequired, HasPermissionAllDecorator)
26 from rhodecode.lib.auth import (LoginRequired, HasPermissionAllDecorator)
@@ -39,9 +37,6 b' class OpenSourceLicensesAdminSettingsVie'
39
37
40 @LoginRequired()
38 @LoginRequired()
41 @HasPermissionAllDecorator('hg.admin')
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 def open_source_licenses(self):
40 def open_source_licenses(self):
46 c = self.load_default_context()
41 c = self.load_default_context()
47 c.active = 'open_source'
42 c.active = 'open_source'
@@ -25,7 +25,6 b' import formencode.htmlfill'
25 import datetime
25 import datetime
26 from pyramid.interfaces import IRoutesMapper
26 from pyramid.interfaces import IRoutesMapper
27
27
28 from pyramid.view import view_config
29 from pyramid.httpexceptions import HTTPFound
28 from pyramid.httpexceptions import HTTPFound
30 from pyramid.renderers import render
29 from pyramid.renderers import render
31 from pyramid.response import Response
30 from pyramid.response import Response
@@ -59,9 +58,6 b' class AdminPermissionsView(BaseAppView, '
59
58
60 @LoginRequired()
59 @LoginRequired()
61 @HasPermissionAllDecorator('hg.admin')
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 def permissions_application(self):
61 def permissions_application(self):
66 c = self.load_default_context()
62 c = self.load_default_context()
67 c.active = 'application'
63 c.active = 'application'
@@ -90,9 +86,6 b' class AdminPermissionsView(BaseAppView, '
90 @LoginRequired()
86 @LoginRequired()
91 @HasPermissionAllDecorator('hg.admin')
87 @HasPermissionAllDecorator('hg.admin')
92 @CSRFRequired()
88 @CSRFRequired()
93 @view_config(
94 route_name='admin_permissions_application_update', request_method='POST',
95 renderer='rhodecode:templates/admin/permissions/permissions.mako')
96 def permissions_application_update(self):
89 def permissions_application_update(self):
97 _ = self.request.translate
90 _ = self.request.translate
98 c = self.load_default_context()
91 c = self.load_default_context()
@@ -149,9 +142,6 b' class AdminPermissionsView(BaseAppView, '
149
142
150 @LoginRequired()
143 @LoginRequired()
151 @HasPermissionAllDecorator('hg.admin')
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 def permissions_objects(self):
145 def permissions_objects(self):
156 c = self.load_default_context()
146 c = self.load_default_context()
157 c.active = 'objects'
147 c.active = 'objects'
@@ -174,9 +164,6 b' class AdminPermissionsView(BaseAppView, '
174 @LoginRequired()
164 @LoginRequired()
175 @HasPermissionAllDecorator('hg.admin')
165 @HasPermissionAllDecorator('hg.admin')
176 @CSRFRequired()
166 @CSRFRequired()
177 @view_config(
178 route_name='admin_permissions_object_update', request_method='POST',
179 renderer='rhodecode:templates/admin/permissions/permissions.mako')
180 def permissions_objects_update(self):
167 def permissions_objects_update(self):
181 _ = self.request.translate
168 _ = self.request.translate
182 c = self.load_default_context()
169 c = self.load_default_context()
@@ -225,9 +212,6 b' class AdminPermissionsView(BaseAppView, '
225
212
226 @LoginRequired()
213 @LoginRequired()
227 @HasPermissionAllDecorator('hg.admin')
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 def permissions_branch(self):
215 def permissions_branch(self):
232 c = self.load_default_context()
216 c = self.load_default_context()
233 c.active = 'branch'
217 c.active = 'branch'
@@ -249,9 +233,6 b' class AdminPermissionsView(BaseAppView, '
249
233
250 @LoginRequired()
234 @LoginRequired()
251 @HasPermissionAllDecorator('hg.admin')
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 def permissions_global(self):
236 def permissions_global(self):
256 c = self.load_default_context()
237 c = self.load_default_context()
257 c.active = 'global'
238 c.active = 'global'
@@ -274,9 +255,6 b' class AdminPermissionsView(BaseAppView, '
274 @LoginRequired()
255 @LoginRequired()
275 @HasPermissionAllDecorator('hg.admin')
256 @HasPermissionAllDecorator('hg.admin')
276 @CSRFRequired()
257 @CSRFRequired()
277 @view_config(
278 route_name='admin_permissions_global_update', request_method='POST',
279 renderer='rhodecode:templates/admin/permissions/permissions.mako')
280 def permissions_global_update(self):
258 def permissions_global_update(self):
281 _ = self.request.translate
259 _ = self.request.translate
282 c = self.load_default_context()
260 c = self.load_default_context()
@@ -327,9 +305,6 b' class AdminPermissionsView(BaseAppView, '
327
305
328 @LoginRequired()
306 @LoginRequired()
329 @HasPermissionAllDecorator('hg.admin')
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 def permissions_ips(self):
308 def permissions_ips(self):
334 c = self.load_default_context()
309 c = self.load_default_context()
335 c.active = 'ips'
310 c.active = 'ips'
@@ -342,9 +317,6 b' class AdminPermissionsView(BaseAppView, '
342
317
343 @LoginRequired()
318 @LoginRequired()
344 @HasPermissionAllDecorator('hg.admin')
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 def permissions_overview(self):
320 def permissions_overview(self):
349 c = self.load_default_context()
321 c = self.load_default_context()
350 c.active = 'perms'
322 c.active = 'perms'
@@ -355,9 +327,6 b' class AdminPermissionsView(BaseAppView, '
355
327
356 @LoginRequired()
328 @LoginRequired()
357 @HasPermissionAllDecorator('hg.admin')
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 def auth_token_access(self):
330 def auth_token_access(self):
362 from rhodecode import CONFIG
331 from rhodecode import CONFIG
363
332
@@ -415,9 +384,6 b' class AdminPermissionsView(BaseAppView, '
415
384
416 @LoginRequired()
385 @LoginRequired()
417 @HasPermissionAllDecorator('hg.admin')
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 def ssh_keys(self):
387 def ssh_keys(self):
422 c = self.load_default_context()
388 c = self.load_default_context()
423 c.active = 'ssh_keys'
389 c.active = 'ssh_keys'
@@ -426,9 +392,6 b' class AdminPermissionsView(BaseAppView, '
426
392
427 @LoginRequired()
393 @LoginRequired()
428 @HasPermissionAllDecorator('hg.admin')
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 def ssh_keys_data(self):
395 def ssh_keys_data(self):
433 _ = self.request.translate
396 _ = self.request.translate
434 self.load_default_context()
397 self.load_default_context()
@@ -498,9 +461,6 b' class AdminPermissionsView(BaseAppView, '
498 @LoginRequired()
461 @LoginRequired()
499 @HasPermissionAllDecorator('hg.admin')
462 @HasPermissionAllDecorator('hg.admin')
500 @CSRFRequired()
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 def ssh_keys_update(self):
464 def ssh_keys_update(self):
505 _ = self.request.translate
465 _ = self.request.translate
506 self.load_default_context()
466 self.load_default_context()
@@ -22,7 +22,7 b' import logging'
22
22
23 import psutil
23 import psutil
24 import signal
24 import signal
25 from pyramid.view import view_config
25
26
26
27 from rhodecode.apps._base import BaseAppView
27 from rhodecode.apps._base import BaseAppView
28 from rhodecode.apps._base.navigation import navigation_list
28 from rhodecode.apps._base.navigation import navigation_list
@@ -84,9 +84,6 b' class AdminProcessManagementView(BaseApp'
84
84
85 @LoginRequired()
85 @LoginRequired()
86 @HasPermissionAllDecorator('hg.admin')
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 def process_management(self):
87 def process_management(self):
91 _ = self.request.translate
88 _ = self.request.translate
92 c = self.load_default_context()
89 c = self.load_default_context()
@@ -99,9 +96,6 b' class AdminProcessManagementView(BaseApp'
99
96
100 @LoginRequired()
97 @LoginRequired()
101 @HasPermissionAllDecorator('hg.admin')
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 def process_management_data(self):
99 def process_management_data(self):
106 _ = self.request.translate
100 _ = self.request.translate
107 c = self.load_default_context()
101 c = self.load_default_context()
@@ -111,9 +105,6 b' class AdminProcessManagementView(BaseApp'
111 @LoginRequired()
105 @LoginRequired()
112 @HasPermissionAllDecorator('hg.admin')
106 @HasPermissionAllDecorator('hg.admin')
113 @CSRFRequired()
107 @CSRFRequired()
114 @view_config(
115 route_name='admin_settings_process_management_signal',
116 request_method='POST', renderer='json_ext')
117 def process_management_signal(self):
108 def process_management_signal(self):
118 pids = self.request.json.get('pids', [])
109 pids = self.request.json.get('pids', [])
119 result = []
110 result = []
@@ -155,9 +146,6 b' class AdminProcessManagementView(BaseApp'
155 @LoginRequired()
146 @LoginRequired()
156 @HasPermissionAllDecorator('hg.admin')
147 @HasPermissionAllDecorator('hg.admin')
157 @CSRFRequired()
148 @CSRFRequired()
158 @view_config(
159 route_name='admin_settings_process_management_master_signal',
160 request_method='POST', renderer='json_ext')
161 def process_management_master_signal(self):
149 def process_management_master_signal(self):
162 pid_data = self.request.json.get('pid_data', {})
150 pid_data = self.request.json.get('pid_data', {})
163 pid = safe_int(pid_data['pid'])
151 pid = safe_int(pid_data['pid'])
@@ -25,7 +25,7 b' import formencode'
25 import formencode.htmlfill
25 import formencode.htmlfill
26
26
27 from pyramid.httpexceptions import HTTPFound, HTTPForbidden
27 from pyramid.httpexceptions import HTTPFound, HTTPForbidden
28 from pyramid.view import view_config
28
29 from pyramid.renderers import render
29 from pyramid.renderers import render
30 from pyramid.response import Response
30 from pyramid.response import Response
31
31
@@ -96,9 +96,6 b' class AdminRepoGroupsView(BaseAppView, D'
96 # `repo_group_list_data` via RepoGroupList
96 # `repo_group_list_data` via RepoGroupList
97 @LoginRequired()
97 @LoginRequired()
98 @NotAnonymous()
98 @NotAnonymous()
99 @view_config(
100 route_name='repo_groups', request_method='GET',
101 renderer='rhodecode:templates/admin/repo_groups/repo_groups.mako')
102 def repo_group_list(self):
99 def repo_group_list(self):
103 c = self.load_default_context()
100 c = self.load_default_context()
104 return self._get_template_context(c)
101 return self._get_template_context(c)
@@ -106,9 +103,6 b' class AdminRepoGroupsView(BaseAppView, D'
106 # permission check inside
103 # permission check inside
107 @LoginRequired()
104 @LoginRequired()
108 @NotAnonymous()
105 @NotAnonymous()
109 @view_config(
110 route_name='repo_groups_data', request_method='GET',
111 renderer='json_ext', xhr=True)
112 def repo_group_list_data(self):
106 def repo_group_list_data(self):
113 self.load_default_context()
107 self.load_default_context()
114 column_map = {
108 column_map = {
@@ -254,9 +248,6 b' class AdminRepoGroupsView(BaseAppView, D'
254 @LoginRequired()
248 @LoginRequired()
255 @NotAnonymous()
249 @NotAnonymous()
256 # perm checks inside
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 def repo_group_new(self):
251 def repo_group_new(self):
261 c = self.load_default_context()
252 c = self.load_default_context()
262
253
@@ -296,9 +287,6 b' class AdminRepoGroupsView(BaseAppView, D'
296 @NotAnonymous()
287 @NotAnonymous()
297 @CSRFRequired()
288 @CSRFRequired()
298 # perm checks inside
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 def repo_group_create(self):
290 def repo_group_create(self):
303 c = self.load_default_context()
291 c = self.load_default_context()
304 _ = self.request.translate
292 _ = self.request.translate
@@ -23,7 +23,7 b' import formencode'
23 import formencode.htmlfill
23 import formencode.htmlfill
24
24
25 from pyramid.httpexceptions import HTTPFound, HTTPForbidden
25 from pyramid.httpexceptions import HTTPFound, HTTPForbidden
26 from pyramid.view import view_config
26
27 from pyramid.renderers import render
27 from pyramid.renderers import render
28 from pyramid.response import Response
28 from pyramid.response import Response
29
29
@@ -52,7 +52,6 b' class AdminReposView(BaseAppView, DataGr'
52
52
53 def load_default_context(self):
53 def load_default_context(self):
54 c = self._get_local_tmpl_context()
54 c = self._get_local_tmpl_context()
55
56 return c
55 return c
57
56
58 def _load_form_data(self, c):
57 def _load_form_data(self, c):
@@ -65,9 +64,6 b' class AdminReposView(BaseAppView, DataGr'
65 @LoginRequired()
64 @LoginRequired()
66 @NotAnonymous()
65 @NotAnonymous()
67 # perms check inside
66 # perms check inside
68 @view_config(
69 route_name='repos', request_method='GET',
70 renderer='rhodecode:templates/admin/repos/repos.mako')
71 def repository_list(self):
67 def repository_list(self):
72 c = self.load_default_context()
68 c = self.load_default_context()
73 return self._get_template_context(c)
69 return self._get_template_context(c)
@@ -75,9 +71,6 b' class AdminReposView(BaseAppView, DataGr'
75 @LoginRequired()
71 @LoginRequired()
76 @NotAnonymous()
72 @NotAnonymous()
77 # perms check inside
73 # perms check inside
78 @view_config(
79 route_name='repos_data', request_method='GET',
80 renderer='json_ext', xhr=True)
81 def repository_list_data(self):
74 def repository_list_data(self):
82 self.load_default_context()
75 self.load_default_context()
83 column_map = {
76 column_map = {
@@ -162,9 +155,6 b' class AdminReposView(BaseAppView, DataGr'
162 @LoginRequired()
155 @LoginRequired()
163 @NotAnonymous()
156 @NotAnonymous()
164 # perms check inside
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 def repository_new(self):
158 def repository_new(self):
169 c = self.load_default_context()
159 c = self.load_default_context()
170
160
@@ -216,9 +206,6 b' class AdminReposView(BaseAppView, DataGr'
216 @NotAnonymous()
206 @NotAnonymous()
217 @CSRFRequired()
207 @CSRFRequired()
218 # perms check inside
208 # perms check inside
219 @view_config(
220 route_name='repo_create', request_method='POST',
221 renderer='rhodecode:templates/admin/repos/repos.mako')
222 def repository_create(self):
209 def repository_create(self):
223 c = self.load_default_context()
210 c = self.load_default_context()
224
211
@@ -20,7 +20,7 b''
20
20
21 import logging
21 import logging
22
22
23 from pyramid.view import view_config
23
24 from pyramid.httpexceptions import HTTPFound
24 from pyramid.httpexceptions import HTTPFound
25
25
26 from rhodecode.apps._base import BaseAppView
26 from rhodecode.apps._base import BaseAppView
@@ -37,17 +37,13 b' log = logging.getLogger(__name__)'
37
37
38
38
39 class AdminSessionSettingsView(BaseAppView):
39 class AdminSessionSettingsView(BaseAppView):
40
40 def load_default_context(self):
41 def load_default_context(self):
41 c = self._get_local_tmpl_context()
42 c = self._get_local_tmpl_context()
42
43
44 return c
43 return c
45
44
46 @LoginRequired()
45 @LoginRequired()
47 @HasPermissionAllDecorator('hg.admin')
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 def settings_sessions(self):
47 def settings_sessions(self):
52 c = self.load_default_context()
48 c = self.load_default_context()
53
49
@@ -71,8 +67,6 b' class AdminSessionSettingsView(BaseAppVi'
71 @LoginRequired()
67 @LoginRequired()
72 @HasPermissionAllDecorator('hg.admin')
68 @HasPermissionAllDecorator('hg.admin')
73 @CSRFRequired()
69 @CSRFRequired()
74 @view_config(
75 route_name='admin_settings_sessions_cleanup', request_method='POST')
76 def settings_sessions_cleanup(self):
70 def settings_sessions_cleanup(self):
77 _ = self.request.translate
71 _ = self.request.translate
78 expire_days = safe_int(self.request.params.get('expire_days'))
72 expire_days = safe_int(self.request.params.get('expire_days'))
@@ -27,7 +27,7 b' import formencode'
27 import formencode.htmlfill
27 import formencode.htmlfill
28
28
29 import rhodecode
29 import rhodecode
30 from pyramid.view import view_config
30
31 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
31 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
32 from pyramid.renderers import render
32 from pyramid.renderers import render
33 from pyramid.response import Response
33 from pyramid.response import Response
@@ -68,7 +68,6 b' class AdminSettingsView(BaseAppView):'
68 c.labs_active = str2bool(
68 c.labs_active = str2bool(
69 rhodecode.CONFIG.get('labs_settings_active', 'true'))
69 rhodecode.CONFIG.get('labs_settings_active', 'true'))
70 c.navlist = navigation_list(self.request)
70 c.navlist = navigation_list(self.request)
71
72 return c
71 return c
73
72
74 @classmethod
73 @classmethod
@@ -109,9 +108,6 b' class AdminSettingsView(BaseAppView):'
109
108
110 @LoginRequired()
109 @LoginRequired()
111 @HasPermissionAllDecorator('hg.admin')
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 def settings_vcs(self):
111 def settings_vcs(self):
116 c = self.load_default_context()
112 c = self.load_default_context()
117 c.active = 'vcs'
113 c.active = 'vcs'
@@ -139,9 +135,6 b' class AdminSettingsView(BaseAppView):'
139 @LoginRequired()
135 @LoginRequired()
140 @HasPermissionAllDecorator('hg.admin')
136 @HasPermissionAllDecorator('hg.admin')
141 @CSRFRequired()
137 @CSRFRequired()
142 @view_config(
143 route_name='admin_settings_vcs_update', request_method='POST',
144 renderer='rhodecode:templates/admin/settings/settings.mako')
145 def settings_vcs_update(self):
138 def settings_vcs_update(self):
146 _ = self.request.translate
139 _ = self.request.translate
147 c = self.load_default_context()
140 c = self.load_default_context()
@@ -207,9 +200,6 b' class AdminSettingsView(BaseAppView):'
207 @LoginRequired()
200 @LoginRequired()
208 @HasPermissionAllDecorator('hg.admin')
201 @HasPermissionAllDecorator('hg.admin')
209 @CSRFRequired()
202 @CSRFRequired()
210 @view_config(
211 route_name='admin_settings_vcs_svn_pattern_delete', request_method='POST',
212 renderer='json_ext', xhr=True)
213 def settings_vcs_delete_svn_pattern(self):
203 def settings_vcs_delete_svn_pattern(self):
214 delete_pattern_id = self.request.POST.get('delete_svn_pattern')
204 delete_pattern_id = self.request.POST.get('delete_svn_pattern')
215 model = VcsSettingsModel()
205 model = VcsSettingsModel()
@@ -225,9 +215,6 b' class AdminSettingsView(BaseAppView):'
225
215
226 @LoginRequired()
216 @LoginRequired()
227 @HasPermissionAllDecorator('hg.admin')
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 def settings_mapping(self):
218 def settings_mapping(self):
232 c = self.load_default_context()
219 c = self.load_default_context()
233 c.active = 'mapping'
220 c.active = 'mapping'
@@ -245,9 +232,6 b' class AdminSettingsView(BaseAppView):'
245 @LoginRequired()
232 @LoginRequired()
246 @HasPermissionAllDecorator('hg.admin')
233 @HasPermissionAllDecorator('hg.admin')
247 @CSRFRequired()
234 @CSRFRequired()
248 @view_config(
249 route_name='admin_settings_mapping_update', request_method='POST',
250 renderer='rhodecode:templates/admin/settings/settings.mako')
251 def settings_mapping_update(self):
235 def settings_mapping_update(self):
252 _ = self.request.translate
236 _ = self.request.translate
253 c = self.load_default_context()
237 c = self.load_default_context()
@@ -274,12 +258,6 b' class AdminSettingsView(BaseAppView):'
274
258
275 @LoginRequired()
259 @LoginRequired()
276 @HasPermissionAllDecorator('hg.admin')
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 def settings_global(self):
261 def settings_global(self):
284 c = self.load_default_context()
262 c = self.load_default_context()
285 c.active = 'global'
263 c.active = 'global'
@@ -299,12 +277,6 b' class AdminSettingsView(BaseAppView):'
299 @LoginRequired()
277 @LoginRequired()
300 @HasPermissionAllDecorator('hg.admin')
278 @HasPermissionAllDecorator('hg.admin')
301 @CSRFRequired()
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 def settings_global_update(self):
280 def settings_global_update(self):
309 _ = self.request.translate
281 _ = self.request.translate
310 c = self.load_default_context()
282 c = self.load_default_context()
@@ -359,9 +331,6 b' class AdminSettingsView(BaseAppView):'
359
331
360 @LoginRequired()
332 @LoginRequired()
361 @HasPermissionAllDecorator('hg.admin')
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 def settings_visual(self):
334 def settings_visual(self):
366 c = self.load_default_context()
335 c = self.load_default_context()
367 c.active = 'visual'
336 c.active = 'visual'
@@ -379,9 +348,6 b' class AdminSettingsView(BaseAppView):'
379 @LoginRequired()
348 @LoginRequired()
380 @HasPermissionAllDecorator('hg.admin')
349 @HasPermissionAllDecorator('hg.admin')
381 @CSRFRequired()
350 @CSRFRequired()
382 @view_config(
383 route_name='admin_settings_visual_update', request_method='POST',
384 renderer='rhodecode:templates/admin/settings/settings.mako')
385 def settings_visual_update(self):
351 def settings_visual_update(self):
386 _ = self.request.translate
352 _ = self.request.translate
387 c = self.load_default_context()
353 c = self.load_default_context()
@@ -441,9 +407,6 b' class AdminSettingsView(BaseAppView):'
441
407
442 @LoginRequired()
408 @LoginRequired()
443 @HasPermissionAllDecorator('hg.admin')
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 def settings_issuetracker(self):
410 def settings_issuetracker(self):
448 c = self.load_default_context()
411 c = self.load_default_context()
449 c.active = 'issuetracker'
412 c.active = 'issuetracker'
@@ -470,9 +433,6 b' class AdminSettingsView(BaseAppView):'
470 @LoginRequired()
433 @LoginRequired()
471 @HasPermissionAllDecorator('hg.admin')
434 @HasPermissionAllDecorator('hg.admin')
472 @CSRFRequired()
435 @CSRFRequired()
473 @view_config(
474 route_name='admin_settings_issuetracker_test', request_method='POST',
475 renderer='string', xhr=True)
476 def settings_issuetracker_test(self):
436 def settings_issuetracker_test(self):
477 error_container = []
437 error_container = []
478
438
@@ -490,9 +450,6 b' class AdminSettingsView(BaseAppView):'
490 @LoginRequired()
450 @LoginRequired()
491 @HasPermissionAllDecorator('hg.admin')
451 @HasPermissionAllDecorator('hg.admin')
492 @CSRFRequired()
452 @CSRFRequired()
493 @view_config(
494 route_name='admin_settings_issuetracker_update', request_method='POST',
495 renderer='rhodecode:templates/admin/settings/settings.mako')
496 def settings_issuetracker_update(self):
453 def settings_issuetracker_update(self):
497 _ = self.request.translate
454 _ = self.request.translate
498 self.load_default_context()
455 self.load_default_context()
@@ -527,9 +484,6 b' class AdminSettingsView(BaseAppView):'
527 @LoginRequired()
484 @LoginRequired()
528 @HasPermissionAllDecorator('hg.admin')
485 @HasPermissionAllDecorator('hg.admin')
529 @CSRFRequired()
486 @CSRFRequired()
530 @view_config(
531 route_name='admin_settings_issuetracker_delete', request_method='POST',
532 renderer='json_ext', xhr=True)
533 def settings_issuetracker_delete(self):
487 def settings_issuetracker_delete(self):
534 _ = self.request.translate
488 _ = self.request.translate
535 self.load_default_context()
489 self.load_default_context()
@@ -547,9 +501,6 b' class AdminSettingsView(BaseAppView):'
547
501
548 @LoginRequired()
502 @LoginRequired()
549 @HasPermissionAllDecorator('hg.admin')
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 def settings_email(self):
504 def settings_email(self):
554 c = self.load_default_context()
505 c = self.load_default_context()
555 c.active = 'email'
506 c.active = 'email'
@@ -568,9 +519,6 b' class AdminSettingsView(BaseAppView):'
568 @LoginRequired()
519 @LoginRequired()
569 @HasPermissionAllDecorator('hg.admin')
520 @HasPermissionAllDecorator('hg.admin')
570 @CSRFRequired()
521 @CSRFRequired()
571 @view_config(
572 route_name='admin_settings_email_update', request_method='POST',
573 renderer='rhodecode:templates/admin/settings/settings.mako')
574 def settings_email_update(self):
522 def settings_email_update(self):
575 _ = self.request.translate
523 _ = self.request.translate
576 c = self.load_default_context()
524 c = self.load_default_context()
@@ -600,9 +548,6 b' class AdminSettingsView(BaseAppView):'
600
548
601 @LoginRequired()
549 @LoginRequired()
602 @HasPermissionAllDecorator('hg.admin')
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 def settings_hooks(self):
551 def settings_hooks(self):
607 c = self.load_default_context()
552 c = self.load_default_context()
608 c.active = 'hooks'
553 c.active = 'hooks'
@@ -624,12 +569,6 b' class AdminSettingsView(BaseAppView):'
624 @LoginRequired()
569 @LoginRequired()
625 @HasPermissionAllDecorator('hg.admin')
570 @HasPermissionAllDecorator('hg.admin')
626 @CSRFRequired()
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 def settings_hooks_update(self):
572 def settings_hooks_update(self):
634 _ = self.request.translate
573 _ = self.request.translate
635 c = self.load_default_context()
574 c = self.load_default_context()
@@ -671,9 +610,6 b' class AdminSettingsView(BaseAppView):'
671
610
672 @LoginRequired()
611 @LoginRequired()
673 @HasPermissionAllDecorator('hg.admin')
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 def settings_search(self):
613 def settings_search(self):
678 c = self.load_default_context()
614 c = self.load_default_context()
679 c.active = 'search'
615 c.active = 'search'
@@ -685,9 +621,6 b' class AdminSettingsView(BaseAppView):'
685
621
686 @LoginRequired()
622 @LoginRequired()
687 @HasPermissionAllDecorator('hg.admin')
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 def settings_automation(self):
624 def settings_automation(self):
692 c = self.load_default_context()
625 c = self.load_default_context()
693 c.active = 'automation'
626 c.active = 'automation'
@@ -696,9 +629,6 b' class AdminSettingsView(BaseAppView):'
696
629
697 @LoginRequired()
630 @LoginRequired()
698 @HasPermissionAllDecorator('hg.admin')
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 def settings_labs(self):
632 def settings_labs(self):
703 c = self.load_default_context()
633 c = self.load_default_context()
704 if not c.labs_active:
634 if not c.labs_active:
@@ -720,9 +650,6 b' class AdminSettingsView(BaseAppView):'
720 @LoginRequired()
650 @LoginRequired()
721 @HasPermissionAllDecorator('hg.admin')
651 @HasPermissionAllDecorator('hg.admin')
722 @CSRFRequired()
652 @CSRFRequired()
723 @view_config(
724 route_name='admin_settings_labs_update', request_method='POST',
725 renderer='rhodecode:templates/admin/settings/settings.mako')
726 def settings_labs_update(self):
653 def settings_labs_update(self):
727 _ = self.request.translate
654 _ = self.request.translate
728 c = self.load_default_context()
655 c = self.load_default_context()
@@ -20,7 +20,7 b''
20
20
21 import logging
21 import logging
22
22
23 from pyramid.view import view_config
23
24
24
25 from rhodecode.apps._base import BaseAppView
25 from rhodecode.apps._base import BaseAppView
26 from rhodecode.apps.svn_support.utils import generate_mod_dav_svn_config
26 from rhodecode.apps.svn_support.utils import generate_mod_dav_svn_config
@@ -30,14 +30,11 b' from rhodecode.lib.auth import ('
30 log = logging.getLogger(__name__)
30 log = logging.getLogger(__name__)
31
31
32
32
33 class SvnConfigAdminSettingsView(BaseAppView):
33 class AdminSvnConfigView(BaseAppView):
34
34
35 @LoginRequired()
35 @LoginRequired()
36 @HasPermissionAllDecorator('hg.admin')
36 @HasPermissionAllDecorator('hg.admin')
37 @CSRFRequired()
37 @CSRFRequired()
38 @view_config(
39 route_name='admin_settings_vcs_svn_generate_cfg',
40 request_method='POST', renderer='json')
41 def vcs_svn_generate_config(self):
38 def vcs_svn_generate_config(self):
42 _ = self.request.translate
39 _ = self.request.translate
43 try:
40 try:
@@ -21,7 +21,7 b''
21 import logging
21 import logging
22 import urllib2
22 import urllib2
23
23
24 from pyramid.view import view_config
24
25
25
26 import rhodecode
26 import rhodecode
27 from rhodecode.apps._base import BaseAppView
27 from rhodecode.apps._base import BaseAppView
@@ -42,9 +42,6 b' class AdminSystemInfoSettingsView(BaseAp'
42
42
43 @LoginRequired()
43 @LoginRequired()
44 @HasPermissionAllDecorator('hg.admin')
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 def settings_system_info(self):
45 def settings_system_info(self):
49 _ = self.request.translate
46 _ = self.request.translate
50 c = self.load_default_context()
47 c = self.load_default_context()
@@ -169,9 +166,6 b' class AdminSystemInfoSettingsView(BaseAp'
169
166
170 @LoginRequired()
167 @LoginRequired()
171 @HasPermissionAllDecorator('hg.admin')
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 def settings_system_info_check_update(self):
169 def settings_system_info_check_update(self):
176 _ = self.request.translate
170 _ = self.request.translate
177 c = self.load_default_context()
171 c = self.load_default_context()
@@ -24,7 +24,7 b' import formencode'
24 import formencode.htmlfill
24 import formencode.htmlfill
25
25
26 from pyramid.httpexceptions import HTTPFound
26 from pyramid.httpexceptions import HTTPFound
27 from pyramid.view import view_config
27
28 from pyramid.response import Response
28 from pyramid.response import Response
29 from pyramid.renderers import render
29 from pyramid.renderers import render
30
30
@@ -51,19 +51,14 b' class AdminUserGroupsView(BaseAppView, D'
51
51
52 def load_default_context(self):
52 def load_default_context(self):
53 c = self._get_local_tmpl_context()
53 c = self._get_local_tmpl_context()
54
55 PermissionModel().set_global_permission_choices(
54 PermissionModel().set_global_permission_choices(
56 c, gettext_translator=self.request.translate)
55 c, gettext_translator=self.request.translate)
57
58 return c
56 return c
59
57
60 # permission check in data loading of
58 # permission check in data loading of
61 # `user_groups_list_data` via UserGroupList
59 # `user_groups_list_data` via UserGroupList
62 @LoginRequired()
60 @LoginRequired()
63 @NotAnonymous()
61 @NotAnonymous()
64 @view_config(
65 route_name='user_groups', request_method='GET',
66 renderer='rhodecode:templates/admin/user_groups/user_groups.mako')
67 def user_groups_list(self):
62 def user_groups_list(self):
68 c = self.load_default_context()
63 c = self.load_default_context()
69 return self._get_template_context(c)
64 return self._get_template_context(c)
@@ -71,9 +66,6 b' class AdminUserGroupsView(BaseAppView, D'
71 # permission check inside
66 # permission check inside
72 @LoginRequired()
67 @LoginRequired()
73 @NotAnonymous()
68 @NotAnonymous()
74 @view_config(
75 route_name='user_groups_data', request_method='GET',
76 renderer='json_ext', xhr=True)
77 def user_groups_list_data(self):
69 def user_groups_list_data(self):
78 self.load_default_context()
70 self.load_default_context()
79 column_map = {
71 column_map = {
@@ -197,9 +189,6 b' class AdminUserGroupsView(BaseAppView, D'
197
189
198 @LoginRequired()
190 @LoginRequired()
199 @HasPermissionAnyDecorator('hg.admin', 'hg.usergroup.create.true')
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 def user_groups_new(self):
192 def user_groups_new(self):
204 c = self.load_default_context()
193 c = self.load_default_context()
205 return self._get_template_context(c)
194 return self._get_template_context(c)
@@ -207,9 +196,6 b' class AdminUserGroupsView(BaseAppView, D'
207 @LoginRequired()
196 @LoginRequired()
208 @HasPermissionAnyDecorator('hg.admin', 'hg.usergroup.create.true')
197 @HasPermissionAnyDecorator('hg.admin', 'hg.usergroup.create.true')
209 @CSRFRequired()
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 def user_groups_create(self):
199 def user_groups_create(self):
214 _ = self.request.translate
200 _ = self.request.translate
215 c = self.load_default_context()
201 c = self.load_default_context()
@@ -24,7 +24,6 b' import formencode'
24 import formencode.htmlfill
24 import formencode.htmlfill
25
25
26 from pyramid.httpexceptions import HTTPFound
26 from pyramid.httpexceptions import HTTPFound
27 from pyramid.view import view_config
28 from pyramid.renderers import render
27 from pyramid.renderers import render
29 from pyramid.response import Response
28 from pyramid.response import Response
30
29
@@ -72,19 +71,12 b' class AdminUsersView(BaseAppView, DataGr'
72
71
73 @LoginRequired()
72 @LoginRequired()
74 @HasPermissionAllDecorator('hg.admin')
73 @HasPermissionAllDecorator('hg.admin')
75 @view_config(
76 route_name='users', request_method='GET',
77 renderer='rhodecode:templates/admin/users/users.mako')
78 def users_list(self):
74 def users_list(self):
79 c = self.load_default_context()
75 c = self.load_default_context()
80 return self._get_template_context(c)
76 return self._get_template_context(c)
81
77
82 @LoginRequired()
78 @LoginRequired()
83 @HasPermissionAllDecorator('hg.admin')
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 def users_list_data(self):
80 def users_list_data(self):
89 self.load_default_context()
81 self.load_default_context()
90 column_map = {
82 column_map = {
@@ -183,9 +175,6 b' class AdminUsersView(BaseAppView, DataGr'
183
175
184 @LoginRequired()
176 @LoginRequired()
185 @HasPermissionAllDecorator('hg.admin')
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 def users_new(self):
178 def users_new(self):
190 _ = self.request.translate
179 _ = self.request.translate
191 c = self.load_default_context()
180 c = self.load_default_context()
@@ -196,9 +185,6 b' class AdminUsersView(BaseAppView, DataGr'
196 @LoginRequired()
185 @LoginRequired()
197 @HasPermissionAllDecorator('hg.admin')
186 @HasPermissionAllDecorator('hg.admin')
198 @CSRFRequired()
187 @CSRFRequired()
199 @view_config(
200 route_name='users_create', request_method='POST',
201 renderer='rhodecode:templates/admin/users/user_add.mako')
202 def users_create(self):
188 def users_create(self):
203 _ = self.request.translate
189 _ = self.request.translate
204 c = self.load_default_context()
190 c = self.load_default_context()
@@ -309,9 +295,6 b' class UsersView(UserAppView):'
309 @LoginRequired()
295 @LoginRequired()
310 @HasPermissionAllDecorator('hg.admin')
296 @HasPermissionAllDecorator('hg.admin')
311 @CSRFRequired()
297 @CSRFRequired()
312 @view_config(
313 route_name='user_update', request_method='POST',
314 renderer='rhodecode:templates/admin/users/user_edit.mako')
315 def user_update(self):
298 def user_update(self):
316 _ = self.request.translate
299 _ = self.request.translate
317 c = self.load_default_context()
300 c = self.load_default_context()
@@ -371,9 +354,6 b' class UsersView(UserAppView):'
371 @LoginRequired()
354 @LoginRequired()
372 @HasPermissionAllDecorator('hg.admin')
355 @HasPermissionAllDecorator('hg.admin')
373 @CSRFRequired()
356 @CSRFRequired()
374 @view_config(
375 route_name='user_delete', request_method='POST',
376 renderer='rhodecode:templates/admin/users/user_edit.mako')
377 def user_delete(self):
357 def user_delete(self):
378 _ = self.request.translate
358 _ = self.request.translate
379 c = self.load_default_context()
359 c = self.load_default_context()
@@ -496,9 +476,6 b' class UsersView(UserAppView):'
496
476
497 @LoginRequired()
477 @LoginRequired()
498 @HasPermissionAllDecorator('hg.admin')
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 def user_edit(self):
479 def user_edit(self):
503 _ = self.request.translate
480 _ = self.request.translate
504 c = self.load_default_context()
481 c = self.load_default_context()
@@ -525,9 +502,6 b' class UsersView(UserAppView):'
525
502
526 @LoginRequired()
503 @LoginRequired()
527 @HasPermissionAllDecorator('hg.admin')
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 def user_edit_advanced(self):
505 def user_edit_advanced(self):
532 _ = self.request.translate
506 _ = self.request.translate
533 c = self.load_default_context()
507 c = self.load_default_context()
@@ -584,9 +558,6 b' class UsersView(UserAppView):'
584
558
585 @LoginRequired()
559 @LoginRequired()
586 @HasPermissionAllDecorator('hg.admin')
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 def user_edit_global_perms(self):
561 def user_edit_global_perms(self):
591 _ = self.request.translate
562 _ = self.request.translate
592 c = self.load_default_context()
563 c = self.load_default_context()
@@ -614,9 +585,6 b' class UsersView(UserAppView):'
614 @LoginRequired()
585 @LoginRequired()
615 @HasPermissionAllDecorator('hg.admin')
586 @HasPermissionAllDecorator('hg.admin')
616 @CSRFRequired()
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 def user_edit_global_perms_update(self):
588 def user_edit_global_perms_update(self):
621 _ = self.request.translate
589 _ = self.request.translate
622 c = self.load_default_context()
590 c = self.load_default_context()
@@ -682,9 +650,6 b' class UsersView(UserAppView):'
682 @LoginRequired()
650 @LoginRequired()
683 @HasPermissionAllDecorator('hg.admin')
651 @HasPermissionAllDecorator('hg.admin')
684 @CSRFRequired()
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 def user_enable_force_password_reset(self):
653 def user_enable_force_password_reset(self):
689 _ = self.request.translate
654 _ = self.request.translate
690 c = self.load_default_context()
655 c = self.load_default_context()
@@ -711,9 +676,6 b' class UsersView(UserAppView):'
711 @LoginRequired()
676 @LoginRequired()
712 @HasPermissionAllDecorator('hg.admin')
677 @HasPermissionAllDecorator('hg.admin')
713 @CSRFRequired()
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 def user_disable_force_password_reset(self):
679 def user_disable_force_password_reset(self):
718 _ = self.request.translate
680 _ = self.request.translate
719 c = self.load_default_context()
681 c = self.load_default_context()
@@ -741,9 +703,6 b' class UsersView(UserAppView):'
741 @LoginRequired()
703 @LoginRequired()
742 @HasPermissionAllDecorator('hg.admin')
704 @HasPermissionAllDecorator('hg.admin')
743 @CSRFRequired()
705 @CSRFRequired()
744 @view_config(
745 route_name='user_notice_dismiss', request_method='POST',
746 renderer='json_ext', xhr=True)
747 def user_notice_dismiss(self):
706 def user_notice_dismiss(self):
748 _ = self.request.translate
707 _ = self.request.translate
749 c = self.load_default_context()
708 c = self.load_default_context()
@@ -767,9 +726,6 b' class UsersView(UserAppView):'
767 @LoginRequired()
726 @LoginRequired()
768 @HasPermissionAllDecorator('hg.admin')
727 @HasPermissionAllDecorator('hg.admin')
769 @CSRFRequired()
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 def user_create_personal_repo_group(self):
729 def user_create_personal_repo_group(self):
774 """
730 """
775 Create personal repository group for this user
731 Create personal repository group for this user
@@ -821,9 +777,6 b' class UsersView(UserAppView):'
821
777
822 @LoginRequired()
778 @LoginRequired()
823 @HasPermissionAllDecorator('hg.admin')
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 def auth_tokens(self):
780 def auth_tokens(self):
828 _ = self.request.translate
781 _ = self.request.translate
829 c = self.load_default_context()
782 c = self.load_default_context()
@@ -843,9 +796,6 b' class UsersView(UserAppView):'
843
796
844 @LoginRequired()
797 @LoginRequired()
845 @HasPermissionAllDecorator('hg.admin')
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 def auth_tokens_view(self):
799 def auth_tokens_view(self):
850 _ = self.request.translate
800 _ = self.request.translate
851 c = self.load_default_context()
801 c = self.load_default_context()
@@ -867,8 +817,6 b' class UsersView(UserAppView):'
867 @LoginRequired()
817 @LoginRequired()
868 @HasPermissionAllDecorator('hg.admin')
818 @HasPermissionAllDecorator('hg.admin')
869 @CSRFRequired()
819 @CSRFRequired()
870 @view_config(
871 route_name='edit_user_auth_tokens_add', request_method='POST')
872 def auth_tokens_add(self):
820 def auth_tokens_add(self):
873 _ = self.request.translate
821 _ = self.request.translate
874 c = self.load_default_context()
822 c = self.load_default_context()
@@ -899,8 +847,6 b' class UsersView(UserAppView):'
899 @LoginRequired()
847 @LoginRequired()
900 @HasPermissionAllDecorator('hg.admin')
848 @HasPermissionAllDecorator('hg.admin')
901 @CSRFRequired()
849 @CSRFRequired()
902 @view_config(
903 route_name='edit_user_auth_tokens_delete', request_method='POST')
904 def auth_tokens_delete(self):
850 def auth_tokens_delete(self):
905 _ = self.request.translate
851 _ = self.request.translate
906 c = self.load_default_context()
852 c = self.load_default_context()
@@ -928,9 +874,6 b' class UsersView(UserAppView):'
928
874
929 @LoginRequired()
875 @LoginRequired()
930 @HasPermissionAllDecorator('hg.admin')
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 def ssh_keys(self):
877 def ssh_keys(self):
935 _ = self.request.translate
878 _ = self.request.translate
936 c = self.load_default_context()
879 c = self.load_default_context()
@@ -943,9 +886,6 b' class UsersView(UserAppView):'
943
886
944 @LoginRequired()
887 @LoginRequired()
945 @HasPermissionAllDecorator('hg.admin')
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 def ssh_keys_generate_keypair(self):
889 def ssh_keys_generate_keypair(self):
950 _ = self.request.translate
890 _ = self.request.translate
951 c = self.load_default_context()
891 c = self.load_default_context()
@@ -964,8 +904,6 b' class UsersView(UserAppView):'
964 @LoginRequired()
904 @LoginRequired()
965 @HasPermissionAllDecorator('hg.admin')
905 @HasPermissionAllDecorator('hg.admin')
966 @CSRFRequired()
906 @CSRFRequired()
967 @view_config(
968 route_name='edit_user_ssh_keys_add', request_method='POST')
969 def ssh_keys_add(self):
907 def ssh_keys_add(self):
970 _ = self.request.translate
908 _ = self.request.translate
971 c = self.load_default_context()
909 c = self.load_default_context()
@@ -1017,8 +955,6 b' class UsersView(UserAppView):'
1017 @LoginRequired()
955 @LoginRequired()
1018 @HasPermissionAllDecorator('hg.admin')
956 @HasPermissionAllDecorator('hg.admin')
1019 @CSRFRequired()
957 @CSRFRequired()
1020 @view_config(
1021 route_name='edit_user_ssh_keys_delete', request_method='POST')
1022 def ssh_keys_delete(self):
958 def ssh_keys_delete(self):
1023 _ = self.request.translate
959 _ = self.request.translate
1024 c = self.load_default_context()
960 c = self.load_default_context()
@@ -1048,9 +984,6 b' class UsersView(UserAppView):'
1048
984
1049 @LoginRequired()
985 @LoginRequired()
1050 @HasPermissionAllDecorator('hg.admin')
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 def emails(self):
987 def emails(self):
1055 _ = self.request.translate
988 _ = self.request.translate
1056 c = self.load_default_context()
989 c = self.load_default_context()
@@ -1065,8 +998,6 b' class UsersView(UserAppView):'
1065 @LoginRequired()
998 @LoginRequired()
1066 @HasPermissionAllDecorator('hg.admin')
999 @HasPermissionAllDecorator('hg.admin')
1067 @CSRFRequired()
1000 @CSRFRequired()
1068 @view_config(
1069 route_name='edit_user_emails_add', request_method='POST')
1070 def emails_add(self):
1001 def emails_add(self):
1071 _ = self.request.translate
1002 _ = self.request.translate
1072 c = self.load_default_context()
1003 c = self.load_default_context()
@@ -1105,8 +1036,6 b' class UsersView(UserAppView):'
1105 @LoginRequired()
1036 @LoginRequired()
1106 @HasPermissionAllDecorator('hg.admin')
1037 @HasPermissionAllDecorator('hg.admin')
1107 @CSRFRequired()
1038 @CSRFRequired()
1108 @view_config(
1109 route_name='edit_user_emails_delete', request_method='POST')
1110 def emails_delete(self):
1039 def emails_delete(self):
1111 _ = self.request.translate
1040 _ = self.request.translate
1112 c = self.load_default_context()
1041 c = self.load_default_context()
@@ -1131,9 +1060,6 b' class UsersView(UserAppView):'
1131
1060
1132 @LoginRequired()
1061 @LoginRequired()
1133 @HasPermissionAllDecorator('hg.admin')
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 def ips(self):
1063 def ips(self):
1138 _ = self.request.translate
1064 _ = self.request.translate
1139 c = self.load_default_context()
1065 c = self.load_default_context()
@@ -1152,8 +1078,6 b' class UsersView(UserAppView):'
1152 @LoginRequired()
1078 @LoginRequired()
1153 @HasPermissionAllDecorator('hg.admin')
1079 @HasPermissionAllDecorator('hg.admin')
1154 @CSRFRequired()
1080 @CSRFRequired()
1155 @view_config(
1156 route_name='edit_user_ips_add', request_method='POST')
1157 # NOTE(marcink): this view is allowed for default users, as we can
1081 # NOTE(marcink): this view is allowed for default users, as we can
1158 # edit their IP white list
1082 # edit their IP white list
1159 def ips_add(self):
1083 def ips_add(self):
@@ -1207,8 +1131,6 b' class UsersView(UserAppView):'
1207 @LoginRequired()
1131 @LoginRequired()
1208 @HasPermissionAllDecorator('hg.admin')
1132 @HasPermissionAllDecorator('hg.admin')
1209 @CSRFRequired()
1133 @CSRFRequired()
1210 @view_config(
1211 route_name='edit_user_ips_delete', request_method='POST')
1212 # NOTE(marcink): this view is allowed for default users, as we can
1134 # NOTE(marcink): this view is allowed for default users, as we can
1213 # edit their IP white list
1135 # edit their IP white list
1214 def ips_delete(self):
1136 def ips_delete(self):
@@ -1236,9 +1158,6 b' class UsersView(UserAppView):'
1236
1158
1237 @LoginRequired()
1159 @LoginRequired()
1238 @HasPermissionAllDecorator('hg.admin')
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 def groups_management(self):
1161 def groups_management(self):
1243 c = self.load_default_context()
1162 c = self.load_default_context()
1244 c.user = self.db_user
1163 c.user = self.db_user
@@ -1254,8 +1173,6 b' class UsersView(UserAppView):'
1254 @LoginRequired()
1173 @LoginRequired()
1255 @HasPermissionAllDecorator('hg.admin')
1174 @HasPermissionAllDecorator('hg.admin')
1256 @CSRFRequired()
1175 @CSRFRequired()
1257 @view_config(
1258 route_name='edit_user_groups_management_updates', request_method='POST')
1259 def groups_management_updates(self):
1176 def groups_management_updates(self):
1260 _ = self.request.translate
1177 _ = self.request.translate
1261 c = self.load_default_context()
1178 c = self.load_default_context()
@@ -1299,9 +1216,6 b' class UsersView(UserAppView):'
1299
1216
1300 @LoginRequired()
1217 @LoginRequired()
1301 @HasPermissionAllDecorator('hg.admin')
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 def user_audit_logs(self):
1219 def user_audit_logs(self):
1306 _ = self.request.translate
1220 _ = self.request.translate
1307 c = self.load_default_context()
1221 c = self.load_default_context()
@@ -1329,9 +1243,6 b' class UsersView(UserAppView):'
1329
1243
1330 @LoginRequired()
1244 @LoginRequired()
1331 @HasPermissionAllDecorator('hg.admin')
1245 @HasPermissionAllDecorator('hg.admin')
1332 @view_config(
1333 route_name='edit_user_audit_logs_download', request_method='GET',
1334 renderer='string')
1335 def user_audit_logs_download(self):
1246 def user_audit_logs_download(self):
1336 _ = self.request.translate
1247 _ = self.request.translate
1337 c = self.load_default_context()
1248 c = self.load_default_context()
@@ -1352,9 +1263,6 b' class UsersView(UserAppView):'
1352
1263
1353 @LoginRequired()
1264 @LoginRequired()
1354 @HasPermissionAllDecorator('hg.admin')
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 def user_perms_summary(self):
1266 def user_perms_summary(self):
1359 _ = self.request.translate
1267 _ = self.request.translate
1360 c = self.load_default_context()
1268 c = self.load_default_context()
@@ -1367,9 +1275,6 b' class UsersView(UserAppView):'
1367
1275
1368 @LoginRequired()
1276 @LoginRequired()
1369 @HasPermissionAllDecorator('hg.admin')
1277 @HasPermissionAllDecorator('hg.admin')
1370 @view_config(
1371 route_name='edit_user_perms_summary_json', request_method='GET',
1372 renderer='json_ext')
1373 def user_perms_summary_json(self):
1278 def user_perms_summary_json(self):
1374 self.load_default_context()
1279 self.load_default_context()
1375 perm_user = self.db_user.AuthUser(ip_addr=self.request.remote_addr)
1280 perm_user = self.db_user.AuthUser(ip_addr=self.request.remote_addr)
@@ -1378,9 +1283,6 b' class UsersView(UserAppView):'
1378
1283
1379 @LoginRequired()
1284 @LoginRequired()
1380 @HasPermissionAllDecorator('hg.admin')
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 def user_caches(self):
1286 def user_caches(self):
1385 _ = self.request.translate
1287 _ = self.request.translate
1386 c = self.load_default_context()
1288 c = self.load_default_context()
@@ -1399,8 +1301,6 b' class UsersView(UserAppView):'
1399 @LoginRequired()
1301 @LoginRequired()
1400 @HasPermissionAllDecorator('hg.admin')
1302 @HasPermissionAllDecorator('hg.admin')
1401 @CSRFRequired()
1303 @CSRFRequired()
1402 @view_config(
1403 route_name='edit_user_caches_update', request_method='POST')
1404 def user_caches_update(self):
1304 def user_caches_update(self):
1405 _ = self.request.translate
1305 _ = self.request.translate
1406 c = self.load_default_context()
1306 c = self.load_default_context()
@@ -67,6 +67,8 b' def maybe_create_history_store(event):'
67
67
68
68
69 def includeme(config):
69 def includeme(config):
70 from rhodecode.apps.channelstream.views import ChannelstreamView
71
70 settings = config.registry.settings
72 settings = config.registry.settings
71 PLUGIN_DEFINITION['config']['enabled'] = asbool(
73 PLUGIN_DEFINITION['config']['enabled'] = asbool(
72 settings.get('channelstream.enabled'))
74 settings.get('channelstream.enabled'))
@@ -85,12 +87,20 b' def includeme(config):'
85 config.add_route(
87 config.add_route(
86 name='channelstream_connect',
88 name='channelstream_connect',
87 pattern=ADMIN_PREFIX + '/channelstream/connect')
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 config.add_route(
95 config.add_route(
89 name='channelstream_subscribe',
96 name='channelstream_subscribe',
90 pattern=ADMIN_PREFIX + '/channelstream/subscribe')
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 config.add_route(
103 config.add_route(
92 name='channelstream_proxy',
104 name='channelstream_proxy',
93 pattern=settings.get('channelstream.proxy_path') or '/_channelstream')
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 import logging
21 import logging
22 import uuid
22 import uuid
23
23
24 from pyramid.view import view_config
24
25 from pyramid.httpexceptions import HTTPBadRequest, HTTPForbidden, HTTPBadGateway
25 from pyramid.httpexceptions import HTTPBadRequest, HTTPForbidden, HTTPBadGateway
26
26
27 from rhodecode.apps._base import BaseAppView
27 from rhodecode.apps._base import BaseAppView
@@ -54,8 +54,7 b' class ChannelstreamView(BaseAppView):'
54 return c
54 return c
55
55
56 @NotAnonymous()
56 @NotAnonymous()
57 @view_config(route_name='channelstream_connect', renderer='json_ext')
57 def channelstream_connect(self):
58 def connect(self):
59 """ handle authorization of users trying to connect """
58 """ handle authorization of users trying to connect """
60
59
61 self.load_default_context()
60 self.load_default_context()
@@ -132,8 +131,7 b' class ChannelstreamView(BaseAppView):'
132 return connect_result
131 return connect_result
133
132
134 @NotAnonymous()
133 @NotAnonymous()
135 @view_config(route_name='channelstream_subscribe', renderer='json_ext')
134 def channelstream_subscribe(self):
136 def subscribe(self):
137 """ can be used to subscribe specific connection to other channels """
135 """ can be used to subscribe specific connection to other channels """
138 self.load_default_context()
136 self.load_default_context()
139 try:
137 try:
@@ -35,6 +35,8 b' class DebugStylePredicate(object):'
35
35
36
36
37 def includeme(config):
37 def includeme(config):
38 from rhodecode.apps.debug_style.views import DebugStyleView
39
38 config.add_route_predicate(
40 config.add_route_predicate(
39 'debug_style', DebugStylePredicate)
41 'debug_style', DebugStylePredicate)
40
42
@@ -42,18 +44,38 b' def includeme(config):'
42 name='debug_style_home',
44 name='debug_style_home',
43 pattern=ADMIN_PREFIX + '/debug_style',
45 pattern=ADMIN_PREFIX + '/debug_style',
44 debug_style=True)
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 config.add_route(
53 config.add_route(
46 name='debug_style_email',
54 name='debug_style_email',
47 pattern=ADMIN_PREFIX + '/debug_style/email/{email_id}',
55 pattern=ADMIN_PREFIX + '/debug_style/email/{email_id}',
48 debug_style=True)
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 config.add_route(
63 config.add_route(
50 name='debug_style_email_plain_rendered',
64 name='debug_style_email_plain_rendered',
51 pattern=ADMIN_PREFIX + '/debug_style/email-rendered/{email_id}',
65 pattern=ADMIN_PREFIX + '/debug_style/email-rendered/{email_id}',
52 debug_style=True)
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 config.add_route(
73 config.add_route(
54 name='debug_style_template',
74 name='debug_style_template',
55 pattern=ADMIN_PREFIX + '/debug_style/t/{t_path}',
75 pattern=ADMIN_PREFIX + '/debug_style/t/{t_path}',
56 debug_style=True)
76 debug_style=True)
57
77 config.add_view(
58 # Scan module for configuration decorators.
78 DebugStyleView,
59 config.scan('.views', ignore='.tests')
79 attr='template',
80 route_name='debug_style_template', request_method='GET',
81 renderer=None)
@@ -22,7 +22,6 b' import os'
22 import logging
22 import logging
23 import datetime
23 import datetime
24
24
25 from pyramid.view import view_config
26 from pyramid.renderers import render_to_response
25 from pyramid.renderers import render_to_response
27 from rhodecode.apps._base import BaseAppView
26 from rhodecode.apps._base import BaseAppView
28 from rhodecode.lib.celerylib import run_task, tasks
27 from rhodecode.lib.celerylib import run_task, tasks
@@ -37,12 +36,8 b' class DebugStyleView(BaseAppView):'
37
36
38 def load_default_context(self):
37 def load_default_context(self):
39 c = self._get_local_tmpl_context()
38 c = self._get_local_tmpl_context()
40
41 return c
39 return c
42
40
43 @view_config(
44 route_name='debug_style_home', request_method='GET',
45 renderer=None)
46 def index(self):
41 def index(self):
47 c = self.load_default_context()
42 c = self.load_default_context()
48 c.active = 'index'
43 c.active = 'index'
@@ -51,12 +46,6 b' class DebugStyleView(BaseAppView):'
51 'debug_style/index.html', self._get_template_context(c),
46 'debug_style/index.html', self._get_template_context(c),
52 request=self.request)
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 def render_email(self):
49 def render_email(self):
61 c = self.load_default_context()
50 c = self.load_default_context()
62 email_id = self.request.matchdict['email_id']
51 email_id = self.request.matchdict['email_id']
@@ -457,9 +446,6 b' users: description edit fixes'
457 template, self._get_template_context(c),
446 template, self._get_template_context(c),
458 request=self.request)
447 request=self.request)
459
448
460 @view_config(
461 route_name='debug_style_template', request_method='GET',
462 renderer=None)
463 def template(self):
449 def template(self):
464 t_path = self.request.matchdict['t_path']
450 t_path = self.request.matchdict['t_path']
465 c = self.load_default_context()
451 c = self.load_default_context()
@@ -483,4 +469,3 b' users: description edit fixes'
483 return render_to_response(
469 return render_to_response(
484 'debug_style/' + t_path, self._get_template_context(c),
470 'debug_style/' + t_path, self._get_template_context(c),
485 request=self.request)
471 request=self.request)
486
@@ -35,18 +35,31 b' def _sanitize_settings_and_apply_default'
35
35
36
36
37 def includeme(config):
37 def includeme(config):
38 from rhodecode.apps.file_store.views import FileStoreView
39
38 settings = config.registry.settings
40 settings = config.registry.settings
39 _sanitize_settings_and_apply_defaults(settings)
41 _sanitize_settings_and_apply_defaults(settings)
40
42
41 config.add_route(
43 config.add_route(
42 name='upload_file',
44 name='upload_file',
43 pattern='/_file_store/upload')
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 config.add_route(
51 config.add_route(
45 name='download_file',
52 name='download_file',
46 pattern='/_file_store/download/{fid:.*}')
53 pattern='/_file_store/download/{fid:.*}')
54 config.add_view(
55 FileStoreView,
56 attr='download_file',
57 route_name='download_file')
58
47 config.add_route(
59 config.add_route(
48 name='download_file_by_token',
60 name='download_file_by_token',
49 pattern='/_file_store/token-download/{_auth_token}/{fid:.*}')
61 pattern='/_file_store/token-download/{_auth_token}/{fid:.*}')
50
62 config.add_view(
51 # Scan module for configuration decorators.
63 FileStoreView,
52 config.scan('.views', ignore='.tests')
64 attr='download_file_by_token',
65 route_name='download_file_by_token')
@@ -21,7 +21,6 b''
21 import os
21 import os
22 import time
22 import time
23 import errno
23 import errno
24 import shutil
25 import hashlib
24 import hashlib
26
25
27 from rhodecode.lib.ext_json import json
26 from rhodecode.lib.ext_json import json
@@ -212,10 +211,19 b' class LocalFileStorage(object):'
212 filename, path = self.resolve_name(uid_filename, dest_directory)
211 filename, path = self.resolve_name(uid_filename, dest_directory)
213 stored_file_dir = os.path.dirname(path)
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 with open(path, "wb") as dest:
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 metadata = {}
228 metadata = {}
221 if extra_metadata:
229 if extra_metadata:
@@ -19,7 +19,7 b''
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 import logging
20 import logging
21
21
22 from pyramid.view import view_config
22
23 from pyramid.response import FileResponse
23 from pyramid.response import FileResponse
24 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
24 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
25
25
@@ -57,7 +57,6 b' class FileStoreView(BaseAppView):'
57 return _content_type, _encoding
57 return _content_type, _encoding
58
58
59 def _serve_file(self, file_uid):
59 def _serve_file(self, file_uid):
60
61 if not self.storage.exists(file_uid):
60 if not self.storage.exists(file_uid):
62 store_path = self.storage.store_path(file_uid)
61 store_path = self.storage.store_path(file_uid)
63 log.debug('File with FID:%s not found in the store under `%s`',
62 log.debug('File with FID:%s not found in the store under `%s`',
@@ -112,13 +111,23 b' class FileStoreView(BaseAppView):'
112 # For file store we don't submit any session data, this logic tells the
111 # For file store we don't submit any session data, this logic tells the
113 # Session lib to skip it
112 # Session lib to skip it
114 setattr(self.request, '_file_response', True)
113 setattr(self.request, '_file_response', True)
115 return FileResponse(file_path, request=self.request,
114 response = FileResponse(
116 content_type=content_type, content_encoding=content_encoding)
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 @LoginRequired()
128 @LoginRequired()
119 @NotAnonymous()
129 @NotAnonymous()
120 @CSRFRequired()
130 @CSRFRequired()
121 @view_config(route_name='upload_file', request_method='POST', renderer='json_ext')
122 def upload_file(self):
131 def upload_file(self):
123 self.load_default_context()
132 self.load_default_context()
124 file_obj = self.request.POST.get(self.upload_key)
133 file_obj = self.request.POST.get(self.upload_key)
@@ -172,7 +181,6 b' class FileStoreView(BaseAppView):'
172 'access_path': h.route_path('download_file', fid=store_uid)}
181 'access_path': h.route_path('download_file', fid=store_uid)}
173
182
174 # ACL is checked by scopes, if no scope the file is accessible to all
183 # ACL is checked by scopes, if no scope the file is accessible to all
175 @view_config(route_name='download_file')
176 def download_file(self):
184 def download_file(self):
177 self.load_default_context()
185 self.load_default_context()
178 file_uid = self.request.matchdict['fid']
186 file_uid = self.request.matchdict['fid']
@@ -182,7 +190,6 b' class FileStoreView(BaseAppView):'
182 # in addition to @LoginRequired ACL is checked by scopes
190 # in addition to @LoginRequired ACL is checked by scopes
183 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_ARTIFACT_DOWNLOAD])
191 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_ARTIFACT_DOWNLOAD])
184 @NotAnonymous()
192 @NotAnonymous()
185 @view_config(route_name='download_file_by_token')
186 def download_file_by_token(self):
193 def download_file_by_token(self):
187 """
194 """
188 Special view that allows to access the download file by special URL that
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 def admin_routes(config):
23 def admin_routes(config):
24 from rhodecode.apps.gist.views import GistView
25
24 config.add_route(
26 config.add_route(
25 name='gists_show', pattern='/gists')
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 config.add_route(
34 config.add_route(
27 name='gists_new', pattern='/gists/new')
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 config.add_route(
42 config.add_route(
29 name='gists_create', pattern='/gists/create')
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 config.add_route(
50 config.add_route(
32 name='gist_show', pattern='/gists/{gist_id}')
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 config.add_route(
86 config.add_route(
35 name='gist_delete', pattern='/gists/{gist_id}/delete')
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 config.add_route(
93 config.add_route(
38 name='gist_edit', pattern='/gists/{gist_id}/edit')
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 config.add_route(
109 config.add_route(
41 name='gist_edit_check_revision',
110 name='gist_edit_check_revision',
42 pattern='/gists/{gist_id}/edit/check_revision')
111 pattern='/gists/{gist_id}/edit/check_revision')
43
112 config.add_view(
44 config.add_route(
113 GistView,
45 name='gist_update', pattern='/gists/{gist_id}/update')
114 attr='gist_edit_check_revision',
46
115 route_name='gist_edit_check_revision', request_method='GET',
47 config.add_route(
116 renderer='json_ext')
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:.*}')
57
117
58
118
59 def includeme(config):
119 def includeme(config):
60 config.include(admin_routes, route_prefix=ADMIN_PREFIX)
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 'gist_edit': ADMIN_PREFIX + '/gists/{gist_id}/edit',
43 'gist_edit': ADMIN_PREFIX + '/gists/{gist_id}/edit',
44 'gist_edit_check_revision': ADMIN_PREFIX + '/gists/{gist_id}/edit/check_revision',
44 'gist_edit_check_revision': ADMIN_PREFIX + '/gists/{gist_id}/edit/check_revision',
45 'gist_update': ADMIN_PREFIX + '/gists/{gist_id}/update',
45 'gist_update': ADMIN_PREFIX + '/gists/{gist_id}/update',
46 'gist_show_rev': ADMIN_PREFIX + '/gists/{gist_id}/{revision}',
46 'gist_show_rev': ADMIN_PREFIX + '/gists/{gist_id}/rev/{revision}',
47 'gist_show_formatted': ADMIN_PREFIX + '/gists/{gist_id}/{revision}/{format}',
47 'gist_show_formatted': ADMIN_PREFIX + '/gists/{gist_id}/rev/{revision}/{format}',
48 'gist_show_formatted_path': ADMIN_PREFIX + '/gists/{gist_id}/{revision}/{format}/{f_path}',
48 'gist_show_formatted_path': ADMIN_PREFIX + '/gists/{gist_id}/rev/{revision}/{format}/{f_path}',
49
49
50 }[name].format(**kwargs)
50 }[name].format(**kwargs)
51
51
@@ -26,7 +26,6 b' import formencode.htmlfill'
26 import peppercorn
26 import peppercorn
27
27
28 from pyramid.httpexceptions import HTTPNotFound, HTTPFound, HTTPBadRequest
28 from pyramid.httpexceptions import HTTPNotFound, HTTPFound, HTTPBadRequest
29 from pyramid.view import view_config
30 from pyramid.renderers import render
29 from pyramid.renderers import render
31 from pyramid.response import Response
30 from pyramid.response import Response
32
31
@@ -70,9 +69,6 b' class GistView(BaseAppView):'
70 return c
69 return c
71
70
72 @LoginRequired()
71 @LoginRequired()
73 @view_config(
74 route_name='gists_show', request_method='GET',
75 renderer='rhodecode:templates/admin/gists/gist_index.mako')
76 def gist_show_all(self):
72 def gist_show_all(self):
77 c = self.load_default_context()
73 c = self.load_default_context()
78
74
@@ -134,9 +130,6 b' class GistView(BaseAppView):'
134
130
135 @LoginRequired()
131 @LoginRequired()
136 @NotAnonymous()
132 @NotAnonymous()
137 @view_config(
138 route_name='gists_new', request_method='GET',
139 renderer='rhodecode:templates/admin/gists/gist_new.mako')
140 def gist_new(self):
133 def gist_new(self):
141 c = self.load_default_context()
134 c = self.load_default_context()
142 return self._get_template_context(c)
135 return self._get_template_context(c)
@@ -144,9 +137,6 b' class GistView(BaseAppView):'
144 @LoginRequired()
137 @LoginRequired()
145 @NotAnonymous()
138 @NotAnonymous()
146 @CSRFRequired()
139 @CSRFRequired()
147 @view_config(
148 route_name='gists_create', request_method='POST',
149 renderer='rhodecode:templates/admin/gists/gist_new.mako')
150 def gist_create(self):
140 def gist_create(self):
151 _ = self.request.translate
141 _ = self.request.translate
152 c = self.load_default_context()
142 c = self.load_default_context()
@@ -222,8 +212,6 b' class GistView(BaseAppView):'
222 @LoginRequired()
212 @LoginRequired()
223 @NotAnonymous()
213 @NotAnonymous()
224 @CSRFRequired()
214 @CSRFRequired()
225 @view_config(
226 route_name='gist_delete', request_method='POST')
227 def gist_delete(self):
215 def gist_delete(self):
228 _ = self.request.translate
216 _ = self.request.translate
229 gist_id = self.request.matchdict['gist_id']
217 gist_id = self.request.matchdict['gist_id']
@@ -263,18 +251,6 b' class GistView(BaseAppView):'
263 return gist
251 return gist
264
252
265 @LoginRequired()
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 def gist_show(self):
254 def gist_show(self):
279 gist_id = self.request.matchdict['gist_id']
255 gist_id = self.request.matchdict['gist_id']
280
256
@@ -307,9 +283,6 b' class GistView(BaseAppView):'
307
283
308 @LoginRequired()
284 @LoginRequired()
309 @NotAnonymous()
285 @NotAnonymous()
310 @view_config(
311 route_name='gist_edit', request_method='GET',
312 renderer='rhodecode:templates/admin/gists/gist_edit.mako')
313 def gist_edit(self):
286 def gist_edit(self):
314 _ = self.request.translate
287 _ = self.request.translate
315 gist_id = self.request.matchdict['gist_id']
288 gist_id = self.request.matchdict['gist_id']
@@ -341,9 +314,6 b' class GistView(BaseAppView):'
341 @LoginRequired()
314 @LoginRequired()
342 @NotAnonymous()
315 @NotAnonymous()
343 @CSRFRequired()
316 @CSRFRequired()
344 @view_config(
345 route_name='gist_update', request_method='POST',
346 renderer='rhodecode:templates/admin/gists/gist_edit.mako')
347 def gist_update(self):
317 def gist_update(self):
348 _ = self.request.translate
318 _ = self.request.translate
349 gist_id = self.request.matchdict['gist_id']
319 gist_id = self.request.matchdict['gist_id']
@@ -397,9 +367,6 b' class GistView(BaseAppView):'
397
367
398 @LoginRequired()
368 @LoginRequired()
399 @NotAnonymous()
369 @NotAnonymous()
400 @view_config(
401 route_name='gist_edit_check_revision', request_method='GET',
402 renderer='json_ext')
403 def gist_edit_check_revision(self):
370 def gist_edit_check_revision(self):
404 _ = self.request.translate
371 _ = self.request.translate
405 gist_id = self.request.matchdict['gist_id']
372 gist_id = self.request.matchdict['gist_id']
@@ -38,56 +38,110 b' class VCSCallPredicate(object):'
38
38
39
39
40 def includeme(config):
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 config.add_route(
46 config.add_route(
43 name='home',
47 name='home',
44 pattern='/')
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 config.add_route(
55 config.add_route(
47 name='main_page_repos_data',
56 name='main_page_repos_data',
48 pattern='/_home_repos')
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 config.add_route(
64 config.add_route(
51 name='main_page_repo_groups_data',
65 name='main_page_repo_groups_data',
52 pattern='/_home_repo_groups')
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 config.add_route(
73 config.add_route(
55 name='user_autocomplete_data',
74 name='user_autocomplete_data',
56 pattern='/_users')
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 config.add_route(
82 config.add_route(
59 name='user_group_autocomplete_data',
83 name='user_group_autocomplete_data',
60 pattern='/_user_groups')
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 config.add_route(
91 config.add_route(
63 name='repo_list_data',
92 name='repo_list_data',
64 pattern='/_repos')
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 config.add_route(
100 config.add_route(
67 name='repo_group_list_data',
101 name='repo_group_list_data',
68 pattern='/_repo_groups')
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 config.add_route(
109 config.add_route(
71 name='goto_switcher_data',
110 name='goto_switcher_data',
72 pattern='/_goto_data')
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 config.add_route(
118 config.add_route(
75 name='markup_preview',
119 name='markup_preview',
76 pattern='/_markup_preview')
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 config.add_route(
127 config.add_route(
79 name='file_preview',
128 name='file_preview',
80 pattern='/_file_preview')
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 config.add_route(
136 config.add_route(
83 name='store_user_session_value',
137 name='store_user_session_value',
84 pattern='/_store_session_attr')
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 # register our static links via redirection mechanism
145 # register our static links via redirection mechanism
87 routing_links.connect_redirection_links(config)
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 import collections
23 import collections
24
24
25 from pyramid.httpexceptions import HTTPNotFound
25 from pyramid.httpexceptions import HTTPNotFound
26 from pyramid.view import view_config
27
26
28 from rhodecode.apps._base import BaseAppView, DataGridAppView
27 from rhodecode.apps._base import BaseAppView, DataGridAppView
29 from rhodecode.lib import helpers as h
28 from rhodecode.lib import helpers as h
@@ -50,13 +49,9 b' class HomeView(BaseAppView, DataGridAppV'
50 def load_default_context(self):
49 def load_default_context(self):
51 c = self._get_local_tmpl_context()
50 c = self._get_local_tmpl_context()
52 c.user = c.auth_user.get_instance()
51 c.user = c.auth_user.get_instance()
53
54 return c
52 return c
55
53
56 @LoginRequired()
54 @LoginRequired()
57 @view_config(
58 route_name='user_autocomplete_data', request_method='GET',
59 renderer='json_ext', xhr=True)
60 def user_autocomplete_data(self):
55 def user_autocomplete_data(self):
61 self.load_default_context()
56 self.load_default_context()
62 query = self.request.GET.get('query')
57 query = self.request.GET.get('query')
@@ -88,9 +83,6 b' class HomeView(BaseAppView, DataGridAppV'
88
83
89 @LoginRequired()
84 @LoginRequired()
90 @NotAnonymous()
85 @NotAnonymous()
91 @view_config(
92 route_name='user_group_autocomplete_data', request_method='GET',
93 renderer='json_ext', xhr=True)
94 def user_group_autocomplete_data(self):
86 def user_group_autocomplete_data(self):
95 self.load_default_context()
87 self.load_default_context()
96 query = self.request.GET.get('query')
88 query = self.request.GET.get('query')
@@ -434,9 +426,6 b' class HomeView(BaseAppView, DataGridAppV'
434 return files, True
426 return files, True
435
427
436 @LoginRequired()
428 @LoginRequired()
437 @view_config(
438 route_name='repo_list_data', request_method='GET',
439 renderer='json_ext', xhr=True)
440 def repo_list_data(self):
429 def repo_list_data(self):
441 _ = self.request.translate
430 _ = self.request.translate
442 self.load_default_context()
431 self.load_default_context()
@@ -461,9 +450,6 b' class HomeView(BaseAppView, DataGridAppV'
461 return data
450 return data
462
451
463 @LoginRequired()
452 @LoginRequired()
464 @view_config(
465 route_name='repo_group_list_data', request_method='GET',
466 renderer='json_ext', xhr=True)
467 def repo_group_list_data(self):
453 def repo_group_list_data(self):
468 _ = self.request.translate
454 _ = self.request.translate
469 self.load_default_context()
455 self.load_default_context()
@@ -619,9 +605,6 b' class HomeView(BaseAppView, DataGridAppV'
619 return queries
605 return queries
620
606
621 @LoginRequired()
607 @LoginRequired()
622 @view_config(
623 route_name='goto_switcher_data', request_method='GET',
624 renderer='json_ext', xhr=True)
625 def goto_switcher_data(self):
608 def goto_switcher_data(self):
626 c = self.load_default_context()
609 c = self.load_default_context()
627
610
@@ -750,9 +733,6 b' class HomeView(BaseAppView, DataGridAppV'
750 return {'suggestions': res}
733 return {'suggestions': res}
751
734
752 @LoginRequired()
735 @LoginRequired()
753 @view_config(
754 route_name='home', request_method='GET',
755 renderer='rhodecode:templates/index.mako')
756 def main_page(self):
736 def main_page(self):
757 c = self.load_default_context()
737 c = self.load_default_context()
758 c.repo_group = None
738 c.repo_group = None
@@ -789,9 +769,6 b' class HomeView(BaseAppView, DataGridAppV'
789 self._rhodecode_user, repo_group_id)
769 self._rhodecode_user, repo_group_id)
790
770
791 @LoginRequired()
771 @LoginRequired()
792 @view_config(
793 route_name='main_page_repo_groups_data',
794 request_method='GET', renderer='json_ext', xhr=True)
795 def main_page_repo_groups_data(self):
772 def main_page_repo_groups_data(self):
796 self.load_default_context()
773 self.load_default_context()
797 repo_group_id = safe_int(self.request.GET.get('repo_group_id'))
774 repo_group_id = safe_int(self.request.GET.get('repo_group_id'))
@@ -806,9 +783,6 b' class HomeView(BaseAppView, DataGridAppV'
806 return self._main_page_repo_groups_data(repo_group_id)
783 return self._main_page_repo_groups_data(repo_group_id)
807
784
808 @LoginRequired()
785 @LoginRequired()
809 @view_config(
810 route_name='main_page_repos_data',
811 request_method='GET', renderer='json_ext', xhr=True)
812 def main_page_repos_data(self):
786 def main_page_repos_data(self):
813 self.load_default_context()
787 self.load_default_context()
814 repo_group_id = safe_int(self.request.GET.get('repo_group_id'))
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 @LoginRequired()
799 @LoginRequired()
826 @HasRepoGroupPermissionAnyDecorator(*AuthUser.repo_group_read_perms)
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 def repo_group_main_page(self):
801 def repo_group_main_page(self):
834 c = self.load_default_context()
802 c = self.load_default_context()
835 c.repo_group = self.request.db_repo_group
803 c.repo_group = self.request.db_repo_group
@@ -837,9 +805,6 b' class HomeView(BaseAppView, DataGridAppV'
837
805
838 @LoginRequired()
806 @LoginRequired()
839 @CSRFRequired()
807 @CSRFRequired()
840 @view_config(
841 route_name='markup_preview', request_method='POST',
842 renderer='string', xhr=True)
843 def markup_preview(self):
808 def markup_preview(self):
844 # Technically a CSRF token is not needed as no state changes with this
809 # Technically a CSRF token is not needed as no state changes with this
845 # call. However, as this is a POST is better to have it, so automated
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 @LoginRequired()
821 @LoginRequired()
857 @CSRFRequired()
822 @CSRFRequired()
858 @view_config(
859 route_name='file_preview', request_method='POST',
860 renderer='string', xhr=True)
861 def file_preview(self):
823 def file_preview(self):
862 # Technically a CSRF token is not needed as no state changes with this
824 # Technically a CSRF token is not needed as no state changes with this
863 # call. However, as this is a POST is better to have it, so automated
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 @LoginRequired()
846 @LoginRequired()
885 @CSRFRequired()
847 @CSRFRequired()
886 @view_config(
887 route_name='store_user_session_value', request_method='POST',
888 renderer='string', xhr=True)
889 def store_user_session_attr(self):
848 def store_user_session_attr(self):
890 key = self.request.POST.get('key')
849 key = self.request.POST.get('key')
891 val = self.request.POST.get('val')
850 val = self.request.POST.get('val')
@@ -20,26 +20,48 b''
20
20
21
21
22 def includeme(config):
22 def includeme(config):
23
23 from rhodecode.apps.hovercards.views import HoverCardsView, HoverCardsRepoView
24 config.add_route(
24 config.add_route(
25 name='hovercard_user',
25 name='hovercard_user',
26 pattern='/_hovercard/user/{user_id}')
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 config.add_route(
33 config.add_route(
29 name='hovercard_username',
34 name='hovercard_username',
30 pattern='/_hovercard/username/{username}')
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 config.add_route(
42 config.add_route(
33 name='hovercard_user_group',
43 name='hovercard_user_group',
34 pattern='/_hovercard/user_group/{user_group_id}')
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 config.add_route(
51 config.add_route(
37 name='hovercard_pull_request',
52 name='hovercard_pull_request',
38 pattern='/_hovercard/pull_request/{pull_request_id}')
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 config.add_route(
60 config.add_route(
41 name='hovercard_repo_commit',
61 name='hovercard_repo_commit',
42 pattern='/_hovercard/commit/{repo_name:.*?[^/]}/{commit_id}', repo_route=True)
62 pattern='/_hovercard/commit/{repo_name:.*?[^/]}/{commit_id}', repo_route=True)
43
63 config.add_view(
44 # Scan module for configuration decorators.
64 HoverCardsRepoView,
45 config.scan('.views', ignore='.tests')
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 import collections
23 import collections
24
24
25 from pyramid.httpexceptions import HTTPNotFound
25 from pyramid.httpexceptions import HTTPNotFound
26 from pyramid.view import view_config
26
27
27
28 from rhodecode.apps._base import BaseAppView, RepoAppView
28 from rhodecode.apps._base import BaseAppView, RepoAppView
29 from rhodecode.lib import helpers as h
29 from rhodecode.lib import helpers as h
@@ -54,9 +54,6 b' class HoverCardsView(BaseAppView):'
54 return c
54 return c
55
55
56 @LoginRequired()
56 @LoginRequired()
57 @view_config(
58 route_name='hovercard_user', request_method='GET', xhr=True,
59 renderer='rhodecode:templates/hovercards/hovercard_user.mako')
60 def hovercard_user(self):
57 def hovercard_user(self):
61 c = self.load_default_context()
58 c = self.load_default_context()
62 user_id = self.request.matchdict['user_id']
59 user_id = self.request.matchdict['user_id']
@@ -64,9 +61,6 b' class HoverCardsView(BaseAppView):'
64 return self._get_template_context(c)
61 return self._get_template_context(c)
65
62
66 @LoginRequired()
63 @LoginRequired()
67 @view_config(
68 route_name='hovercard_username', request_method='GET', xhr=True,
69 renderer='rhodecode:templates/hovercards/hovercard_user.mako')
70 def hovercard_username(self):
64 def hovercard_username(self):
71 c = self.load_default_context()
65 c = self.load_default_context()
72 username = self.request.matchdict['username']
66 username = self.request.matchdict['username']
@@ -77,9 +71,6 b' class HoverCardsView(BaseAppView):'
77 return self._get_template_context(c)
71 return self._get_template_context(c)
78
72
79 @LoginRequired()
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 def hovercard_user_group(self):
74 def hovercard_user_group(self):
84 c = self.load_default_context()
75 c = self.load_default_context()
85 user_group_id = self.request.matchdict['user_group_id']
76 user_group_id = self.request.matchdict['user_group_id']
@@ -87,9 +78,6 b' class HoverCardsView(BaseAppView):'
87 return self._get_template_context(c)
78 return self._get_template_context(c)
88
79
89 @LoginRequired()
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 def hovercard_pull_request(self):
81 def hovercard_pull_request(self):
94 c = self.load_default_context()
82 c = self.load_default_context()
95 c.pull_request = PullRequest.get_or_404(
83 c.pull_request = PullRequest.get_or_404(
@@ -107,9 +95,6 b' class HoverCardsRepoView(RepoAppView):'
107
95
108 @LoginRequired()
96 @LoginRequired()
109 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', 'repository.admin')
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 def hovercard_repo_commit(self):
98 def hovercard_repo_commit(self):
114 c = self.load_default_context()
99 c = self.load_default_context()
115 commit_id = self.request.matchdict['commit_id']
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 def admin_routes(config):
25 def admin_routes(config):
26 from rhodecode.apps.journal.views import JournalView
26
27
27 config.add_route(
28 config.add_route(
28 name='journal', pattern='/journal')
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 config.add_route(
36 config.add_route(
30 name='journal_rss', pattern='/journal/rss')
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 config.add_route(
44 config.add_route(
32 name='journal_atom', pattern='/journal/atom')
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 config.add_route(
52 config.add_route(
35 name='journal_public', pattern='/public_journal')
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 config.add_route(
60 config.add_route(
37 name='journal_public_atom', pattern='/public_journal/atom')
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 config.add_route(
68 config.add_route(
39 name='journal_public_atom_old', pattern='/public_journal_atom')
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 config.add_route(
76 config.add_route(
42 name='journal_public_rss', pattern='/public_journal/rss')
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 config.add_route(
84 config.add_route(
44 name='journal_public_rss_old', pattern='/public_journal_rss')
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 config.add_route(
92 config.add_route(
47 name='toggle_following', pattern='/toggle_following')
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 def includeme(config):
101 def includeme(config):
51 config.include(admin_routes, route_prefix=ADMIN_PREFIX)
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 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20
21
22 import logging
21 import logging
23 import itertools
22 import itertools
24
23
25
26
27 from pyramid.view import view_config
28 from pyramid.httpexceptions import HTTPBadRequest
24 from pyramid.httpexceptions import HTTPBadRequest
29 from pyramid.response import Response
25 from pyramid.response import Response
30 from pyramid.renderers import render
26 from pyramid.renderers import render
@@ -218,9 +214,6 b' class JournalView(BaseAppView):'
218
214
219 @LoginRequired()
215 @LoginRequired()
220 @NotAnonymous()
216 @NotAnonymous()
221 @view_config(
222 route_name='journal', request_method='GET',
223 renderer=None)
224 def journal(self):
217 def journal(self):
225 c = self.load_default_context()
218 c = self.load_default_context()
226
219
@@ -258,9 +251,6 b' class JournalView(BaseAppView):'
258
251
259 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
252 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
260 @NotAnonymous()
253 @NotAnonymous()
261 @view_config(
262 route_name='journal_atom', request_method='GET',
263 renderer=None)
264 def journal_atom(self):
254 def journal_atom(self):
265 """
255 """
266 Produce an atom-1.0 feed via feedgenerator module
256 Produce an atom-1.0 feed via feedgenerator module
@@ -274,9 +264,6 b' class JournalView(BaseAppView):'
274
264
275 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
265 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
276 @NotAnonymous()
266 @NotAnonymous()
277 @view_config(
278 route_name='journal_rss', request_method='GET',
279 renderer=None)
280 def journal_rss(self):
267 def journal_rss(self):
281 """
268 """
282 Produce an rss feed via feedgenerator module
269 Produce an rss feed via feedgenerator module
@@ -289,39 +276,6 b' class JournalView(BaseAppView):'
289 return self._rss_feed(following_repos, c.search_term, public=False)
276 return self._rss_feed(following_repos, c.search_term, public=False)
290
277
291 @LoginRequired()
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 def journal_public(self):
279 def journal_public(self):
326 c = self.load_default_context()
280 c = self.load_default_context()
327 # Return a rendered template
281 # Return a rendered template
@@ -357,9 +311,6 b' class JournalView(BaseAppView):'
357 return Response(html)
311 return Response(html)
358
312
359 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
313 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
360 @view_config(
361 route_name='journal_public_atom', request_method='GET',
362 renderer=None)
363 def journal_public_atom(self):
314 def journal_public_atom(self):
364 """
315 """
365 Produce an atom-1.0 feed via feedgenerator module
316 Produce an atom-1.0 feed via feedgenerator module
@@ -373,9 +324,6 b' class JournalView(BaseAppView):'
373 return self._atom_feed(following_repos, c.search_term)
324 return self._atom_feed(following_repos, c.search_term)
374
325
375 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
326 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
376 @view_config(
377 route_name='journal_public_rss', request_method='GET',
378 renderer=None)
379 def journal_public_rss(self):
327 def journal_public_rss(self):
380 """
328 """
381 Produce an rss2 feed via feedgenerator module
329 Produce an rss2 feed via feedgenerator module
@@ -387,3 +335,30 b' class JournalView(BaseAppView):'
387 .all()
335 .all()
388
336
389 return self._rss_feed(following_repos, c.search_term)
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 def includeme(config):
25 def includeme(config):
26
26 from rhodecode.apps.login.views import LoginView
27
27 config.add_route(
28 config.add_route(
28 name='login',
29 name='login',
29 pattern=ADMIN_PREFIX + '/login')
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 config.add_route(
42 config.add_route(
31 name='logout',
43 name='logout',
32 pattern=ADMIN_PREFIX + '/logout')
44 pattern=ADMIN_PREFIX + '/logout')
45 config.add_view(
46 LoginView,
47 attr='logout',
48 route_name='logout', request_method='POST')
49
33 config.add_route(
50 config.add_route(
34 name='register',
51 name='register',
35 pattern=ADMIN_PREFIX + '/register')
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 config.add_route(
64 config.add_route(
37 name='reset_password',
65 name='reset_password',
38 pattern=ADMIN_PREFIX + '/password_reset')
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 config.add_route(
73 config.add_route(
40 name='reset_password_confirmation',
74 name='reset_password_confirmation',
41 pattern=ADMIN_PREFIX + '/password_reset_confirmation')
75 pattern=ADMIN_PREFIX + '/password_reset_confirmation')
42
76 config.add_view(
43 # Scan module for configuration decorators.
77 LoginView,
44 config.scan('.views', ignore='.tests')
78 attr='password_reset_confirmation',
79 route_name='reset_password_confirmation', request_method='GET')
@@ -28,7 +28,7 b' import urlparse'
28 import requests
28 import requests
29
29
30 from pyramid.httpexceptions import HTTPFound
30 from pyramid.httpexceptions import HTTPFound
31 from pyramid.view import view_config
31
32
32
33 from rhodecode.apps._base import BaseAppView
33 from rhodecode.apps._base import BaseAppView
34 from rhodecode.authentication.base import authenticate, HTTP_TYPE
34 from rhodecode.authentication.base import authenticate, HTTP_TYPE
@@ -114,7 +114,6 b' class LoginView(BaseAppView):'
114 def load_default_context(self):
114 def load_default_context(self):
115 c = self._get_local_tmpl_context()
115 c = self._get_local_tmpl_context()
116 c.came_from = get_came_from(self.request)
116 c.came_from = get_came_from(self.request)
117
118 return c
117 return c
119
118
120 def _get_captcha_data(self):
119 def _get_captcha_data(self):
@@ -148,9 +147,6 b' class LoginView(BaseAppView):'
148
147
149 return captcha_status, captcha_message
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 def login(self):
150 def login(self):
155 c = self.load_default_context()
151 c = self.load_default_context()
156 auth_user = self._rhodecode_user
152 auth_user = self._rhodecode_user
@@ -175,9 +171,6 b' class LoginView(BaseAppView):'
175
171
176 return self._get_template_context(c)
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 def login_post(self):
174 def login_post(self):
182 c = self.load_default_context()
175 c = self.load_default_context()
183
176
@@ -229,7 +222,6 b' class LoginView(BaseAppView):'
229 return self._get_template_context(c)
222 return self._get_template_context(c)
230
223
231 @CSRFRequired()
224 @CSRFRequired()
232 @view_config(route_name='logout', request_method='POST')
233 def logout(self):
225 def logout(self):
234 auth_user = self._rhodecode_user
226 auth_user = self._rhodecode_user
235 log.info('Deleting session for user: `%s`', auth_user)
227 log.info('Deleting session for user: `%s`', auth_user)
@@ -243,9 +235,6 b' class LoginView(BaseAppView):'
243
235
244 @HasPermissionAnyDecorator(
236 @HasPermissionAnyDecorator(
245 'hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate')
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 def register(self, defaults=None, errors=None):
238 def register(self, defaults=None, errors=None):
250 c = self.load_default_context()
239 c = self.load_default_context()
251 defaults = defaults or {}
240 defaults = defaults or {}
@@ -270,9 +259,6 b' class LoginView(BaseAppView):'
270
259
271 @HasPermissionAnyDecorator(
260 @HasPermissionAnyDecorator(
272 'hg.admin', 'hg.register.auto_activate', 'hg.register.manual_activate')
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 def register_post(self):
262 def register_post(self):
277 from rhodecode.authentication.plugins import auth_rhodecode
263 from rhodecode.authentication.plugins import auth_rhodecode
278
264
@@ -353,9 +339,6 b' class LoginView(BaseAppView):'
353 h.flash(e, category='error')
339 h.flash(e, category='error')
354 return self.register()
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 def password_reset(self):
342 def password_reset(self):
360 c = self.load_default_context()
343 c = self.load_default_context()
361 captcha = self._get_captcha_data()
344 captcha = self._get_captcha_data()
@@ -454,8 +437,6 b' class LoginView(BaseAppView):'
454
437
455 return self._get_template_context(c, **template_context)
438 return self._get_template_context(c, **template_context)
456
439
457 @view_config(route_name='reset_password_confirmation',
458 request_method='GET')
459 def password_reset_confirmation(self):
440 def password_reset_confirmation(self):
460 self.load_default_context()
441 self.load_default_context()
461 if self.request.GET and self.request.GET.get('key'):
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 def includeme(config):
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 config.add_route(
30 config.add_route(
28 name='my_account_profile',
31 name='my_account_profile',
29 pattern=ADMIN_PREFIX + '/my_account/profile')
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 # my account edit details
39 # my account edit details
32 config.add_route(
40 config.add_route(
33 name='my_account_edit',
41 name='my_account_edit',
34 pattern=ADMIN_PREFIX + '/my_account/edit')
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 config.add_route(
50 config.add_route(
36 name='my_account_update',
51 name='my_account_update',
37 pattern=ADMIN_PREFIX + '/my_account/update')
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 # my account password
60 # my account password
40 config.add_route(
61 config.add_route(
41 name='my_account_password',
62 name='my_account_password',
42 pattern=ADMIN_PREFIX + '/my_account/password')
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 config.add_route(
70 config.add_route(
45 name='my_account_password_update',
71 name='my_account_password_update',
46 pattern=ADMIN_PREFIX + '/my_account/password/update')
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 # my account tokens
79 # my account tokens
49 config.add_route(
80 config.add_route(
50 name='my_account_auth_tokens',
81 name='my_account_auth_tokens',
51 pattern=ADMIN_PREFIX + '/my_account/auth_tokens')
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 config.add_route(
89 config.add_route(
53 name='my_account_auth_tokens_view',
90 name='my_account_auth_tokens_view',
54 pattern=ADMIN_PREFIX + '/my_account/auth_tokens/view')
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 config.add_route(
98 config.add_route(
56 name='my_account_auth_tokens_add',
99 name='my_account_auth_tokens_add',
57 pattern=ADMIN_PREFIX + '/my_account/auth_tokens/new')
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 config.add_route(
106 config.add_route(
59 name='my_account_auth_tokens_delete',
107 name='my_account_auth_tokens_delete',
60 pattern=ADMIN_PREFIX + '/my_account/auth_tokens/delete')
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 # my account ssh keys
114 # my account ssh keys
63 config.add_route(
115 config.add_route(
64 name='my_account_ssh_keys',
116 name='my_account_ssh_keys',
65 pattern=ADMIN_PREFIX + '/my_account/ssh_keys')
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 config.add_route(
124 config.add_route(
67 name='my_account_ssh_keys_generate',
125 name='my_account_ssh_keys_generate',
68 pattern=ADMIN_PREFIX + '/my_account/ssh_keys/generate')
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 config.add_route(
133 config.add_route(
70 name='my_account_ssh_keys_add',
134 name='my_account_ssh_keys_add',
71 pattern=ADMIN_PREFIX + '/my_account/ssh_keys/new')
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 config.add_route(
141 config.add_route(
73 name='my_account_ssh_keys_delete',
142 name='my_account_ssh_keys_delete',
74 pattern=ADMIN_PREFIX + '/my_account/ssh_keys/delete')
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 # my account user group membership
149 # my account user group membership
77 config.add_route(
150 config.add_route(
78 name='my_account_user_group_membership',
151 name='my_account_user_group_membership',
79 pattern=ADMIN_PREFIX + '/my_account/user_group_membership')
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 # my account emails
160 # my account emails
82 config.add_route(
161 config.add_route(
83 name='my_account_emails',
162 name='my_account_emails',
84 pattern=ADMIN_PREFIX + '/my_account/emails')
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 config.add_route(
170 config.add_route(
86 name='my_account_emails_add',
171 name='my_account_emails_add',
87 pattern=ADMIN_PREFIX + '/my_account/emails/new')
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 config.add_route(
179 config.add_route(
89 name='my_account_emails_delete',
180 name='my_account_emails_delete',
90 pattern=ADMIN_PREFIX + '/my_account/emails/delete')
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 config.add_route(
187 config.add_route(
93 name='my_account_repos',
188 name='my_account_repos',
94 pattern=ADMIN_PREFIX + '/my_account/repos')
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 config.add_route(
196 config.add_route(
97 name='my_account_watched',
197 name='my_account_watched',
98 pattern=ADMIN_PREFIX + '/my_account/watched')
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 config.add_route(
205 config.add_route(
101 name='my_account_bookmarks',
206 name='my_account_bookmarks',
102 pattern=ADMIN_PREFIX + '/my_account/bookmarks')
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 config.add_route(
214 config.add_route(
105 name='my_account_bookmarks_update',
215 name='my_account_bookmarks_update',
106 pattern=ADMIN_PREFIX + '/my_account/bookmarks/update')
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 config.add_route(
222 config.add_route(
109 name='my_account_goto_bookmark',
223 name='my_account_goto_bookmark',
110 pattern=ADMIN_PREFIX + '/my_account/bookmark/{bookmark_id}')
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 config.add_route(
231 config.add_route(
113 name='my_account_perms',
232 name='my_account_perms',
114 pattern=ADMIN_PREFIX + '/my_account/perms')
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 config.add_route(
240 config.add_route(
117 name='my_account_notifications',
241 name='my_account_notifications',
118 pattern=ADMIN_PREFIX + '/my_account/notifications')
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 config.add_route(
249 config.add_route(
121 name='my_account_notifications_toggle_visibility',
250 name='my_account_notifications_toggle_visibility',
122 pattern=ADMIN_PREFIX + '/my_account/toggle_visibility')
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 # my account pull requests
258 # my account pull requests
125 config.add_route(
259 config.add_route(
126 name='my_account_pullrequests',
260 name='my_account_pullrequests',
127 pattern=ADMIN_PREFIX + '/my_account/pull_requests')
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 config.add_route(
269 config.add_route(
129 name='my_account_pullrequests_data',
270 name='my_account_pullrequests_data',
130 pattern=ADMIN_PREFIX + '/my_account/pull_requests/data')
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 # notifications
288 # notifications
133 config.add_route(
289 config.add_route(
134 name='notifications_show_all',
290 name='notifications_show_all',
135 pattern=ADMIN_PREFIX + '/notifications')
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 # notifications
298 # notifications
138 config.add_route(
299 config.add_route(
139 name='notifications_mark_all_read',
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 config.add_route(
308 config.add_route(
143 name='notifications_show',
309 name='notifications_show',
144 pattern=ADMIN_PREFIX + '/notifications/{notification_id}')
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 config.add_route(
317 config.add_route(
147 name='notifications_update',
318 name='notifications_update',
148 pattern=ADMIN_PREFIX + '/notifications/{notification_id}/update')
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 config.add_route(
326 config.add_route(
151 name='notifications_delete',
327 name='notifications_delete',
152 pattern=ADMIN_PREFIX + '/notifications/{notification_id}/delete')
328 pattern=ADMIN_PREFIX + '/notifications/{notification_id}/delete')
153
329 config.add_view(
154 # channelstream test
330 MyAccountNotificationsView,
155 config.add_route(
331 attr='notification_delete',
156 name='my_account_notifications_test_channelstream',
332 route_name='notifications_delete', request_method='POST',
157 pattern=ADMIN_PREFIX + '/my_account/test_channelstream')
333 renderer='json_ext')
158
159 # Scan module for configuration decorators.
160 config.scan('.views', ignore='.tests')
@@ -40,7 +40,7 b' def route_path(name, params=None, **kwar'
40
40
41 base_url = {
41 base_url = {
42 'notifications_show_all': ADMIN_PREFIX + '/notifications',
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 'notifications_show': ADMIN_PREFIX + '/notifications/{notification_id}',
44 'notifications_show': ADMIN_PREFIX + '/notifications/{notification_id}',
45 'notifications_update': ADMIN_PREFIX + '/notifications/{notification_id}/update',
45 'notifications_update': ADMIN_PREFIX + '/notifications/{notification_id}/update',
46 'notifications_delete': ADMIN_PREFIX + '/notifications/{notification_id}/delete',
46 'notifications_delete': ADMIN_PREFIX + '/notifications/{notification_id}/delete',
@@ -60,6 +60,15 b' class TestNotificationsController(TestCo'
60 Session().delete(inst)
60 Session().delete(inst)
61 Session().commit()
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 def test_show_all(self, user_util):
72 def test_show_all(self, user_util):
64 user = user_util.create_user(password='qweqwe')
73 user = user_util.create_user(password='qweqwe')
65 user_id = user.user_id
74 user_id = user.user_id
@@ -26,7 +26,6 b' import formencode'
26 import formencode.htmlfill
26 import formencode.htmlfill
27 import peppercorn
27 import peppercorn
28 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
28 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
29 from pyramid.view import view_config
30
29
31 from rhodecode.apps._base import BaseAppView, DataGridAppView
30 from rhodecode.apps._base import BaseAppView, DataGridAppView
32 from rhodecode import forms
31 from rhodecode import forms
@@ -65,14 +64,10 b' class MyAccountView(BaseAppView, DataGri'
65 c = self._get_local_tmpl_context()
64 c = self._get_local_tmpl_context()
66 c.user = c.auth_user.get_instance()
65 c.user = c.auth_user.get_instance()
67 c.allow_scoped_tokens = self.ALLOW_SCOPED_TOKENS
66 c.allow_scoped_tokens = self.ALLOW_SCOPED_TOKENS
68
69 return c
67 return c
70
68
71 @LoginRequired()
69 @LoginRequired()
72 @NotAnonymous()
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 def my_account_profile(self):
71 def my_account_profile(self):
77 c = self.load_default_context()
72 c = self.load_default_context()
78 c.active = 'profile'
73 c.active = 'profile'
@@ -81,9 +76,75 b' class MyAccountView(BaseAppView, DataGri'
81
76
82 @LoginRequired()
77 @LoginRequired()
83 @NotAnonymous()
78 @NotAnonymous()
84 @view_config(
79 def my_account_edit(self):
85 route_name='my_account_password', request_method='GET',
80 c = self.load_default_context()
86 renderer='rhodecode:templates/admin/my_account/my_account.mako')
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 def my_account_password(self):
148 def my_account_password(self):
88 c = self.load_default_context()
149 c = self.load_default_context()
89 c.active = 'password'
150 c.active = 'password'
@@ -103,9 +164,6 b' class MyAccountView(BaseAppView, DataGri'
103 @LoginRequired()
164 @LoginRequired()
104 @NotAnonymous()
165 @NotAnonymous()
105 @CSRFRequired()
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 def my_account_password_update(self):
167 def my_account_password_update(self):
110 _ = self.request.translate
168 _ = self.request.translate
111 c = self.load_default_context()
169 c = self.load_default_context()
@@ -146,9 +204,6 b' class MyAccountView(BaseAppView, DataGri'
146
204
147 @LoginRequired()
205 @LoginRequired()
148 @NotAnonymous()
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 def my_account_auth_tokens(self):
207 def my_account_auth_tokens(self):
153 _ = self.request.translate
208 _ = self.request.translate
154
209
@@ -167,9 +222,6 b' class MyAccountView(BaseAppView, DataGri'
167 @LoginRequired()
222 @LoginRequired()
168 @NotAnonymous()
223 @NotAnonymous()
169 @CSRFRequired()
224 @CSRFRequired()
170 @view_config(
171 route_name='my_account_auth_tokens_view', request_method='POST', xhr=True,
172 renderer='json_ext')
173 def my_account_auth_tokens_view(self):
225 def my_account_auth_tokens_view(self):
174 _ = self.request.translate
226 _ = self.request.translate
175 c = self.load_default_context()
227 c = self.load_default_context()
@@ -192,8 +244,6 b' class MyAccountView(BaseAppView, DataGri'
192 @LoginRequired()
244 @LoginRequired()
193 @NotAnonymous()
245 @NotAnonymous()
194 @CSRFRequired()
246 @CSRFRequired()
195 @view_config(
196 route_name='my_account_auth_tokens_add', request_method='POST',)
197 def my_account_auth_tokens_add(self):
247 def my_account_auth_tokens_add(self):
198 _ = self.request.translate
248 _ = self.request.translate
199 c = self.load_default_context()
249 c = self.load_default_context()
@@ -220,8 +270,6 b' class MyAccountView(BaseAppView, DataGri'
220 @LoginRequired()
270 @LoginRequired()
221 @NotAnonymous()
271 @NotAnonymous()
222 @CSRFRequired()
272 @CSRFRequired()
223 @view_config(
224 route_name='my_account_auth_tokens_delete', request_method='POST')
225 def my_account_auth_tokens_delete(self):
273 def my_account_auth_tokens_delete(self):
226 _ = self.request.translate
274 _ = self.request.translate
227 c = self.load_default_context()
275 c = self.load_default_context()
@@ -244,9 +292,6 b' class MyAccountView(BaseAppView, DataGri'
244
292
245 @LoginRequired()
293 @LoginRequired()
246 @NotAnonymous()
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 def my_account_emails(self):
295 def my_account_emails(self):
251 _ = self.request.translate
296 _ = self.request.translate
252
297
@@ -269,9 +314,6 b' class MyAccountView(BaseAppView, DataGri'
269 @LoginRequired()
314 @LoginRequired()
270 @NotAnonymous()
315 @NotAnonymous()
271 @CSRFRequired()
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 def my_account_emails_add(self):
317 def my_account_emails_add(self):
276 _ = self.request.translate
318 _ = self.request.translate
277 c = self.load_default_context()
319 c = self.load_default_context()
@@ -312,8 +354,6 b' class MyAccountView(BaseAppView, DataGri'
312 @LoginRequired()
354 @LoginRequired()
313 @NotAnonymous()
355 @NotAnonymous()
314 @CSRFRequired()
356 @CSRFRequired()
315 @view_config(
316 route_name='my_account_emails_delete', request_method='POST')
317 def my_account_emails_delete(self):
357 def my_account_emails_delete(self):
318 _ = self.request.translate
358 _ = self.request.translate
319 c = self.load_default_context()
359 c = self.load_default_context()
@@ -334,9 +374,6 b' class MyAccountView(BaseAppView, DataGri'
334 @LoginRequired()
374 @LoginRequired()
335 @NotAnonymous()
375 @NotAnonymous()
336 @CSRFRequired()
376 @CSRFRequired()
337 @view_config(
338 route_name='my_account_notifications_test_channelstream',
339 request_method='POST', renderer='json_ext')
340 def my_account_notifications_test_channelstream(self):
377 def my_account_notifications_test_channelstream(self):
341 message = 'Test message sent via Channelstream by user: {}, on {}'.format(
378 message = 'Test message sent via Channelstream by user: {}, on {}'.format(
342 self._rhodecode_user.username, datetime.datetime.now())
379 self._rhodecode_user.username, datetime.datetime.now())
@@ -424,9 +461,6 b' class MyAccountView(BaseAppView, DataGri'
424
461
425 @LoginRequired()
462 @LoginRequired()
426 @NotAnonymous()
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 def my_account_repos(self):
464 def my_account_repos(self):
431 c = self.load_default_context()
465 c = self.load_default_context()
432 c.active = 'repos'
466 c.active = 'repos'
@@ -437,9 +471,6 b' class MyAccountView(BaseAppView, DataGri'
437
471
438 @LoginRequired()
472 @LoginRequired()
439 @NotAnonymous()
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 def my_account_watched(self):
474 def my_account_watched(self):
444 c = self.load_default_context()
475 c = self.load_default_context()
445 c.active = 'watched'
476 c.active = 'watched'
@@ -450,9 +481,6 b' class MyAccountView(BaseAppView, DataGri'
450
481
451 @LoginRequired()
482 @LoginRequired()
452 @NotAnonymous()
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 def my_account_bookmarks(self):
484 def my_account_bookmarks(self):
457 c = self.load_default_context()
485 c = self.load_default_context()
458 c.active = 'bookmarks'
486 c.active = 'bookmarks'
@@ -519,8 +547,6 b' class MyAccountView(BaseAppView, DataGri'
519 @LoginRequired()
547 @LoginRequired()
520 @NotAnonymous()
548 @NotAnonymous()
521 @CSRFRequired()
549 @CSRFRequired()
522 @view_config(
523 route_name='my_account_bookmarks_update', request_method='POST')
524 def my_account_bookmarks_update(self):
550 def my_account_bookmarks_update(self):
525 _ = self.request.translate
551 _ = self.request.translate
526 c = self.load_default_context()
552 c = self.load_default_context()
@@ -559,9 +585,6 b' class MyAccountView(BaseAppView, DataGri'
559
585
560 @LoginRequired()
586 @LoginRequired()
561 @NotAnonymous()
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 def my_account_goto_bookmark(self):
588 def my_account_goto_bookmark(self):
566
589
567 bookmark_id = self.request.matchdict['bookmark_id']
590 bookmark_id = self.request.matchdict['bookmark_id']
@@ -606,9 +629,6 b' class MyAccountView(BaseAppView, DataGri'
606
629
607 @LoginRequired()
630 @LoginRequired()
608 @NotAnonymous()
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 def my_account_perms(self):
632 def my_account_perms(self):
613 c = self.load_default_context()
633 c = self.load_default_context()
614 c.active = 'perms'
634 c.active = 'perms'
@@ -618,9 +638,6 b' class MyAccountView(BaseAppView, DataGri'
618
638
619 @LoginRequired()
639 @LoginRequired()
620 @NotAnonymous()
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 def my_notifications(self):
641 def my_notifications(self):
625 c = self.load_default_context()
642 c = self.load_default_context()
626 c.active = 'notifications'
643 c.active = 'notifications'
@@ -630,9 +647,6 b' class MyAccountView(BaseAppView, DataGri'
630 @LoginRequired()
647 @LoginRequired()
631 @NotAnonymous()
648 @NotAnonymous()
632 @CSRFRequired()
649 @CSRFRequired()
633 @view_config(
634 route_name='my_account_notifications_toggle_visibility',
635 request_method='POST', renderer='json_ext')
636 def my_notifications_toggle_visibility(self):
650 def my_notifications_toggle_visibility(self):
637 user = self._rhodecode_db_user
651 user = self._rhodecode_db_user
638 new_status = not user.user_data.get('notification_status', True)
652 new_status = not user.user_data.get('notification_status', True)
@@ -640,83 +654,6 b' class MyAccountView(BaseAppView, DataGri'
640 Session().commit()
654 Session().commit()
641 return user.user_data['notification_status']
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 def _get_pull_requests_list(self, statuses):
657 def _get_pull_requests_list(self, statuses):
721 draw, start, limit = self._extract_chunk(self.request)
658 draw, start, limit = self._extract_chunk(self.request)
722 search_q, order_by, order_dir = self._extract_ordering(self.request)
659 search_q, order_by, order_dir = self._extract_ordering(self.request)
@@ -781,10 +718,6 b' class MyAccountView(BaseAppView, DataGri'
781
718
782 @LoginRequired()
719 @LoginRequired()
783 @NotAnonymous()
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 def my_account_pullrequests(self):
721 def my_account_pullrequests(self):
789 c = self.load_default_context()
722 c = self.load_default_context()
790 c.active = 'pullrequests'
723 c.active = 'pullrequests'
@@ -796,9 +729,6 b' class MyAccountView(BaseAppView, DataGri'
796
729
797 @LoginRequired()
730 @LoginRequired()
798 @NotAnonymous()
731 @NotAnonymous()
799 @view_config(
800 route_name='my_account_pullrequests_data',
801 request_method='GET', renderer='json_ext')
802 def my_account_pullrequests_data(self):
732 def my_account_pullrequests_data(self):
803 self.load_default_context()
733 self.load_default_context()
804 req_get = self.request.GET
734 req_get = self.request.GET
@@ -813,10 +743,6 b' class MyAccountView(BaseAppView, DataGri'
813
743
814 @LoginRequired()
744 @LoginRequired()
815 @NotAnonymous()
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 def my_account_user_group_membership(self):
746 def my_account_user_group_membership(self):
821 c = self.load_default_context()
747 c = self.load_default_context()
822 c.active = 'user_group_membership'
748 c.active = 'user_group_membership'
@@ -22,7 +22,6 b' import logging'
22
22
23 from pyramid.httpexceptions import (
23 from pyramid.httpexceptions import (
24 HTTPFound, HTTPNotFound, HTTPInternalServerError)
24 HTTPFound, HTTPNotFound, HTTPInternalServerError)
25 from pyramid.view import view_config
26
25
27 from rhodecode.apps._base import BaseAppView
26 from rhodecode.apps._base import BaseAppView
28 from rhodecode.lib.auth import LoginRequired, NotAnonymous, CSRFRequired
27 from rhodecode.lib.auth import LoginRequired, NotAnonymous, CSRFRequired
@@ -57,9 +56,6 b' class MyAccountNotificationsView(BaseApp'
57
56
58 @LoginRequired()
57 @LoginRequired()
59 @NotAnonymous()
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 def notifications_show_all(self):
59 def notifications_show_all(self):
64 c = self.load_default_context()
60 c = self.load_default_context()
65
61
@@ -105,22 +101,6 b' class MyAccountNotificationsView(BaseApp'
105
101
106 @LoginRequired()
102 @LoginRequired()
107 @NotAnonymous()
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 def notifications_show(self):
104 def notifications_show(self):
125 c = self.load_default_context()
105 c = self.load_default_context()
126 notification_id = self.request.matchdict['notification_id']
106 notification_id = self.request.matchdict['notification_id']
@@ -150,9 +130,16 b' class MyAccountNotificationsView(BaseApp'
150 @LoginRequired()
130 @LoginRequired()
151 @NotAnonymous()
131 @NotAnonymous()
152 @CSRFRequired()
132 @CSRFRequired()
153 @view_config(
133 def notifications_mark_all_read(self):
154 route_name='notifications_update', request_method='POST',
134 NotificationModel().mark_all_read_for_user(
155 renderer='json_ext')
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 def notification_update(self):
143 def notification_update(self):
157 notification_id = self.request.matchdict['notification_id']
144 notification_id = self.request.matchdict['notification_id']
158 notification = Notification.get_or_404(notification_id)
145 notification = Notification.get_or_404(notification_id)
@@ -177,9 +164,6 b' class MyAccountNotificationsView(BaseApp'
177 @LoginRequired()
164 @LoginRequired()
178 @NotAnonymous()
165 @NotAnonymous()
179 @CSRFRequired()
166 @CSRFRequired()
180 @view_config(
181 route_name='notifications_delete', request_method='POST',
182 renderer='json_ext')
183 def notification_delete(self):
167 def notification_delete(self):
184 notification_id = self.request.matchdict['notification_id']
168 notification_id = self.request.matchdict['notification_id']
185 notification = Notification.get_or_404(notification_id)
169 notification = Notification.get_or_404(notification_id)
@@ -21,7 +21,6 b''
21 import logging
21 import logging
22
22
23 from pyramid.httpexceptions import HTTPFound
23 from pyramid.httpexceptions import HTTPFound
24 from pyramid.view import view_config
25
24
26 from rhodecode.apps._base import BaseAppView, DataGridAppView
25 from rhodecode.apps._base import BaseAppView, DataGridAppView
27 from rhodecode.apps.ssh_support import SshKeyFileChangeEvent
26 from rhodecode.apps.ssh_support import SshKeyFileChangeEvent
@@ -41,17 +40,12 b' class MyAccountSshKeysView(BaseAppView, '
41 def load_default_context(self):
40 def load_default_context(self):
42 c = self._get_local_tmpl_context()
41 c = self._get_local_tmpl_context()
43 c.user = c.auth_user.get_instance()
42 c.user = c.auth_user.get_instance()
44
45 c.ssh_enabled = self.request.registry.settings.get(
43 c.ssh_enabled = self.request.registry.settings.get(
46 'ssh.generate_authorized_keyfile')
44 'ssh.generate_authorized_keyfile')
47
48 return c
45 return c
49
46
50 @LoginRequired()
47 @LoginRequired()
51 @NotAnonymous()
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 def my_account_ssh_keys(self):
49 def my_account_ssh_keys(self):
56 _ = self.request.translate
50 _ = self.request.translate
57
51
@@ -63,9 +57,6 b' class MyAccountSshKeysView(BaseAppView, '
63
57
64 @LoginRequired()
58 @LoginRequired()
65 @NotAnonymous()
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 def ssh_keys_generate_keypair(self):
60 def ssh_keys_generate_keypair(self):
70 _ = self.request.translate
61 _ = self.request.translate
71 c = self.load_default_context()
62 c = self.load_default_context()
@@ -84,8 +75,6 b' class MyAccountSshKeysView(BaseAppView, '
84 @LoginRequired()
75 @LoginRequired()
85 @NotAnonymous()
76 @NotAnonymous()
86 @CSRFRequired()
77 @CSRFRequired()
87 @view_config(
88 route_name='my_account_ssh_keys_add', request_method='POST',)
89 def my_account_ssh_keys_add(self):
78 def my_account_ssh_keys_add(self):
90 _ = self.request.translate
79 _ = self.request.translate
91 c = self.load_default_context()
80 c = self.load_default_context()
@@ -132,8 +121,6 b' class MyAccountSshKeysView(BaseAppView, '
132 @LoginRequired()
121 @LoginRequired()
133 @NotAnonymous()
122 @NotAnonymous()
134 @CSRFRequired()
123 @CSRFRequired()
135 @view_config(
136 route_name='my_account_ssh_keys_delete', request_method='POST')
137 def my_account_ssh_keys_delete(self):
124 def my_account_ssh_keys_delete(self):
138 _ = self.request.translate
125 _ = self.request.translate
139 c = self.load_default_context()
126 c = self.load_default_context()
@@ -22,25 +22,35 b' from rhodecode.apps._base import ADMIN_P'
22
22
23
23
24 def admin_routes(config):
24 def admin_routes(config):
25 from rhodecode.apps.ops.views import OpsView
26
25 config.add_route(
27 config.add_route(
26 name='ops_ping',
28 name='ops_ping',
27 pattern='/ping')
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 config.add_route(
36 config.add_route(
29 name='ops_error_test',
37 name='ops_error_test',
30 pattern='/error')
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 config.add_route(
45 config.add_route(
32 name='ops_redirect_test',
46 name='ops_redirect_test',
33 pattern='/redirect')
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 def includeme(config):
55 def includeme(config):
37
38 config.include(admin_routes, route_prefix=ADMIN_PREFIX + '/ops')
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 import time
21 import time
22 import logging
22 import logging
23
23
24 from pyramid.view import view_config
24
25 from pyramid.httpexceptions import HTTPFound
25 from pyramid.httpexceptions import HTTPFound
26
26
27 from rhodecode.apps._base import BaseAppView
27 from rhodecode.apps._base import BaseAppView
@@ -38,12 +38,6 b' class OpsView(BaseAppView):'
38
38
39 return c
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 def ops_ping(self):
41 def ops_ping(self):
48 data = {
42 data = {
49 'instance': self.request.registry.settings.get('instance_id'),
43 'instance': self.request.registry.settings.get('instance_id'),
@@ -59,12 +53,6 b' class OpsView(BaseAppView):'
59 })
53 })
60 return {'ok': data}
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 def ops_error_test(self):
56 def ops_error_test(self):
69 """
57 """
70 Test exception handling and emails on errors
58 Test exception handling and emails on errors
@@ -78,9 +66,6 b' class OpsView(BaseAppView):'
78 'Client:{}. Generation time: {}.'.format(self.request.user, time.time()))
66 'Client:{}. Generation time: {}.'.format(self.request.user, time.time()))
79 raise TestException(msg)
67 raise TestException(msg)
80
68
81 @view_config(
82 route_name='ops_redirect_test', request_method='GET',
83 renderer='json_ext')
84 def ops_redirect_test(self):
69 def ops_redirect_test(self):
85 """
70 """
86 Test redirect handling
71 Test redirect handling
@@ -18,6 +18,10 b''
18 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 from rhodecode.apps._base import add_route_with_slash
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 def includeme(config):
27 def includeme(config):
@@ -27,35 +31,72 b' def includeme(config):'
27 name='edit_repo_group',
31 name='edit_repo_group',
28 pattern='/{repo_group_name:.*?[^/]}/_edit',
32 pattern='/{repo_group_name:.*?[^/]}/_edit',
29 repo_group_route=True)
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 # Settings advanced
45 # Settings advanced
33 config.add_route(
46 config.add_route(
34 name='edit_repo_group_advanced',
47 name='edit_repo_group_advanced',
35 pattern='/{repo_group_name:.*?[^/]}/_settings/advanced',
48 pattern='/{repo_group_name:.*?[^/]}/_settings/advanced',
36 repo_group_route=True)
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 config.add_route(
56 config.add_route(
39 name='edit_repo_group_advanced_delete',
57 name='edit_repo_group_advanced_delete',
40 pattern='/{repo_group_name:.*?[^/]}/_settings/advanced/delete',
58 pattern='/{repo_group_name:.*?[^/]}/_settings/advanced/delete',
41 repo_group_route=True)
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 # settings permissions
66 # settings permissions
44 config.add_route(
67 config.add_route(
45 name='edit_repo_group_perms',
68 name='edit_repo_group_perms',
46 pattern='/{repo_group_name:.*?[^/]}/_settings/permissions',
69 pattern='/{repo_group_name:.*?[^/]}/_settings/permissions',
47 repo_group_route=True)
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 config.add_route(
77 config.add_route(
50 name='edit_repo_group_perms_update',
78 name='edit_repo_group_perms_update',
51 pattern='/{repo_group_name:.*?[^/]}/_settings/permissions/update',
79 pattern='/{repo_group_name:.*?[^/]}/_settings/permissions/update',
52 repo_group_route=True)
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 # Summary, NOTE(marcink): needs to be at the end for catch-all
87 # Summary, NOTE(marcink): needs to be at the end for catch-all
55 add_route_with_slash(
88 add_route_with_slash(
56 config,
89 config,
57 name='repo_group_home',
90 name='repo_group_home',
58 pattern='/{repo_group_name:.*?[^/]}', repo_group_route=True)
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 import logging
21 import logging
22
22
23 from pyramid.view import view_config
23
24 from pyramid.httpexceptions import HTTPFound
24 from pyramid.httpexceptions import HTTPFound
25
25
26 from rhodecode.apps._base import RepoGroupAppView
26 from rhodecode.apps._base import RepoGroupAppView
@@ -34,17 +34,13 b' from rhodecode.model.meta import Session'
34 log = logging.getLogger(__name__)
34 log = logging.getLogger(__name__)
35
35
36
36
37 class RepoGroupSettingsView(RepoGroupAppView):
37 class RepoGroupAdvancedSettingsView(RepoGroupAppView):
38 def load_default_context(self):
38 def load_default_context(self):
39 c = self._get_local_tmpl_context()
39 c = self._get_local_tmpl_context()
40
41 return c
40 return c
42
41
43 @LoginRequired()
42 @LoginRequired()
44 @HasRepoGroupPermissionAnyDecorator('group.admin')
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 def edit_repo_group_advanced(self):
44 def edit_repo_group_advanced(self):
49 _ = self.request.translate
45 _ = self.request.translate
50 c = self.load_default_context()
46 c = self.load_default_context()
@@ -61,9 +57,6 b' class RepoGroupSettingsView(RepoGroupApp'
61 @LoginRequired()
57 @LoginRequired()
62 @HasRepoGroupPermissionAnyDecorator('group.admin')
58 @HasRepoGroupPermissionAnyDecorator('group.admin')
63 @CSRFRequired()
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 def edit_repo_group_delete(self):
60 def edit_repo_group_delete(self):
68 _ = self.request.translate
61 _ = self.request.translate
69 _ungettext = self.request.plularize
62 _ungettext = self.request.plularize
@@ -20,7 +20,7 b''
20
20
21 import logging
21 import logging
22
22
23 from pyramid.view import view_config
23
24 from pyramid.httpexceptions import HTTPFound
24 from pyramid.httpexceptions import HTTPFound
25
25
26 from rhodecode.apps._base import RepoGroupAppView
26 from rhodecode.apps._base import RepoGroupAppView
@@ -45,9 +45,6 b' class RepoGroupPermissionsView(RepoGroup'
45
45
46 @LoginRequired()
46 @LoginRequired()
47 @HasRepoGroupPermissionAnyDecorator('group.admin')
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 def edit_repo_group_permissions(self):
48 def edit_repo_group_permissions(self):
52 c = self.load_default_context()
49 c = self.load_default_context()
53 c.active = 'permissions'
50 c.active = 'permissions'
@@ -57,9 +54,6 b' class RepoGroupPermissionsView(RepoGroup'
57 @LoginRequired()
54 @LoginRequired()
58 @HasRepoGroupPermissionAnyDecorator('group.admin')
55 @HasRepoGroupPermissionAnyDecorator('group.admin')
59 @CSRFRequired()
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 def edit_repo_groups_permissions_update(self):
57 def edit_repo_groups_permissions_update(self):
64 _ = self.request.translate
58 _ = self.request.translate
65 c = self.load_default_context()
59 c = self.load_default_context()
@@ -21,7 +21,7 b''
21 import logging
21 import logging
22 import deform
22 import deform
23
23
24 from pyramid.view import view_config
24
25 from pyramid.httpexceptions import HTTPFound
25 from pyramid.httpexceptions import HTTPFound
26
26
27 from rhodecode import events
27 from rhodecode import events
@@ -109,9 +109,6 b' class RepoGroupSettingsView(RepoGroupApp'
109
109
110 @LoginRequired()
110 @LoginRequired()
111 @HasRepoGroupPermissionAnyDecorator('group.admin')
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 def edit_settings(self):
112 def edit_settings(self):
116 c = self.load_default_context()
113 c = self.load_default_context()
117 c.active = 'settings'
114 c.active = 'settings'
@@ -126,9 +123,6 b' class RepoGroupSettingsView(RepoGroupApp'
126 @LoginRequired()
123 @LoginRequired()
127 @HasRepoGroupPermissionAnyDecorator('group.admin')
124 @HasRepoGroupPermissionAnyDecorator('group.admin')
128 @CSRFRequired()
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 def edit_settings_update(self):
126 def edit_settings_update(self):
133 _ = self.request.translate
127 _ = self.request.translate
134 c = self.load_default_context()
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 def includeme(config):
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 # repo creating checks, special cases that aren't repo routes
52 # repo creating checks, special cases that aren't repo routes
26 config.add_route(
53 config.add_route(
27 name='repo_creating',
54 name='repo_creating',
28 pattern='/{repo_name:.*?[^/]}/repo_creating')
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 config.add_route(
62 config.add_route(
31 name='repo_creating_check',
63 name='repo_creating_check',
32 pattern='/{repo_name:.*?[^/]}/repo_creating_check')
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 # Summary
71 # Summary
35 # NOTE(marcink): one additional route is defined in very bottom, catch
72 # NOTE(marcink): one additional route is defined in very bottom, catch
@@ -37,191 +74,467 b' def includeme(config):'
37 config.add_route(
74 config.add_route(
38 name='repo_summary_explicit',
75 name='repo_summary_explicit',
39 pattern='/{repo_name:.*?[^/]}/summary', repo_route=True)
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 config.add_route(
83 config.add_route(
41 name='repo_summary_commits',
84 name='repo_summary_commits',
42 pattern='/{repo_name:.*?[^/]}/summary-commits', repo_route=True)
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 # Commits
92 # Commits
45 config.add_route(
93 config.add_route(
46 name='repo_commit',
94 name='repo_commit',
47 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}', repo_route=True)
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 config.add_route(
102 config.add_route(
50 name='repo_commit_children',
103 name='repo_commit_children',
51 pattern='/{repo_name:.*?[^/]}/changeset_children/{commit_id}', repo_route=True)
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 config.add_route(
111 config.add_route(
54 name='repo_commit_parents',
112 name='repo_commit_parents',
55 pattern='/{repo_name:.*?[^/]}/changeset_parents/{commit_id}', repo_route=True)
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 config.add_route(
120 config.add_route(
58 name='repo_commit_raw',
121 name='repo_commit_raw',
59 pattern='/{repo_name:.*?[^/]}/changeset-diff/{commit_id}', repo_route=True)
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 config.add_route(
129 config.add_route(
62 name='repo_commit_patch',
130 name='repo_commit_patch',
63 pattern='/{repo_name:.*?[^/]}/changeset-patch/{commit_id}', repo_route=True)
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 config.add_route(
138 config.add_route(
66 name='repo_commit_download',
139 name='repo_commit_download',
67 pattern='/{repo_name:.*?[^/]}/changeset-download/{commit_id}', repo_route=True)
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 config.add_route(
147 config.add_route(
70 name='repo_commit_data',
148 name='repo_commit_data',
71 pattern='/{repo_name:.*?[^/]}/changeset-data/{commit_id}', repo_route=True)
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 config.add_route(
156 config.add_route(
74 name='repo_commit_comment_create',
157 name='repo_commit_comment_create',
75 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}/comment/create', repo_route=True)
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 config.add_route(
165 config.add_route(
78 name='repo_commit_comment_preview',
166 name='repo_commit_comment_preview',
79 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}/comment/preview', repo_route=True)
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 config.add_route(
174 config.add_route(
82 name='repo_commit_comment_history_view',
175 name='repo_commit_comment_history_view',
83 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}/comment/{comment_history_id}/history_view', repo_route=True)
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 config.add_route(
183 config.add_route(
86 name='repo_commit_comment_attachment_upload',
184 name='repo_commit_comment_attachment_upload',
87 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}/comment/attachment_upload', repo_route=True)
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 config.add_route(
192 config.add_route(
90 name='repo_commit_comment_delete',
193 name='repo_commit_comment_delete',
91 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}/comment/{comment_id}/delete', repo_route=True)
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 config.add_route(
201 config.add_route(
94 name='repo_commit_comment_edit',
202 name='repo_commit_comment_edit',
95 pattern='/{repo_name:.*?[^/]}/changeset/{commit_id}/comment/{comment_id}/edit', repo_route=True)
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 # still working url for backward compat.
210 # still working url for backward compat.
98 config.add_route(
211 config.add_route(
99 name='repo_commit_raw_deprecated',
212 name='repo_commit_raw_deprecated',
100 pattern='/{repo_name:.*?[^/]}/raw-changeset/{commit_id}', repo_route=True)
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 # Files
220 # Files
103 config.add_route(
221 config.add_route(
104 name='repo_archivefile',
222 name='repo_archivefile',
105 pattern='/{repo_name:.*?[^/]}/archive/{fname:.*}', repo_route=True)
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 config.add_route(
230 config.add_route(
108 name='repo_files_diff',
231 name='repo_files_diff',
109 pattern='/{repo_name:.*?[^/]}/diff/{f_path:.*}', repo_route=True)
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 config.add_route( # legacy route to make old links work
239 config.add_route( # legacy route to make old links work
111 name='repo_files_diff_2way_redirect',
240 name='repo_files_diff_2way_redirect',
112 pattern='/{repo_name:.*?[^/]}/diff-2way/{f_path:.*}', repo_route=True)
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 config.add_route(
248 config.add_route(
115 name='repo_files',
249 name='repo_files',
116 pattern='/{repo_name:.*?[^/]}/files/{commit_id}/{f_path:.*}', repo_route=True)
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 config.add_route(
257 config.add_route(
118 name='repo_files:default_path',
258 name='repo_files:default_path',
119 pattern='/{repo_name:.*?[^/]}/files/{commit_id}/', repo_route=True)
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 config.add_route(
266 config.add_route(
121 name='repo_files:default_commit',
267 name='repo_files:default_commit',
122 pattern='/{repo_name:.*?[^/]}/files', repo_route=True)
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 config.add_route(
275 config.add_route(
125 name='repo_files:rendered',
276 name='repo_files:rendered',
126 pattern='/{repo_name:.*?[^/]}/render/{commit_id}/{f_path:.*}', repo_route=True)
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 config.add_route(
284 config.add_route(
129 name='repo_files:annotated',
285 name='repo_files:annotated',
130 pattern='/{repo_name:.*?[^/]}/annotate/{commit_id}/{f_path:.*}', repo_route=True)
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 config.add_route(
293 config.add_route(
132 name='repo_files:annotated_previous',
294 name='repo_files:annotated_previous',
133 pattern='/{repo_name:.*?[^/]}/annotate-previous/{commit_id}/{f_path:.*}', repo_route=True)
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 config.add_route(
302 config.add_route(
136 name='repo_nodetree_full',
303 name='repo_nodetree_full',
137 pattern='/{repo_name:.*?[^/]}/nodetree_full/{commit_id}/{f_path:.*}', repo_route=True)
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 config.add_route(
311 config.add_route(
139 name='repo_nodetree_full:default_path',
312 name='repo_nodetree_full:default_path',
140 pattern='/{repo_name:.*?[^/]}/nodetree_full/{commit_id}/', repo_route=True)
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 config.add_route(
320 config.add_route(
143 name='repo_files_nodelist',
321 name='repo_files_nodelist',
144 pattern='/{repo_name:.*?[^/]}/nodelist/{commit_id}/{f_path:.*}', repo_route=True)
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 config.add_route(
329 config.add_route(
147 name='repo_file_raw',
330 name='repo_file_raw',
148 pattern='/{repo_name:.*?[^/]}/raw/{commit_id}/{f_path:.*}', repo_route=True)
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 config.add_route(
338 config.add_route(
151 name='repo_file_download',
339 name='repo_file_download',
152 pattern='/{repo_name:.*?[^/]}/download/{commit_id}/{f_path:.*}', repo_route=True)
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 config.add_route( # backward compat to keep old links working
347 config.add_route( # backward compat to keep old links working
154 name='repo_file_download:legacy',
348 name='repo_file_download:legacy',
155 pattern='/{repo_name:.*?[^/]}/rawfile/{commit_id}/{f_path:.*}',
349 pattern='/{repo_name:.*?[^/]}/rawfile/{commit_id}/{f_path:.*}',
156 repo_route=True)
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 config.add_route(
357 config.add_route(
159 name='repo_file_history',
358 name='repo_file_history',
160 pattern='/{repo_name:.*?[^/]}/history/{commit_id}/{f_path:.*}', repo_route=True)
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 config.add_route(
366 config.add_route(
163 name='repo_file_authors',
367 name='repo_file_authors',
164 pattern='/{repo_name:.*?[^/]}/authors/{commit_id}/{f_path:.*}', repo_route=True)
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 config.add_route(
375 config.add_route(
167 name='repo_files_check_head',
376 name='repo_files_check_head',
168 pattern='/{repo_name:.*?[^/]}/check_head/{commit_id}/{f_path:.*}',
377 pattern='/{repo_name:.*?[^/]}/check_head/{commit_id}/{f_path:.*}',
169 repo_route=True)
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 config.add_route(
385 config.add_route(
171 name='repo_files_remove_file',
386 name='repo_files_remove_file',
172 pattern='/{repo_name:.*?[^/]}/remove_file/{commit_id}/{f_path:.*}',
387 pattern='/{repo_name:.*?[^/]}/remove_file/{commit_id}/{f_path:.*}',
173 repo_route=True)
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 config.add_route(
395 config.add_route(
175 name='repo_files_delete_file',
396 name='repo_files_delete_file',
176 pattern='/{repo_name:.*?[^/]}/delete_file/{commit_id}/{f_path:.*}',
397 pattern='/{repo_name:.*?[^/]}/delete_file/{commit_id}/{f_path:.*}',
177 repo_route=True)
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 config.add_route(
405 config.add_route(
179 name='repo_files_edit_file',
406 name='repo_files_edit_file',
180 pattern='/{repo_name:.*?[^/]}/edit_file/{commit_id}/{f_path:.*}',
407 pattern='/{repo_name:.*?[^/]}/edit_file/{commit_id}/{f_path:.*}',
181 repo_route=True)
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 config.add_route(
415 config.add_route(
183 name='repo_files_update_file',
416 name='repo_files_update_file',
184 pattern='/{repo_name:.*?[^/]}/update_file/{commit_id}/{f_path:.*}',
417 pattern='/{repo_name:.*?[^/]}/update_file/{commit_id}/{f_path:.*}',
185 repo_route=True)
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 config.add_route(
425 config.add_route(
187 name='repo_files_add_file',
426 name='repo_files_add_file',
188 pattern='/{repo_name:.*?[^/]}/add_file/{commit_id}/{f_path:.*}',
427 pattern='/{repo_name:.*?[^/]}/add_file/{commit_id}/{f_path:.*}',
189 repo_route=True)
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 config.add_route(
435 config.add_route(
191 name='repo_files_upload_file',
436 name='repo_files_upload_file',
192 pattern='/{repo_name:.*?[^/]}/upload_file/{commit_id}/{f_path:.*}',
437 pattern='/{repo_name:.*?[^/]}/upload_file/{commit_id}/{f_path:.*}',
193 repo_route=True)
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 config.add_route(
450 config.add_route(
195 name='repo_files_create_file',
451 name='repo_files_create_file',
196 pattern='/{repo_name:.*?[^/]}/create_file/{commit_id}/{f_path:.*}',
452 pattern='/{repo_name:.*?[^/]}/create_file/{commit_id}/{f_path:.*}',
197 repo_route=True)
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 # Refs data
460 # Refs data
200 config.add_route(
461 config.add_route(
201 name='repo_refs_data',
462 name='repo_refs_data',
202 pattern='/{repo_name:.*?[^/]}/refs-data', repo_route=True)
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 config.add_route(
470 config.add_route(
205 name='repo_refs_changelog_data',
471 name='repo_refs_changelog_data',
206 pattern='/{repo_name:.*?[^/]}/refs-data-changelog', repo_route=True)
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 config.add_route(
479 config.add_route(
209 name='repo_stats',
480 name='repo_stats',
210 pattern='/{repo_name:.*?[^/]}/repo_stats/{commit_id}', repo_route=True)
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 # Commits
488 # Commits
213 config.add_route(
489 config.add_route(
214 name='repo_commits',
490 name='repo_commits',
215 pattern='/{repo_name:.*?[^/]}/commits', repo_route=True)
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 config.add_route(
524 config.add_route(
217 name='repo_commits_file',
525 name='repo_commits_file',
218 pattern='/{repo_name:.*?[^/]}/commits/{commit_id}/{f_path:.*}', repo_route=True)
526 pattern='/{repo_name:.*?[^/]}/commits/{commit_id}/{f_path:.*}', repo_route=True)
219 config.add_route(
527 config.add_view(
220 name='repo_commits_elements',
528 RepoChangelogView,
221 pattern='/{repo_name:.*?[^/]}/commits_elements', repo_route=True)
529 attr='repo_changelog',
222 config.add_route(
530 route_name='repo_commits_file', request_method='GET',
223 name='repo_commits_elements_file',
531 renderer='rhodecode:templates/commits/changelog.mako')
224 pattern='/{repo_name:.*?[^/]}/commits_elements/{commit_id}/{f_path:.*}', repo_route=True)
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 # Changelog (old deprecated name for commits page)
539 # Changelog (old deprecated name for commits page)
227 config.add_route(
540 config.add_route(
@@ -235,25 +548,50 b' def includeme(config):'
235 config.add_route(
548 config.add_route(
236 name='repo_compare_select',
549 name='repo_compare_select',
237 pattern='/{repo_name:.*?[^/]}/compare', repo_route=True)
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 config.add_route(
557 config.add_route(
240 name='repo_compare',
558 name='repo_compare',
241 pattern='/{repo_name:.*?[^/]}/compare/{source_ref_type}@{source_ref:.*?}...{target_ref_type}@{target_ref:.*?}', repo_route=True)
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 # Tags
566 # Tags
244 config.add_route(
567 config.add_route(
245 name='tags_home',
568 name='tags_home',
246 pattern='/{repo_name:.*?[^/]}/tags', repo_route=True)
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 # Branches
576 # Branches
249 config.add_route(
577 config.add_route(
250 name='branches_home',
578 name='branches_home',
251 pattern='/{repo_name:.*?[^/]}/branches', repo_route=True)
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 # Bookmarks
586 # Bookmarks
254 config.add_route(
587 config.add_route(
255 name='bookmarks_home',
588 name='bookmarks_home',
256 pattern='/{repo_name:.*?[^/]}/bookmarks', repo_route=True)
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 # Forks
596 # Forks
259 config.add_route(
597 config.add_route(
@@ -261,195 +599,426 b' def includeme(config):'
261 pattern='/{repo_name:.*?[^/]}/fork', repo_route=True,
599 pattern='/{repo_name:.*?[^/]}/fork', repo_route=True,
262 repo_forbid_when_archived=True,
600 repo_forbid_when_archived=True,
263 repo_accepted_types=['hg', 'git'])
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 config.add_route(
608 config.add_route(
266 name='repo_fork_create',
609 name='repo_fork_create',
267 pattern='/{repo_name:.*?[^/]}/fork/create', repo_route=True,
610 pattern='/{repo_name:.*?[^/]}/fork/create', repo_route=True,
268 repo_forbid_when_archived=True,
611 repo_forbid_when_archived=True,
269 repo_accepted_types=['hg', 'git'])
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 config.add_route(
619 config.add_route(
272 name='repo_forks_show_all',
620 name='repo_forks_show_all',
273 pattern='/{repo_name:.*?[^/]}/forks', repo_route=True,
621 pattern='/{repo_name:.*?[^/]}/forks', repo_route=True,
274 repo_accepted_types=['hg', 'git'])
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 config.add_route(
629 config.add_route(
276 name='repo_forks_data',
630 name='repo_forks_data',
277 pattern='/{repo_name:.*?[^/]}/forks/data', repo_route=True,
631 pattern='/{repo_name:.*?[^/]}/forks/data', repo_route=True,
278 repo_accepted_types=['hg', 'git'])
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 # Pull Requests
639 # Pull Requests
281 config.add_route(
640 config.add_route(
282 name='pullrequest_show',
641 name='pullrequest_show',
283 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}',
642 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}',
284 repo_route=True)
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 config.add_route(
650 config.add_route(
287 name='pullrequest_show_all',
651 name='pullrequest_show_all',
288 pattern='/{repo_name:.*?[^/]}/pull-request',
652 pattern='/{repo_name:.*?[^/]}/pull-request',
289 repo_route=True, repo_accepted_types=['hg', 'git'])
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 config.add_route(
660 config.add_route(
292 name='pullrequest_show_all_data',
661 name='pullrequest_show_all_data',
293 pattern='/{repo_name:.*?[^/]}/pull-request-data',
662 pattern='/{repo_name:.*?[^/]}/pull-request-data',
294 repo_route=True, repo_accepted_types=['hg', 'git'])
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 config.add_route(
670 config.add_route(
297 name='pullrequest_repo_refs',
671 name='pullrequest_repo_refs',
298 pattern='/{repo_name:.*?[^/]}/pull-request/refs/{target_repo_name:.*?[^/]}',
672 pattern='/{repo_name:.*?[^/]}/pull-request/refs/{target_repo_name:.*?[^/]}',
299 repo_route=True)
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 config.add_route(
680 config.add_route(
302 name='pullrequest_repo_targets',
681 name='pullrequest_repo_targets',
303 pattern='/{repo_name:.*?[^/]}/pull-request/repo-targets',
682 pattern='/{repo_name:.*?[^/]}/pull-request/repo-targets',
304 repo_route=True)
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 config.add_route(
690 config.add_route(
307 name='pullrequest_new',
691 name='pullrequest_new',
308 pattern='/{repo_name:.*?[^/]}/pull-request/new',
692 pattern='/{repo_name:.*?[^/]}/pull-request/new',
309 repo_route=True, repo_accepted_types=['hg', 'git'],
693 repo_route=True, repo_accepted_types=['hg', 'git'],
310 repo_forbid_when_archived=True)
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 config.add_route(
701 config.add_route(
313 name='pullrequest_create',
702 name='pullrequest_create',
314 pattern='/{repo_name:.*?[^/]}/pull-request/create',
703 pattern='/{repo_name:.*?[^/]}/pull-request/create',
315 repo_route=True, repo_accepted_types=['hg', 'git'],
704 repo_route=True, repo_accepted_types=['hg', 'git'],
316 repo_forbid_when_archived=True)
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 config.add_route(
712 config.add_route(
319 name='pullrequest_update',
713 name='pullrequest_update',
320 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/update',
714 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/update',
321 repo_route=True, repo_forbid_when_archived=True)
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 config.add_route(
722 config.add_route(
324 name='pullrequest_merge',
723 name='pullrequest_merge',
325 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/merge',
724 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/merge',
326 repo_route=True, repo_forbid_when_archived=True)
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 config.add_route(
732 config.add_route(
329 name='pullrequest_delete',
733 name='pullrequest_delete',
330 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/delete',
734 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/delete',
331 repo_route=True, repo_forbid_when_archived=True)
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 config.add_route(
742 config.add_route(
334 name='pullrequest_comment_create',
743 name='pullrequest_comment_create',
335 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/comment',
744 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/comment',
336 repo_route=True)
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 config.add_route(
752 config.add_route(
339 name='pullrequest_comment_edit',
753 name='pullrequest_comment_edit',
340 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/comment/{comment_id}/edit',
754 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/comment/{comment_id}/edit',
341 repo_route=True, repo_accepted_types=['hg', 'git'])
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 config.add_route(
762 config.add_route(
344 name='pullrequest_comment_delete',
763 name='pullrequest_comment_delete',
345 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/comment/{comment_id}/delete',
764 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/comment/{comment_id}/delete',
346 repo_route=True, repo_accepted_types=['hg', 'git'])
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 config.add_route(
772 config.add_route(
349 name='pullrequest_comments',
773 name='pullrequest_comments',
350 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/comments',
774 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/comments',
351 repo_route=True)
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 config.add_route(
782 config.add_route(
354 name='pullrequest_todos',
783 name='pullrequest_todos',
355 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/todos',
784 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/todos',
356 repo_route=True)
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 config.add_route(
792 config.add_route(
359 name='pullrequest_drafts',
793 name='pullrequest_drafts',
360 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/drafts',
794 pattern='/{repo_name:.*?[^/]}/pull-request/{pull_request_id:\d+}/drafts',
361 repo_route=True)
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 # Artifacts, (EE feature)
802 # Artifacts, (EE feature)
364 config.add_route(
803 config.add_route(
365 name='repo_artifacts_list',
804 name='repo_artifacts_list',
366 pattern='/{repo_name:.*?[^/]}/artifacts', repo_route=True)
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 # Settings
812 # Settings
369 config.add_route(
813 config.add_route(
370 name='edit_repo',
814 name='edit_repo',
371 pattern='/{repo_name:.*?[^/]}/settings', repo_route=True)
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 # update is POST on edit_repo
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 # Settings advanced
828 # Settings advanced
375 config.add_route(
829 config.add_route(
376 name='edit_repo_advanced',
830 name='edit_repo_advanced',
377 pattern='/{repo_name:.*?[^/]}/settings/advanced', repo_route=True)
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 config.add_route(
838 config.add_route(
379 name='edit_repo_advanced_archive',
839 name='edit_repo_advanced_archive',
380 pattern='/{repo_name:.*?[^/]}/settings/advanced/archive', repo_route=True)
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 config.add_route(
847 config.add_route(
382 name='edit_repo_advanced_delete',
848 name='edit_repo_advanced_delete',
383 pattern='/{repo_name:.*?[^/]}/settings/advanced/delete', repo_route=True)
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 config.add_route(
856 config.add_route(
385 name='edit_repo_advanced_locking',
857 name='edit_repo_advanced_locking',
386 pattern='/{repo_name:.*?[^/]}/settings/advanced/locking', repo_route=True)
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 config.add_route(
865 config.add_route(
388 name='edit_repo_advanced_journal',
866 name='edit_repo_advanced_journal',
389 pattern='/{repo_name:.*?[^/]}/settings/advanced/journal', repo_route=True)
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 config.add_route(
874 config.add_route(
391 name='edit_repo_advanced_fork',
875 name='edit_repo_advanced_fork',
392 pattern='/{repo_name:.*?[^/]}/settings/advanced/fork', repo_route=True)
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 config.add_route(
883 config.add_route(
395 name='edit_repo_advanced_hooks',
884 name='edit_repo_advanced_hooks',
396 pattern='/{repo_name:.*?[^/]}/settings/advanced/hooks', repo_route=True)
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 # Caches
892 # Caches
399 config.add_route(
893 config.add_route(
400 name='edit_repo_caches',
894 name='edit_repo_caches',
401 pattern='/{repo_name:.*?[^/]}/settings/caches', repo_route=True)
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 # Permissions
906 # Permissions
404 config.add_route(
907 config.add_route(
405 name='edit_repo_perms',
908 name='edit_repo_perms',
406 pattern='/{repo_name:.*?[^/]}/settings/permissions', repo_route=True)
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 config.add_route(
921 config.add_route(
409 name='edit_repo_perms_set_private',
922 name='edit_repo_perms_set_private',
410 pattern='/{repo_name:.*?[^/]}/settings/permissions/set_private', repo_route=True)
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 # Permissions Branch (EE feature)
930 # Permissions Branch (EE feature)
413 config.add_route(
931 config.add_route(
414 name='edit_repo_perms_branch',
932 name='edit_repo_perms_branch',
415 pattern='/{repo_name:.*?[^/]}/settings/branch_permissions', repo_route=True)
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 config.add_route(
940 config.add_route(
417 name='edit_repo_perms_branch_delete',
941 name='edit_repo_perms_branch_delete',
418 pattern='/{repo_name:.*?[^/]}/settings/branch_permissions/{rule_id}/delete',
942 pattern='/{repo_name:.*?[^/]}/settings/branch_permissions/{rule_id}/delete',
419 repo_route=True)
943 repo_route=True)
944 ## Only implemented in EE
420
945
421 # Maintenance
946 # Maintenance
422 config.add_route(
947 config.add_route(
423 name='edit_repo_maintenance',
948 name='edit_repo_maintenance',
424 pattern='/{repo_name:.*?[^/]}/settings/maintenance', repo_route=True)
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 config.add_route(
956 config.add_route(
427 name='edit_repo_maintenance_execute',
957 name='edit_repo_maintenance_execute',
428 pattern='/{repo_name:.*?[^/]}/settings/maintenance/execute', repo_route=True)
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 # Fields
965 # Fields
431 config.add_route(
966 config.add_route(
432 name='edit_repo_fields',
967 name='edit_repo_fields',
433 pattern='/{repo_name:.*?[^/]}/settings/fields', repo_route=True)
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 config.add_route(
975 config.add_route(
435 name='edit_repo_fields_create',
976 name='edit_repo_fields_create',
436 pattern='/{repo_name:.*?[^/]}/settings/fields/create', repo_route=True)
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 config.add_route(
984 config.add_route(
438 name='edit_repo_fields_delete',
985 name='edit_repo_fields_delete',
439 pattern='/{repo_name:.*?[^/]}/settings/fields/{field_id}/delete', repo_route=True)
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 # Locking
993 # Locking
442 config.add_route(
994 config.add_route(
443 name='repo_edit_toggle_locking',
995 name='repo_edit_toggle_locking',
444 pattern='/{repo_name:.*?[^/]}/settings/toggle_locking', repo_route=True)
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 # Remote
1003 # Remote
447 config.add_route(
1004 config.add_route(
448 name='edit_repo_remote',
1005 name='edit_repo_remote',
449 pattern='/{repo_name:.*?[^/]}/settings/remote', repo_route=True)
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 config.add_route(
1013 config.add_route(
451 name='edit_repo_remote_pull',
1014 name='edit_repo_remote_pull',
452 pattern='/{repo_name:.*?[^/]}/settings/remote/pull', repo_route=True)
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 config.add_route(
1022 config.add_route(
454 name='edit_repo_remote_push',
1023 name='edit_repo_remote_push',
455 pattern='/{repo_name:.*?[^/]}/settings/remote/push', repo_route=True)
1024 pattern='/{repo_name:.*?[^/]}/settings/remote/push', repo_route=True)
@@ -458,91 +1027,201 b' def includeme(config):'
458 config.add_route(
1027 config.add_route(
459 name='edit_repo_statistics',
1028 name='edit_repo_statistics',
460 pattern='/{repo_name:.*?[^/]}/settings/statistics', repo_route=True)
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 config.add_route(
1036 config.add_route(
462 name='edit_repo_statistics_reset',
1037 name='edit_repo_statistics_reset',
463 pattern='/{repo_name:.*?[^/]}/settings/statistics/update', repo_route=True)
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 # Issue trackers
1045 # Issue trackers
466 config.add_route(
1046 config.add_route(
467 name='edit_repo_issuetracker',
1047 name='edit_repo_issuetracker',
468 pattern='/{repo_name:.*?[^/]}/settings/issue_trackers', repo_route=True)
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 config.add_route(
1055 config.add_route(
470 name='edit_repo_issuetracker_test',
1056 name='edit_repo_issuetracker_test',
471 pattern='/{repo_name:.*?[^/]}/settings/issue_trackers/test', repo_route=True)
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 config.add_route(
1064 config.add_route(
473 name='edit_repo_issuetracker_delete',
1065 name='edit_repo_issuetracker_delete',
474 pattern='/{repo_name:.*?[^/]}/settings/issue_trackers/delete', repo_route=True)
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 config.add_route(
1073 config.add_route(
476 name='edit_repo_issuetracker_update',
1074 name='edit_repo_issuetracker_update',
477 pattern='/{repo_name:.*?[^/]}/settings/issue_trackers/update', repo_route=True)
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 # VCS Settings
1082 # VCS Settings
480 config.add_route(
1083 config.add_route(
481 name='edit_repo_vcs',
1084 name='edit_repo_vcs',
482 pattern='/{repo_name:.*?[^/]}/settings/vcs', repo_route=True)
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 config.add_route(
1092 config.add_route(
484 name='edit_repo_vcs_update',
1093 name='edit_repo_vcs_update',
485 pattern='/{repo_name:.*?[^/]}/settings/vcs/update', repo_route=True)
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 # svn pattern
1101 # svn pattern
488 config.add_route(
1102 config.add_route(
489 name='edit_repo_vcs_svn_pattern_delete',
1103 name='edit_repo_vcs_svn_pattern_delete',
490 pattern='/{repo_name:.*?[^/]}/settings/vcs/svn_pattern/delete', repo_route=True)
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 # Repo Review Rules (EE feature)
1111 # Repo Review Rules (EE feature)
493 config.add_route(
1112 config.add_route(
494 name='repo_reviewers',
1113 name='repo_reviewers',
495 pattern='/{repo_name:.*?[^/]}/settings/review/rules', repo_route=True)
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 config.add_route(
1121 config.add_route(
498 name='repo_default_reviewers_data',
1122 name='repo_default_reviewers_data',
499 pattern='/{repo_name:.*?[^/]}/settings/review/default-reviewers', repo_route=True)
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 # Repo Automation (EE feature)
1130 # Repo Automation (EE feature)
502 config.add_route(
1131 config.add_route(
503 name='repo_automation',
1132 name='repo_automation',
504 pattern='/{repo_name:.*?[^/]}/settings/automation', repo_route=True)
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 # Strip
1140 # Strip
507 config.add_route(
1141 config.add_route(
508 name='edit_repo_strip',
1142 name='edit_repo_strip',
509 pattern='/{repo_name:.*?[^/]}/settings/strip', repo_route=True)
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 config.add_route(
1150 config.add_route(
512 name='strip_check',
1151 name='strip_check',
513 pattern='/{repo_name:.*?[^/]}/settings/strip_check', repo_route=True)
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 config.add_route(
1159 config.add_route(
516 name='strip_execute',
1160 name='strip_execute',
517 pattern='/{repo_name:.*?[^/]}/settings/strip_execute', repo_route=True)
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 # Audit logs
1168 # Audit logs
520 config.add_route(
1169 config.add_route(
521 name='edit_repo_audit_logs',
1170 name='edit_repo_audit_logs',
522 pattern='/{repo_name:.*?[^/]}/settings/audit_logs', repo_route=True)
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 # ATOM/RSS Feed, shouldn't contain slashes for outlook compatibility
1178 # ATOM/RSS Feed, shouldn't contain slashes for outlook compatibility
525 config.add_route(
1179 config.add_route(
526 name='rss_feed_home',
1180 name='rss_feed_home',
527 pattern='/{repo_name:.*?[^/]}/feed-rss', repo_route=True)
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 config.add_route(
1195 config.add_route(
530 name='atom_feed_home',
1196 name='atom_feed_home',
531 pattern='/{repo_name:.*?[^/]}/feed-atom', repo_route=True)
1197 pattern='/{repo_name:.*?[^/]}/feed-atom', repo_route=True)
532
1198 config.add_view(
533 config.add_route(
1199 RepoFeedView,
534 name='rss_feed_home_old',
1200 attr='atom',
535 pattern='/{repo_name:.*?[^/]}/feed/rss', repo_route=True)
1201 route_name='atom_feed_home', request_method='GET', renderer=None)
536
1202
537 config.add_route(
1203 config.add_route(
538 name='atom_feed_home_old',
1204 name='atom_feed_home_old',
539 pattern='/{repo_name:.*?[^/]}/feed/atom', repo_route=True)
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 # NOTE(marcink): needs to be at the end for catch-all
1211 # NOTE(marcink): needs to be at the end for catch-all
542 add_route_with_slash(
1212 add_route_with_slash(
543 config,
1213 config,
544 name='repo_summary',
1214 name='repo_summary',
545 pattern='/{repo_name:.*?[^/]}', repo_route=True)
1215 pattern='/{repo_name:.*?[^/]}', repo_route=True)
546
1216 config.add_view(
547 # Scan module for configuration decorators.
1217 RepoSummaryView,
548 config.scan('.views', ignore='.tests')
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 import logging
21 import logging
22
22
23 from pyramid.view import view_config
23
24
24
25 from rhodecode.apps._base import RepoAppView
25 from rhodecode.apps._base import RepoAppView
26 from rhodecode.lib.auth import (
26 from rhodecode.lib.auth import (
@@ -39,9 +39,6 b' class RepoArtifactsView(RepoAppView):'
39 @LoginRequired()
39 @LoginRequired()
40 @HasRepoPermissionAnyDecorator(
40 @HasRepoPermissionAnyDecorator(
41 'repository.read', 'repository.write', 'repository.admin')
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 def repo_artifacts(self):
42 def repo_artifacts(self):
46 c = self.load_default_context()
43 c = self.load_default_context()
47 c.active = 'artifacts'
44 c.active = 'artifacts'
@@ -19,7 +19,7 b''
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20
21 import logging
21 import logging
22 from pyramid.view import view_config
22
23
23
24 from rhodecode.apps._base import RepoAppView
24 from rhodecode.apps._base import RepoAppView
25 from rhodecode.lib.helpers import SqlPage
25 from rhodecode.lib.helpers import SqlPage
@@ -38,9 +38,6 b' class AuditLogsView(RepoAppView):'
38
38
39 @LoginRequired()
39 @LoginRequired()
40 @HasRepoPermissionAnyDecorator('repository.admin')
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 def repo_audit_logs(self):
41 def repo_audit_logs(self):
45 _ = self.request.translate
42 _ = self.request.translate
46 c = self.load_default_context()
43 c = self.load_default_context()
@@ -20,7 +20,7 b''
20
20
21 import logging
21 import logging
22
22
23 from pyramid.view import view_config
23
24
24
25 from rhodecode.apps._base import RepoAppView
25 from rhodecode.apps._base import RepoAppView
26 from rhodecode.apps.repository.utils import get_default_reviewers_data
26 from rhodecode.apps.repository.utils import get_default_reviewers_data
@@ -36,9 +36,6 b' class RepoAutomationView(RepoAppView):'
36
36
37 @LoginRequired()
37 @LoginRequired()
38 @HasRepoPermissionAnyDecorator('repository.admin')
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 def repo_automation(self):
39 def repo_automation(self):
43 c = self.load_default_context()
40 c = self.load_default_context()
44 c.active = 'automation'
41 c.active = 'automation'
@@ -20,7 +20,7 b''
20 import logging
20 import logging
21
21
22 from pyramid.httpexceptions import HTTPNotFound
22 from pyramid.httpexceptions import HTTPNotFound
23 from pyramid.view import view_config
23
24
24
25 from rhodecode.apps._base import BaseReferencesView
25 from rhodecode.apps._base import BaseReferencesView
26 from rhodecode.lib.ext_json import json
26 from rhodecode.lib.ext_json import json
@@ -36,9 +36,6 b' class RepoBookmarksView(BaseReferencesVi'
36 @LoginRequired()
36 @LoginRequired()
37 @HasRepoPermissionAnyDecorator(
37 @HasRepoPermissionAnyDecorator(
38 'repository.read', 'repository.write', 'repository.admin')
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 def bookmarks(self):
39 def bookmarks(self):
43 c = self.load_default_context()
40 c = self.load_default_context()
44
41
@@ -20,7 +20,7 b''
20
20
21 import logging
21 import logging
22
22
23 from pyramid.view import view_config
23
24
24
25 from rhodecode.apps._base import RepoAppView
25 from rhodecode.apps._base import RepoAppView
26 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
26 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
@@ -36,9 +36,6 b' class RepoSettingsBranchPermissionsView('
36
36
37 @LoginRequired()
37 @LoginRequired()
38 @HasRepoPermissionAnyDecorator('repository.admin')
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 def branch_permissions(self):
39 def branch_permissions(self):
43 c = self.load_default_context()
40 c = self.load_default_context()
44 c.active = 'permissions_branch'
41 c.active = 'permissions_branch'
@@ -19,7 +19,7 b''
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20
21 import logging
21 import logging
22 from pyramid.view import view_config
22
23
23
24 from rhodecode.apps._base import BaseReferencesView
24 from rhodecode.apps._base import BaseReferencesView
25 from rhodecode.lib.ext_json import json
25 from rhodecode.lib.ext_json import json
@@ -34,9 +34,6 b' class RepoBranchesView(BaseReferencesVie'
34 @LoginRequired()
34 @LoginRequired()
35 @HasRepoPermissionAnyDecorator(
35 @HasRepoPermissionAnyDecorator(
36 'repository.read', 'repository.write', 'repository.admin')
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 def branches(self):
37 def branches(self):
41 c = self.load_default_context()
38 c = self.load_default_context()
42
39
@@ -22,7 +22,7 b' import os'
22 import logging
22 import logging
23
23
24 from pyramid.httpexceptions import HTTPFound
24 from pyramid.httpexceptions import HTTPFound
25 from pyramid.view import view_config
25
26
26
27 from rhodecode.apps._base import RepoAppView
27 from rhodecode.apps._base import RepoAppView
28 from rhodecode.lib.auth import (
28 from rhodecode.lib.auth import (
@@ -42,9 +42,6 b' class RepoCachesView(RepoAppView):'
42
42
43 @LoginRequired()
43 @LoginRequired()
44 @HasRepoPermissionAnyDecorator('repository.admin')
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 def repo_caches(self):
45 def repo_caches(self):
49 c = self.load_default_context()
46 c = self.load_default_context()
50 c.active = 'caches'
47 c.active = 'caches'
@@ -65,8 +62,6 b' class RepoCachesView(RepoAppView):'
65 @LoginRequired()
62 @LoginRequired()
66 @HasRepoPermissionAnyDecorator('repository.admin')
63 @HasRepoPermissionAnyDecorator('repository.admin')
67 @CSRFRequired()
64 @CSRFRequired()
68 @view_config(
69 route_name='edit_repo_caches', request_method='POST')
70 def repo_caches_purge(self):
65 def repo_caches_purge(self):
71 _ = self.request.translate
66 _ = self.request.translate
72 c = self.load_default_context()
67 c = self.load_default_context()
@@ -22,7 +22,7 b''
22 import logging
22 import logging
23
23
24 from pyramid.httpexceptions import HTTPNotFound, HTTPFound
24 from pyramid.httpexceptions import HTTPNotFound, HTTPFound
25 from pyramid.view import view_config
25
26 from pyramid.renderers import render
26 from pyramid.renderers import render
27 from pyramid.response import Response
27 from pyramid.response import Response
28
28
@@ -176,19 +176,6 b' class RepoChangelogView(RepoAppView):'
176 @LoginRequired()
176 @LoginRequired()
177 @HasRepoPermissionAnyDecorator(
177 @HasRepoPermissionAnyDecorator(
178 'repository.read', 'repository.write', 'repository.admin')
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 def repo_changelog(self):
179 def repo_changelog(self):
193 c = self.load_default_context()
180 c = self.load_default_context()
194
181
@@ -216,6 +203,7 b' class RepoChangelogView(RepoAppView):'
216 pre_load = self._get_preload_attrs()
203 pre_load = self._get_preload_attrs()
217
204
218 partial_xhr = self.request.environ.get('HTTP_X_PARTIAL_XHR')
205 partial_xhr = self.request.environ.get('HTTP_X_PARTIAL_XHR')
206
219 try:
207 try:
220 if f_path:
208 if f_path:
221 log.debug('generating changelog for path %s', f_path)
209 log.debug('generating changelog for path %s', f_path)
@@ -258,8 +246,15 b' class RepoChangelogView(RepoAppView):'
258 except (RepositoryError, CommitDoesNotExistError, Exception) as e:
246 except (RepositoryError, CommitDoesNotExistError, Exception) as e:
259 log.exception(safe_str(e))
247 log.exception(safe_str(e))
260 h.flash(safe_str(h.escape(e)), category='error')
248 h.flash(safe_str(h.escape(e)), category='error')
261 raise HTTPFound(
249
262 h.route_path('repo_commits', repo_name=self.db_repo_name))
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 if partial_xhr or self.request.environ.get('HTTP_X_PJAX'):
259 if partial_xhr or self.request.environ.get('HTTP_X_PJAX'):
265 # case when loading dynamic file history in file view
260 # case when loading dynamic file history in file view
@@ -283,14 +278,6 b' class RepoChangelogView(RepoAppView):'
283 @LoginRequired()
278 @LoginRequired()
284 @HasRepoPermissionAnyDecorator(
279 @HasRepoPermissionAnyDecorator(
285 'repository.read', 'repository.write', 'repository.admin')
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 def repo_commits_elements(self):
281 def repo_commits_elements(self):
295 c = self.load_default_context()
282 c = self.load_default_context()
296 commit_id = self.request.matchdict.get('commit_id')
283 commit_id = self.request.matchdict.get('commit_id')
@@ -20,10 +20,8 b''
20
20
21 import logging
21 import logging
22
22
23 from pyramid.view import view_config
24 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
23 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
25
24
26 from rhodecode import events
27 from rhodecode.apps._base import BaseAppView
25 from rhodecode.apps._base import BaseAppView
28 from rhodecode.lib import helpers as h
26 from rhodecode.lib import helpers as h
29 from rhodecode.lib.auth import (NotAnonymous, HasRepoPermissionAny)
27 from rhodecode.lib.auth import (NotAnonymous, HasRepoPermissionAny)
@@ -37,13 +35,9 b' log = logging.getLogger(__name__)'
37 class RepoChecksView(BaseAppView):
35 class RepoChecksView(BaseAppView):
38 def load_default_context(self):
36 def load_default_context(self):
39 c = self._get_local_tmpl_context()
37 c = self._get_local_tmpl_context()
40
41 return c
38 return c
42
39
43 @NotAnonymous()
40 @NotAnonymous()
44 @view_config(
45 route_name='repo_creating', request_method='GET',
46 renderer='rhodecode:templates/admin/repos/repo_creating.mako')
47 def repo_creating(self):
41 def repo_creating(self):
48 c = self.load_default_context()
42 c = self.load_default_context()
49 repo_name = self.request.matchdict['repo_name']
43 repo_name = self.request.matchdict['repo_name']
@@ -71,9 +65,6 b' class RepoChecksView(BaseAppView):'
71 return self._get_template_context(c)
65 return self._get_template_context(c)
72
66
73 @NotAnonymous()
67 @NotAnonymous()
74 @view_config(
75 route_name='repo_creating_check', request_method='GET',
76 renderer='json_ext')
77 def repo_creating_check(self):
68 def repo_creating_check(self):
78 _ = self.request.translate
69 _ = self.request.translate
79 task_id = self.request.GET.get('task_id')
70 task_id = self.request.GET.get('task_id')
@@ -23,7 +23,6 b' import collections'
23
23
24 from pyramid.httpexceptions import (
24 from pyramid.httpexceptions import (
25 HTTPNotFound, HTTPBadRequest, HTTPFound, HTTPForbidden, HTTPConflict)
25 HTTPNotFound, HTTPBadRequest, HTTPFound, HTTPForbidden, HTTPConflict)
26 from pyramid.view import view_config
27 from pyramid.renderers import render
26 from pyramid.renderers import render
28 from pyramid.response import Response
27 from pyramid.response import Response
29
28
@@ -41,7 +40,7 b' from rhodecode.lib.diffs import ('
41 get_diff_whitespace_flag)
40 get_diff_whitespace_flag)
42 from rhodecode.lib.exceptions import StatusChangeOnClosedPullRequestError, CommentVersionMismatch
41 from rhodecode.lib.exceptions import StatusChangeOnClosedPullRequestError, CommentVersionMismatch
43 import rhodecode.lib.helpers as h
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 from rhodecode.lib.vcs.backends.base import EmptyCommit
44 from rhodecode.lib.vcs.backends.base import EmptyCommit
46 from rhodecode.lib.vcs.exceptions import (
45 from rhodecode.lib.vcs.exceptions import (
47 RepositoryError, CommitDoesNotExistError)
46 RepositoryError, CommitDoesNotExistError)
@@ -110,7 +109,7 b' class RepoCommitsView(RepoAppView):'
110 if not c.commit_ranges:
109 if not c.commit_ranges:
111 raise RepositoryError('The commit range returned an empty result')
110 raise RepositoryError('The commit range returned an empty result')
112 except CommitDoesNotExistError as e:
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 h.flash(msg, category='error')
113 h.flash(msg, category='error')
115 raise HTTPNotFound()
114 raise HTTPNotFound()
116 except Exception:
115 except Exception:
@@ -340,9 +339,6 b' class RepoCommitsView(RepoAppView):'
340 @LoginRequired()
339 @LoginRequired()
341 @HasRepoPermissionAnyDecorator(
340 @HasRepoPermissionAnyDecorator(
342 'repository.read', 'repository.write', 'repository.admin')
341 'repository.read', 'repository.write', 'repository.admin')
343 @view_config(
344 route_name='repo_commit', request_method='GET',
345 renderer=None)
346 def repo_commit_show(self):
342 def repo_commit_show(self):
347 commit_id = self.request.matchdict['commit_id']
343 commit_id = self.request.matchdict['commit_id']
348 return self._commit(commit_id, method='show')
344 return self._commit(commit_id, method='show')
@@ -350,12 +346,6 b' class RepoCommitsView(RepoAppView):'
350 @LoginRequired()
346 @LoginRequired()
351 @HasRepoPermissionAnyDecorator(
347 @HasRepoPermissionAnyDecorator(
352 'repository.read', 'repository.write', 'repository.admin')
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 def repo_commit_raw(self):
349 def repo_commit_raw(self):
360 commit_id = self.request.matchdict['commit_id']
350 commit_id = self.request.matchdict['commit_id']
361 return self._commit(commit_id, method='raw')
351 return self._commit(commit_id, method='raw')
@@ -363,9 +353,6 b' class RepoCommitsView(RepoAppView):'
363 @LoginRequired()
353 @LoginRequired()
364 @HasRepoPermissionAnyDecorator(
354 @HasRepoPermissionAnyDecorator(
365 'repository.read', 'repository.write', 'repository.admin')
355 'repository.read', 'repository.write', 'repository.admin')
366 @view_config(
367 route_name='repo_commit_patch', request_method='GET',
368 renderer=None)
369 def repo_commit_patch(self):
356 def repo_commit_patch(self):
370 commit_id = self.request.matchdict['commit_id']
357 commit_id = self.request.matchdict['commit_id']
371 return self._commit(commit_id, method='patch')
358 return self._commit(commit_id, method='patch')
@@ -373,9 +360,6 b' class RepoCommitsView(RepoAppView):'
373 @LoginRequired()
360 @LoginRequired()
374 @HasRepoPermissionAnyDecorator(
361 @HasRepoPermissionAnyDecorator(
375 'repository.read', 'repository.write', 'repository.admin')
362 'repository.read', 'repository.write', 'repository.admin')
376 @view_config(
377 route_name='repo_commit_download', request_method='GET',
378 renderer=None)
379 def repo_commit_download(self):
363 def repo_commit_download(self):
380 commit_id = self.request.matchdict['commit_id']
364 commit_id = self.request.matchdict['commit_id']
381 return self._commit(commit_id, method='download')
365 return self._commit(commit_id, method='download')
@@ -500,9 +484,6 b' class RepoCommitsView(RepoAppView):'
500 @HasRepoPermissionAnyDecorator(
484 @HasRepoPermissionAnyDecorator(
501 'repository.read', 'repository.write', 'repository.admin')
485 'repository.read', 'repository.write', 'repository.admin')
502 @CSRFRequired()
486 @CSRFRequired()
503 @view_config(
504 route_name='repo_commit_comment_create', request_method='POST',
505 renderer='json_ext')
506 def repo_commit_comment_create(self):
487 def repo_commit_comment_create(self):
507 _ = self.request.translate
488 _ = self.request.translate
508 commit_id = self.request.matchdict['commit_id']
489 commit_id = self.request.matchdict['commit_id']
@@ -538,9 +519,6 b' class RepoCommitsView(RepoAppView):'
538 @HasRepoPermissionAnyDecorator(
519 @HasRepoPermissionAnyDecorator(
539 'repository.read', 'repository.write', 'repository.admin')
520 'repository.read', 'repository.write', 'repository.admin')
540 @CSRFRequired()
521 @CSRFRequired()
541 @view_config(
542 route_name='repo_commit_comment_preview', request_method='POST',
543 renderer='string', xhr=True)
544 def repo_commit_comment_preview(self):
522 def repo_commit_comment_preview(self):
545 # Technically a CSRF token is not needed as no state changes with this
523 # Technically a CSRF token is not needed as no state changes with this
546 # call. However, as this is a POST is better to have it, so automated
524 # call. However, as this is a POST is better to have it, so automated
@@ -559,9 +537,6 b' class RepoCommitsView(RepoAppView):'
559 @HasRepoPermissionAnyDecorator(
537 @HasRepoPermissionAnyDecorator(
560 'repository.read', 'repository.write', 'repository.admin')
538 'repository.read', 'repository.write', 'repository.admin')
561 @CSRFRequired()
539 @CSRFRequired()
562 @view_config(
563 route_name='repo_commit_comment_history_view', request_method='POST',
564 renderer='string', xhr=True)
565 def repo_commit_comment_history_view(self):
540 def repo_commit_comment_history_view(self):
566 c = self.load_default_context()
541 c = self.load_default_context()
567
542
@@ -587,9 +562,6 b' class RepoCommitsView(RepoAppView):'
587 @HasRepoPermissionAnyDecorator(
562 @HasRepoPermissionAnyDecorator(
588 'repository.read', 'repository.write', 'repository.admin')
563 'repository.read', 'repository.write', 'repository.admin')
589 @CSRFRequired()
564 @CSRFRequired()
590 @view_config(
591 route_name='repo_commit_comment_attachment_upload', request_method='POST',
592 renderer='json_ext', xhr=True)
593 def repo_commit_comment_attachment_upload(self):
565 def repo_commit_comment_attachment_upload(self):
594 c = self.load_default_context()
566 c = self.load_default_context()
595 upload_key = 'attachment'
567 upload_key = 'attachment'
@@ -682,9 +654,6 b' class RepoCommitsView(RepoAppView):'
682 @HasRepoPermissionAnyDecorator(
654 @HasRepoPermissionAnyDecorator(
683 'repository.read', 'repository.write', 'repository.admin')
655 'repository.read', 'repository.write', 'repository.admin')
684 @CSRFRequired()
656 @CSRFRequired()
685 @view_config(
686 route_name='repo_commit_comment_delete', request_method='POST',
687 renderer='json_ext')
688 def repo_commit_comment_delete(self):
657 def repo_commit_comment_delete(self):
689 commit_id = self.request.matchdict['commit_id']
658 commit_id = self.request.matchdict['commit_id']
690 comment_id = self.request.matchdict['comment_id']
659 comment_id = self.request.matchdict['comment_id']
@@ -719,9 +688,6 b' class RepoCommitsView(RepoAppView):'
719 @HasRepoPermissionAnyDecorator(
688 @HasRepoPermissionAnyDecorator(
720 'repository.read', 'repository.write', 'repository.admin')
689 'repository.read', 'repository.write', 'repository.admin')
721 @CSRFRequired()
690 @CSRFRequired()
722 @view_config(
723 route_name='repo_commit_comment_edit', request_method='POST',
724 renderer='json_ext')
725 def repo_commit_comment_edit(self):
691 def repo_commit_comment_edit(self):
726 self.load_default_context()
692 self.load_default_context()
727
693
@@ -802,9 +768,6 b' class RepoCommitsView(RepoAppView):'
802 @LoginRequired()
768 @LoginRequired()
803 @HasRepoPermissionAnyDecorator(
769 @HasRepoPermissionAnyDecorator(
804 'repository.read', 'repository.write', 'repository.admin')
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 def repo_commit_data(self):
771 def repo_commit_data(self):
809 commit_id = self.request.matchdict['commit_id']
772 commit_id = self.request.matchdict['commit_id']
810 self.load_default_context()
773 self.load_default_context()
@@ -817,9 +780,6 b' class RepoCommitsView(RepoAppView):'
817 @LoginRequired()
780 @LoginRequired()
818 @HasRepoPermissionAnyDecorator(
781 @HasRepoPermissionAnyDecorator(
819 'repository.read', 'repository.write', 'repository.admin')
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 def repo_commit_children(self):
783 def repo_commit_children(self):
824 commit_id = self.request.matchdict['commit_id']
784 commit_id = self.request.matchdict['commit_id']
825 self.load_default_context()
785 self.load_default_context()
@@ -836,9 +796,6 b' class RepoCommitsView(RepoAppView):'
836 @LoginRequired()
796 @LoginRequired()
837 @HasRepoPermissionAnyDecorator(
797 @HasRepoPermissionAnyDecorator(
838 'repository.read', 'repository.write', 'repository.admin')
798 'repository.read', 'repository.write', 'repository.admin')
839 @view_config(
840 route_name='repo_commit_parents', request_method='GET',
841 renderer='json_ext')
842 def repo_commit_parents(self):
799 def repo_commit_parents(self):
843 commit_id = self.request.matchdict['commit_id']
800 commit_id = self.request.matchdict['commit_id']
844 self.load_default_context()
801 self.load_default_context()
@@ -22,7 +22,7 b''
22 import logging
22 import logging
23
23
24 from pyramid.httpexceptions import HTTPBadRequest, HTTPNotFound, HTTPFound
24 from pyramid.httpexceptions import HTTPBadRequest, HTTPNotFound, HTTPFound
25 from pyramid.view import view_config
25
26 from pyramid.renderers import render
26 from pyramid.renderers import render
27 from pyramid.response import Response
27 from pyramid.response import Response
28
28
@@ -79,9 +79,6 b' class RepoCompareView(RepoAppView):'
79 @LoginRequired()
79 @LoginRequired()
80 @HasRepoPermissionAnyDecorator(
80 @HasRepoPermissionAnyDecorator(
81 'repository.read', 'repository.write', 'repository.admin')
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 def compare_select(self):
82 def compare_select(self):
86 _ = self.request.translate
83 _ = self.request.translate
87 c = self.load_default_context()
84 c = self.load_default_context()
@@ -111,9 +108,6 b' class RepoCompareView(RepoAppView):'
111 @LoginRequired()
108 @LoginRequired()
112 @HasRepoPermissionAnyDecorator(
109 @HasRepoPermissionAnyDecorator(
113 'repository.read', 'repository.write', 'repository.admin')
110 'repository.read', 'repository.write', 'repository.admin')
114 @view_config(
115 route_name='repo_compare', request_method='GET',
116 renderer=None)
117 def compare(self):
111 def compare(self):
118 _ = self.request.translate
112 _ = self.request.translate
119 c = self.load_default_context()
113 c = self.load_default_context()
@@ -20,10 +20,8 b''
20 import pytz
20 import pytz
21 import logging
21 import logging
22
22
23 from pyramid.view import view_config
24 from pyramid.response import Response
23 from pyramid.response import Response
25
24
26
27 from rhodecode.apps._base import RepoAppView
25 from rhodecode.apps._base import RepoAppView
28 from rhodecode.lib.feedgenerator import Rss201rev2Feed, Atom1Feed
26 from rhodecode.lib.feedgenerator import Rss201rev2Feed, Atom1Feed
29 from rhodecode.lib import audit_logger
27 from rhodecode.lib import audit_logger
@@ -118,8 +116,6 b' class RepoFeedView(RepoAppView):'
118 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
116 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
119 @HasRepoPermissionAnyDecorator(
117 @HasRepoPermissionAnyDecorator(
120 'repository.read', 'repository.write', 'repository.admin')
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 def atom(self):
119 def atom(self):
124 """
120 """
125 Produce an atom-1.0 feed via feedgenerator module
121 Produce an atom-1.0 feed via feedgenerator module
@@ -166,8 +162,6 b' class RepoFeedView(RepoAppView):'
166 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
162 @LoginRequired(auth_token_access=[UserApiKeys.ROLE_FEED])
167 @HasRepoPermissionAnyDecorator(
163 @HasRepoPermissionAnyDecorator(
168 'repository.read', 'repository.write', 'repository.admin')
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 def rss(self):
165 def rss(self):
172 """
166 """
173 Produce an rss2 feed via feedgenerator module
167 Produce an rss2 feed via feedgenerator module
@@ -28,7 +28,7 b' import urllib'
28 import pathlib2
28 import pathlib2
29
29
30 from pyramid.httpexceptions import HTTPNotFound, HTTPBadRequest, HTTPFound
30 from pyramid.httpexceptions import HTTPNotFound, HTTPBadRequest, HTTPFound
31 from pyramid.view import view_config
31
32 from pyramid.renderers import render
32 from pyramid.renderers import render
33 from pyramid.response import Response
33 from pyramid.response import Response
34
34
@@ -343,9 +343,6 b' class RepoFilesView(RepoAppView):'
343 @LoginRequired()
343 @LoginRequired()
344 @HasRepoPermissionAnyDecorator(
344 @HasRepoPermissionAnyDecorator(
345 'repository.read', 'repository.write', 'repository.admin')
345 'repository.read', 'repository.write', 'repository.admin')
346 @view_config(
347 route_name='repo_archivefile', request_method='GET',
348 renderer=None)
349 def repo_archivefile(self):
346 def repo_archivefile(self):
350 # archive cache config
347 # archive cache config
351 from rhodecode import CONFIG
348 from rhodecode import CONFIG
@@ -496,9 +493,6 b' class RepoFilesView(RepoAppView):'
496 @LoginRequired()
493 @LoginRequired()
497 @HasRepoPermissionAnyDecorator(
494 @HasRepoPermissionAnyDecorator(
498 'repository.read', 'repository.write', 'repository.admin')
495 'repository.read', 'repository.write', 'repository.admin')
499 @view_config(
500 route_name='repo_files_diff', request_method='GET',
501 renderer=None)
502 def repo_files_diff(self):
496 def repo_files_diff(self):
503 c = self.load_default_context()
497 c = self.load_default_context()
504 f_path = self._get_f_path(self.request.matchdict)
498 f_path = self._get_f_path(self.request.matchdict)
@@ -581,9 +575,6 b' class RepoFilesView(RepoAppView):'
581 @LoginRequired()
575 @LoginRequired()
582 @HasRepoPermissionAnyDecorator(
576 @HasRepoPermissionAnyDecorator(
583 'repository.read', 'repository.write', 'repository.admin')
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 def repo_files_diff_2way_redirect(self):
578 def repo_files_diff_2way_redirect(self):
588 """
579 """
589 Kept only to make OLD links work
580 Kept only to make OLD links work
@@ -610,10 +601,11 b' class RepoFilesView(RepoAppView):'
610 raise HTTPFound(compare_url)
601 raise HTTPFound(compare_url)
611
602
612 @LoginRequired()
603 @LoginRequired()
613 @view_config(
604 def repo_files_default_commit_redirect(self):
614 route_name='repo_files:default_commit', request_method='GET',
605 """
615 renderer=None)
606 Special page that redirects to the landing page of files based on the default
616 def repo_files_default(self):
607 commit for repository
608 """
617 c = self.load_default_context()
609 c = self.load_default_context()
618 ref_name = c.rhodecode_db_repo.landing_ref_name
610 ref_name = c.rhodecode_db_repo.landing_ref_name
619 landing_url = h.repo_files_by_ref_url(
611 landing_url = h.repo_files_by_ref_url(
@@ -630,18 +622,6 b' class RepoFilesView(RepoAppView):'
630 @LoginRequired()
622 @LoginRequired()
631 @HasRepoPermissionAnyDecorator(
623 @HasRepoPermissionAnyDecorator(
632 'repository.read', 'repository.write', 'repository.admin')
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 def repo_files(self):
625 def repo_files(self):
646 c = self.load_default_context()
626 c = self.load_default_context()
647
627
@@ -759,9 +739,6 b' class RepoFilesView(RepoAppView):'
759
739
760 @HasRepoPermissionAnyDecorator(
740 @HasRepoPermissionAnyDecorator(
761 'repository.read', 'repository.write', 'repository.admin')
741 'repository.read', 'repository.write', 'repository.admin')
762 @view_config(
763 route_name='repo_files:annotated_previous', request_method='GET',
764 renderer=None)
765 def repo_files_annotated_previous(self):
742 def repo_files_annotated_previous(self):
766 self.load_default_context()
743 self.load_default_context()
767
744
@@ -790,12 +767,6 b' class RepoFilesView(RepoAppView):'
790 @LoginRequired()
767 @LoginRequired()
791 @HasRepoPermissionAnyDecorator(
768 @HasRepoPermissionAnyDecorator(
792 'repository.read', 'repository.write', 'repository.admin')
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 def repo_nodetree_full(self):
770 def repo_nodetree_full(self):
800 """
771 """
801 Returns rendered html of file tree that contains commit date,
772 Returns rendered html of file tree that contains commit date,
@@ -835,9 +806,6 b' class RepoFilesView(RepoAppView):'
835 @LoginRequired()
806 @LoginRequired()
836 @HasRepoPermissionAnyDecorator(
807 @HasRepoPermissionAnyDecorator(
837 'repository.read', 'repository.write', 'repository.admin')
808 'repository.read', 'repository.write', 'repository.admin')
838 @view_config(
839 route_name='repo_file_raw', request_method='GET',
840 renderer=None)
841 def repo_file_raw(self):
809 def repo_file_raw(self):
842 """
810 """
843 Action for show as raw, some mimetypes are "rendered",
811 Action for show as raw, some mimetypes are "rendered",
@@ -902,12 +870,6 b' class RepoFilesView(RepoAppView):'
902 @LoginRequired()
870 @LoginRequired()
903 @HasRepoPermissionAnyDecorator(
871 @HasRepoPermissionAnyDecorator(
904 'repository.read', 'repository.write', 'repository.admin')
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 def repo_file_download(self):
873 def repo_file_download(self):
912 c = self.load_default_context()
874 c = self.load_default_context()
913
875
@@ -972,9 +934,6 b' class RepoFilesView(RepoAppView):'
972 @LoginRequired()
934 @LoginRequired()
973 @HasRepoPermissionAnyDecorator(
935 @HasRepoPermissionAnyDecorator(
974 'repository.read', 'repository.write', 'repository.admin')
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 def repo_nodelist(self):
937 def repo_nodelist(self):
979 self.load_default_context()
938 self.load_default_context()
980
939
@@ -1059,9 +1018,6 b' class RepoFilesView(RepoAppView):'
1059 @LoginRequired()
1018 @LoginRequired()
1060 @HasRepoPermissionAnyDecorator(
1019 @HasRepoPermissionAnyDecorator(
1061 'repository.read', 'repository.write', 'repository.admin')
1020 'repository.read', 'repository.write', 'repository.admin')
1062 @view_config(
1063 route_name='repo_file_history', request_method='GET',
1064 renderer='json_ext')
1065 def repo_file_history(self):
1021 def repo_file_history(self):
1066 self.load_default_context()
1022 self.load_default_context()
1067
1023
@@ -1105,9 +1061,6 b' class RepoFilesView(RepoAppView):'
1105 @LoginRequired()
1061 @LoginRequired()
1106 @HasRepoPermissionAnyDecorator(
1062 @HasRepoPermissionAnyDecorator(
1107 'repository.read', 'repository.write', 'repository.admin')
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 def repo_file_authors(self):
1064 def repo_file_authors(self):
1112 c = self.load_default_context()
1065 c = self.load_default_context()
1113
1066
@@ -1149,9 +1102,6 b' class RepoFilesView(RepoAppView):'
1149
1102
1150 @LoginRequired()
1103 @LoginRequired()
1151 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
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 def repo_files_check_head(self):
1105 def repo_files_check_head(self):
1156 self.load_default_context()
1106 self.load_default_context()
1157
1107
@@ -1186,9 +1136,6 b' class RepoFilesView(RepoAppView):'
1186
1136
1187 @LoginRequired()
1137 @LoginRequired()
1188 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
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 def repo_files_remove_file(self):
1139 def repo_files_remove_file(self):
1193 _ = self.request.translate
1140 _ = self.request.translate
1194 c = self.load_default_context()
1141 c = self.load_default_context()
@@ -1214,9 +1161,6 b' class RepoFilesView(RepoAppView):'
1214 @LoginRequired()
1161 @LoginRequired()
1215 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1162 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1216 @CSRFRequired()
1163 @CSRFRequired()
1217 @view_config(
1218 route_name='repo_files_delete_file', request_method='POST',
1219 renderer=None)
1220 def repo_files_delete_file(self):
1164 def repo_files_delete_file(self):
1221 _ = self.request.translate
1165 _ = self.request.translate
1222
1166
@@ -1266,9 +1210,6 b' class RepoFilesView(RepoAppView):'
1266
1210
1267 @LoginRequired()
1211 @LoginRequired()
1268 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
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 def repo_files_edit_file(self):
1213 def repo_files_edit_file(self):
1273 _ = self.request.translate
1214 _ = self.request.translate
1274 c = self.load_default_context()
1215 c = self.load_default_context()
@@ -1300,9 +1241,6 b' class RepoFilesView(RepoAppView):'
1300 @LoginRequired()
1241 @LoginRequired()
1301 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1242 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1302 @CSRFRequired()
1243 @CSRFRequired()
1303 @view_config(
1304 route_name='repo_files_update_file', request_method='POST',
1305 renderer=None)
1306 def repo_files_update_file(self):
1244 def repo_files_update_file(self):
1307 _ = self.request.translate
1245 _ = self.request.translate
1308 c = self.load_default_context()
1246 c = self.load_default_context()
@@ -1384,12 +1322,6 b' class RepoFilesView(RepoAppView):'
1384
1322
1385 @LoginRequired()
1323 @LoginRequired()
1386 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
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 def repo_files_add_file(self):
1325 def repo_files_add_file(self):
1394 _ = self.request.translate
1326 _ = self.request.translate
1395 c = self.load_default_context()
1327 c = self.load_default_context()
@@ -1421,9 +1353,6 b' class RepoFilesView(RepoAppView):'
1421 @LoginRequired()
1353 @LoginRequired()
1422 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1354 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1423 @CSRFRequired()
1355 @CSRFRequired()
1424 @view_config(
1425 route_name='repo_files_create_file', request_method='POST',
1426 renderer=None)
1427 def repo_files_create_file(self):
1356 def repo_files_create_file(self):
1428 _ = self.request.translate
1357 _ = self.request.translate
1429 c = self.load_default_context()
1358 c = self.load_default_context()
@@ -1518,9 +1447,6 b' class RepoFilesView(RepoAppView):'
1518 @LoginRequired()
1447 @LoginRequired()
1519 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1448 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
1520 @CSRFRequired()
1449 @CSRFRequired()
1521 @view_config(
1522 route_name='repo_files_upload_file', request_method='POST',
1523 renderer='json_ext')
1524 def repo_files_upload_file(self):
1450 def repo_files_upload_file(self):
1525 _ = self.request.translate
1451 _ = self.request.translate
1526 c = self.load_default_context()
1452 c = self.load_default_context()
@@ -24,7 +24,7 b' import formencode'
24 import formencode.htmlfill
24 import formencode.htmlfill
25
25
26 from pyramid.httpexceptions import HTTPFound
26 from pyramid.httpexceptions import HTTPFound
27 from pyramid.view import view_config
27
28 from pyramid.renderers import render
28 from pyramid.renderers import render
29 from pyramid.response import Response
29 from pyramid.response import Response
30
30
@@ -64,9 +64,6 b' class RepoForksView(RepoAppView, DataGri'
64 @LoginRequired()
64 @LoginRequired()
65 @HasRepoPermissionAnyDecorator(
65 @HasRepoPermissionAnyDecorator(
66 'repository.read', 'repository.write', 'repository.admin')
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 def repo_forks_show_all(self):
67 def repo_forks_show_all(self):
71 c = self.load_default_context()
68 c = self.load_default_context()
72 return self._get_template_context(c)
69 return self._get_template_context(c)
@@ -74,9 +71,6 b' class RepoForksView(RepoAppView, DataGri'
74 @LoginRequired()
71 @LoginRequired()
75 @HasRepoPermissionAnyDecorator(
72 @HasRepoPermissionAnyDecorator(
76 'repository.read', 'repository.write', 'repository.admin')
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 def repo_forks_data(self):
74 def repo_forks_data(self):
81 _ = self.request.translate
75 _ = self.request.translate
82 self.load_default_context()
76 self.load_default_context()
@@ -174,9 +168,6 b' class RepoForksView(RepoAppView, DataGri'
174 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
168 @HasPermissionAnyDecorator('hg.admin', 'hg.fork.repository')
175 @HasRepoPermissionAnyDecorator(
169 @HasRepoPermissionAnyDecorator(
176 'repository.read', 'repository.write', 'repository.admin')
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 def repo_fork_new(self):
171 def repo_fork_new(self):
181 c = self.load_default_context()
172 c = self.load_default_context()
182
173
@@ -204,9 +195,6 b' class RepoForksView(RepoAppView, DataGri'
204 @HasRepoPermissionAnyDecorator(
195 @HasRepoPermissionAnyDecorator(
205 'repository.read', 'repository.write', 'repository.admin')
196 'repository.read', 'repository.write', 'repository.admin')
206 @CSRFRequired()
197 @CSRFRequired()
207 @view_config(
208 route_name='repo_fork_create', request_method='POST',
209 renderer='rhodecode:templates/forks/fork.mako')
210 def repo_fork_create(self):
198 def repo_fork_create(self):
211 _ = self.request.translate
199 _ = self.request.translate
212 c = self.load_default_context()
200 c = self.load_default_context()
@@ -20,7 +20,7 b''
20
20
21 import logging
21 import logging
22
22
23 from pyramid.view import view_config
23
24
24
25 from rhodecode.apps._base import RepoAppView
25 from rhodecode.apps._base import RepoAppView
26 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
26 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator
@@ -36,9 +36,6 b' class RepoMaintenanceView(RepoAppView):'
36
36
37 @LoginRequired()
37 @LoginRequired()
38 @HasRepoPermissionAnyDecorator('repository.admin')
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 def repo_maintenance(self):
39 def repo_maintenance(self):
43 c = self.load_default_context()
40 c = self.load_default_context()
44 c.active = 'maintenance'
41 c.active = 'maintenance'
@@ -48,9 +45,6 b' class RepoMaintenanceView(RepoAppView):'
48
45
49 @LoginRequired()
46 @LoginRequired()
50 @HasRepoPermissionAnyDecorator('repository.admin')
47 @HasRepoPermissionAnyDecorator('repository.admin')
51 @view_config(
52 route_name='edit_repo_maintenance_execute', request_method='GET',
53 renderer='json', xhr=True)
54 def repo_maintenance_execute(self):
48 def repo_maintenance_execute(self):
55 c = self.load_default_context()
49 c = self.load_default_context()
56 c.active = 'maintenance'
50 c.active = 'maintenance'
@@ -21,7 +21,6 b''
21 import logging
21 import logging
22
22
23 from pyramid.httpexceptions import HTTPFound
23 from pyramid.httpexceptions import HTTPFound
24 from pyramid.view import view_config
25
24
26 from rhodecode.apps._base import RepoAppView
25 from rhodecode.apps._base import RepoAppView
27 from rhodecode.lib import helpers as h
26 from rhodecode.lib import helpers as h
@@ -46,9 +45,6 b' class RepoSettingsPermissionsView(RepoAp'
46
45
47 @LoginRequired()
46 @LoginRequired()
48 @HasRepoPermissionAnyDecorator('repository.admin')
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 def edit_permissions(self):
48 def edit_permissions(self):
53 _ = self.request.translate
49 _ = self.request.translate
54 c = self.load_default_context()
50 c = self.load_default_context()
@@ -62,9 +58,6 b' class RepoSettingsPermissionsView(RepoAp'
62 @LoginRequired()
58 @LoginRequired()
63 @HasRepoPermissionAnyDecorator('repository.admin')
59 @HasRepoPermissionAnyDecorator('repository.admin')
64 @CSRFRequired()
60 @CSRFRequired()
65 @view_config(
66 route_name='edit_repo_perms', request_method='POST',
67 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
68 def edit_permissions_update(self):
61 def edit_permissions_update(self):
69 _ = self.request.translate
62 _ = self.request.translate
70 c = self.load_default_context()
63 c = self.load_default_context()
@@ -104,9 +97,6 b' class RepoSettingsPermissionsView(RepoAp'
104 @LoginRequired()
97 @LoginRequired()
105 @HasRepoPermissionAnyDecorator('repository.admin')
98 @HasRepoPermissionAnyDecorator('repository.admin')
106 @CSRFRequired()
99 @CSRFRequired()
107 @view_config(
108 route_name='edit_repo_perms_set_private', request_method='POST',
109 renderer='json_ext')
110 def edit_permissions_set_private_repo(self):
100 def edit_permissions_set_private_repo(self):
111 _ = self.request.translate
101 _ = self.request.translate
112 self.load_default_context()
102 self.load_default_context()
@@ -26,7 +26,7 b' import formencode.htmlfill'
26 import peppercorn
26 import peppercorn
27 from pyramid.httpexceptions import (
27 from pyramid.httpexceptions import (
28 HTTPFound, HTTPNotFound, HTTPForbidden, HTTPBadRequest, HTTPConflict)
28 HTTPFound, HTTPNotFound, HTTPForbidden, HTTPBadRequest, HTTPConflict)
29 from pyramid.view import view_config
29
30 from pyramid.renderers import render
30 from pyramid.renderers import render
31
31
32 from rhodecode.apps._base import RepoAppView, DataGridAppView
32 from rhodecode.apps._base import RepoAppView, DataGridAppView
@@ -147,9 +147,6 b' class RepoPullRequestsView(RepoAppView, '
147 @LoginRequired()
147 @LoginRequired()
148 @HasRepoPermissionAnyDecorator(
148 @HasRepoPermissionAnyDecorator(
149 'repository.read', 'repository.write', 'repository.admin')
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 def pull_request_list(self):
150 def pull_request_list(self):
154 c = self.load_default_context()
151 c = self.load_default_context()
155
152
@@ -177,9 +174,6 b' class RepoPullRequestsView(RepoAppView, '
177 @LoginRequired()
174 @LoginRequired()
178 @HasRepoPermissionAnyDecorator(
175 @HasRepoPermissionAnyDecorator(
179 'repository.read', 'repository.write', 'repository.admin')
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 def pull_request_list_data(self):
177 def pull_request_list_data(self):
184 self.load_default_context()
178 self.load_default_context()
185
179
@@ -221,9 +215,13 b' class RepoPullRequestsView(RepoAppView, '
221 target_commit, source_commit, diff_limit, file_limit,
215 target_commit, source_commit, diff_limit, file_limit,
222 fulldiff, hide_whitespace_changes, diff_context, use_ancestor=True):
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 if use_ancestor:
221 if use_ancestor:
225 # we might want to not use it for versions
222 # we might want to not use it for versions
226 target_ref_id = ancestor_commit.raw_id
223 target_ref_id = ancestor_commit.raw_id
224 target_commit_final = ancestor_commit
227
225
228 vcs_diff = PullRequestModel().get_diff(
226 vcs_diff = PullRequestModel().get_diff(
229 source_repo, source_ref_id, target_ref_id,
227 source_repo, source_ref_id, target_ref_id,
@@ -238,11 +236,11 b' class RepoPullRequestsView(RepoAppView, '
238 diffset = codeblocks.DiffSet(
236 diffset = codeblocks.DiffSet(
239 repo_name=self.db_repo_name,
237 repo_name=self.db_repo_name,
240 source_repo_name=source_repo_name,
238 source_repo_name=source_repo_name,
241 source_node_getter=codeblocks.diffset_node_getter(target_commit),
239 source_node_getter=codeblocks.diffset_node_getter(target_commit_final),
242 target_node_getter=codeblocks.diffset_node_getter(source_commit),
240 target_node_getter=codeblocks.diffset_node_getter(source_commit_final),
243 )
241 )
244 diffset = self.path_filter.render_patchset_filtered(
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 return diffset
245 return diffset
248
246
@@ -307,9 +305,6 b' class RepoPullRequestsView(RepoAppView, '
307 @LoginRequired()
305 @LoginRequired()
308 @HasRepoPermissionAnyDecorator(
306 @HasRepoPermissionAnyDecorator(
309 'repository.read', 'repository.write', 'repository.admin')
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 def pull_request_show(self):
308 def pull_request_show(self):
314 _ = self.request.translate
309 _ = self.request.translate
315 c = self.load_default_context()
310 c = self.load_default_context()
@@ -838,9 +833,6 b' class RepoPullRequestsView(RepoAppView, '
838 @NotAnonymous()
833 @NotAnonymous()
839 @HasRepoPermissionAnyDecorator(
834 @HasRepoPermissionAnyDecorator(
840 'repository.read', 'repository.write', 'repository.admin')
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 def pull_request_new(self):
836 def pull_request_new(self):
845 _ = self.request.translate
837 _ = self.request.translate
846 c = self.load_default_context()
838 c = self.load_default_context()
@@ -898,9 +890,6 b' class RepoPullRequestsView(RepoAppView, '
898 @NotAnonymous()
890 @NotAnonymous()
899 @HasRepoPermissionAnyDecorator(
891 @HasRepoPermissionAnyDecorator(
900 'repository.read', 'repository.write', 'repository.admin')
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 def pull_request_repo_refs(self):
893 def pull_request_repo_refs(self):
905 self.load_default_context()
894 self.load_default_context()
906 target_repo_name = self.request.matchdict['target_repo_name']
895 target_repo_name = self.request.matchdict['target_repo_name']
@@ -921,9 +910,6 b' class RepoPullRequestsView(RepoAppView, '
921 @NotAnonymous()
910 @NotAnonymous()
922 @HasRepoPermissionAnyDecorator(
911 @HasRepoPermissionAnyDecorator(
923 'repository.read', 'repository.write', 'repository.admin')
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 def pullrequest_repo_targets(self):
913 def pullrequest_repo_targets(self):
928 _ = self.request.translate
914 _ = self.request.translate
929 filter_query = self.request.GET.get('query')
915 filter_query = self.request.GET.get('query')
@@ -994,9 +980,6 b' class RepoPullRequestsView(RepoAppView, '
994 @NotAnonymous()
980 @NotAnonymous()
995 @HasRepoPermissionAnyDecorator(
981 @HasRepoPermissionAnyDecorator(
996 'repository.read', 'repository.write', 'repository.admin')
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 def pullrequest_comments(self):
983 def pullrequest_comments(self):
1001 self.load_default_context()
984 self.load_default_context()
1002
985
@@ -1034,9 +1017,6 b' class RepoPullRequestsView(RepoAppView, '
1034 @NotAnonymous()
1017 @NotAnonymous()
1035 @HasRepoPermissionAnyDecorator(
1018 @HasRepoPermissionAnyDecorator(
1036 'repository.read', 'repository.write', 'repository.admin')
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 def pullrequest_todos(self):
1020 def pullrequest_todos(self):
1041 self.load_default_context()
1021 self.load_default_context()
1042
1022
@@ -1076,9 +1056,6 b' class RepoPullRequestsView(RepoAppView, '
1076 @NotAnonymous()
1056 @NotAnonymous()
1077 @HasRepoPermissionAnyDecorator(
1057 @HasRepoPermissionAnyDecorator(
1078 'repository.read', 'repository.write', 'repository.admin')
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 def pullrequest_drafts(self):
1059 def pullrequest_drafts(self):
1083 self.load_default_context()
1060 self.load_default_context()
1084
1061
@@ -1119,9 +1096,6 b' class RepoPullRequestsView(RepoAppView, '
1119 @HasRepoPermissionAnyDecorator(
1096 @HasRepoPermissionAnyDecorator(
1120 'repository.read', 'repository.write', 'repository.admin')
1097 'repository.read', 'repository.write', 'repository.admin')
1121 @CSRFRequired()
1098 @CSRFRequired()
1122 @view_config(
1123 route_name='pullrequest_create', request_method='POST',
1124 renderer=None)
1125 def pull_request_create(self):
1099 def pull_request_create(self):
1126 _ = self.request.translate
1100 _ = self.request.translate
1127 self.assure_not_empty_repo()
1101 self.assure_not_empty_repo()
@@ -1277,9 +1251,6 b' class RepoPullRequestsView(RepoAppView, '
1277 @HasRepoPermissionAnyDecorator(
1251 @HasRepoPermissionAnyDecorator(
1278 'repository.read', 'repository.write', 'repository.admin')
1252 'repository.read', 'repository.write', 'repository.admin')
1279 @CSRFRequired()
1253 @CSRFRequired()
1280 @view_config(
1281 route_name='pullrequest_update', request_method='POST',
1282 renderer='json_ext')
1283 def pull_request_update(self):
1254 def pull_request_update(self):
1284 pull_request = PullRequest.get_or_404(
1255 pull_request = PullRequest.get_or_404(
1285 self.request.matchdict['pull_request_id'])
1256 self.request.matchdict['pull_request_id'])
@@ -1461,9 +1432,6 b' class RepoPullRequestsView(RepoAppView, '
1461 @HasRepoPermissionAnyDecorator(
1432 @HasRepoPermissionAnyDecorator(
1462 'repository.read', 'repository.write', 'repository.admin')
1433 'repository.read', 'repository.write', 'repository.admin')
1463 @CSRFRequired()
1434 @CSRFRequired()
1464 @view_config(
1465 route_name='pullrequest_merge', request_method='POST',
1466 renderer='json_ext')
1467 def pull_request_merge(self):
1435 def pull_request_merge(self):
1468 """
1436 """
1469 Merge will perform a server-side merge of the specified
1437 Merge will perform a server-side merge of the specified
@@ -1537,9 +1505,6 b' class RepoPullRequestsView(RepoAppView, '
1537 @HasRepoPermissionAnyDecorator(
1505 @HasRepoPermissionAnyDecorator(
1538 'repository.read', 'repository.write', 'repository.admin')
1506 'repository.read', 'repository.write', 'repository.admin')
1539 @CSRFRequired()
1507 @CSRFRequired()
1540 @view_config(
1541 route_name='pullrequest_delete', request_method='POST',
1542 renderer='json_ext')
1543 def pull_request_delete(self):
1508 def pull_request_delete(self):
1544 _ = self.request.translate
1509 _ = self.request.translate
1545
1510
@@ -1715,9 +1680,6 b' class RepoPullRequestsView(RepoAppView, '
1715 @HasRepoPermissionAnyDecorator(
1680 @HasRepoPermissionAnyDecorator(
1716 'repository.read', 'repository.write', 'repository.admin')
1681 'repository.read', 'repository.write', 'repository.admin')
1717 @CSRFRequired()
1682 @CSRFRequired()
1718 @view_config(
1719 route_name='pullrequest_comment_create', request_method='POST',
1720 renderer='json_ext')
1721 def pull_request_comment_create(self):
1683 def pull_request_comment_create(self):
1722 _ = self.request.translate
1684 _ = self.request.translate
1723
1685
@@ -1752,9 +1714,6 b' class RepoPullRequestsView(RepoAppView, '
1752 @HasRepoPermissionAnyDecorator(
1714 @HasRepoPermissionAnyDecorator(
1753 'repository.read', 'repository.write', 'repository.admin')
1715 'repository.read', 'repository.write', 'repository.admin')
1754 @CSRFRequired()
1716 @CSRFRequired()
1755 @view_config(
1756 route_name='pullrequest_comment_delete', request_method='POST',
1757 renderer='json_ext')
1758 def pull_request_comment_delete(self):
1717 def pull_request_comment_delete(self):
1759 pull_request = PullRequest.get_or_404(
1718 pull_request = PullRequest.get_or_404(
1760 self.request.matchdict['pull_request_id'])
1719 self.request.matchdict['pull_request_id'])
@@ -1806,9 +1765,6 b' class RepoPullRequestsView(RepoAppView, '
1806 @HasRepoPermissionAnyDecorator(
1765 @HasRepoPermissionAnyDecorator(
1807 'repository.read', 'repository.write', 'repository.admin')
1766 'repository.read', 'repository.write', 'repository.admin')
1808 @CSRFRequired()
1767 @CSRFRequired()
1809 @view_config(
1810 route_name='pullrequest_comment_edit', request_method='POST',
1811 renderer='json_ext')
1812 def pull_request_comment_edit(self):
1768 def pull_request_comment_edit(self):
1813 self.load_default_context()
1769 self.load_default_context()
1814
1770
@@ -20,7 +20,7 b''
20
20
21 import logging
21 import logging
22
22
23 from pyramid.view import view_config
23
24
24
25 from rhodecode.apps._base import RepoAppView
25 from rhodecode.apps._base import RepoAppView
26 from rhodecode.apps.repository.utils import get_default_reviewers_data
26 from rhodecode.apps.repository.utils import get_default_reviewers_data
@@ -38,9 +38,6 b' class RepoReviewRulesView(RepoAppView):'
38
38
39 @LoginRequired()
39 @LoginRequired()
40 @HasRepoPermissionAnyDecorator('repository.admin')
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 def repo_review_rules(self):
41 def repo_review_rules(self):
45 c = self.load_default_context()
42 c = self.load_default_context()
46 c.active = 'reviewers'
43 c.active = 'reviewers'
@@ -50,9 +47,6 b' class RepoReviewRulesView(RepoAppView):'
50 @LoginRequired()
47 @LoginRequired()
51 @HasRepoPermissionAnyDecorator(
48 @HasRepoPermissionAnyDecorator(
52 'repository.read', 'repository.write', 'repository.admin')
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 def repo_default_reviewers_data(self):
50 def repo_default_reviewers_data(self):
57 self.load_default_context()
51 self.load_default_context()
58
52
@@ -22,7 +22,6 b' import logging'
22
22
23 import deform
23 import deform
24 from pyramid.httpexceptions import HTTPFound
24 from pyramid.httpexceptions import HTTPFound
25 from pyramid.view import view_config
26
25
27 from rhodecode import events
26 from rhodecode import events
28 from rhodecode.apps._base import RepoAppView
27 from rhodecode.apps._base import RepoAppView
@@ -90,9 +89,6 b' class RepoSettingsView(RepoAppView):'
90
89
91 @LoginRequired()
90 @LoginRequired()
92 @HasRepoPermissionAnyDecorator('repository.admin')
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 def edit_settings(self):
92 def edit_settings(self):
97 c = self.load_default_context()
93 c = self.load_default_context()
98 c.active = 'settings'
94 c.active = 'settings'
@@ -108,9 +104,6 b' class RepoSettingsView(RepoAppView):'
108 @LoginRequired()
104 @LoginRequired()
109 @HasRepoPermissionAnyDecorator('repository.admin')
105 @HasRepoPermissionAnyDecorator('repository.admin')
110 @CSRFRequired()
106 @CSRFRequired()
111 @view_config(
112 route_name='edit_repo', request_method='POST',
113 renderer='rhodecode:templates/admin/repos/repo_edit.mako')
114 def edit_settings_update(self):
107 def edit_settings_update(self):
115 _ = self.request.translate
108 _ = self.request.translate
116 c = self.load_default_context()
109 c = self.load_default_context()
@@ -192,9 +185,6 b' class RepoSettingsView(RepoAppView):'
192
185
193 @LoginRequired()
186 @LoginRequired()
194 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin')
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 def toggle_locking(self):
188 def toggle_locking(self):
199 """
189 """
200 Toggle locking of repository by simple GET call to url
190 Toggle locking of repository by simple GET call to url
@@ -224,9 +214,6 b' class RepoSettingsView(RepoAppView):'
224
214
225 @LoginRequired()
215 @LoginRequired()
226 @HasRepoPermissionAnyDecorator('repository.admin')
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 def edit_statistics_form(self):
217 def edit_statistics_form(self):
231 c = self.load_default_context()
218 c = self.load_default_context()
232
219
@@ -250,9 +237,6 b' class RepoSettingsView(RepoAppView):'
250 @LoginRequired()
237 @LoginRequired()
251 @HasRepoPermissionAnyDecorator('repository.admin')
238 @HasRepoPermissionAnyDecorator('repository.admin')
252 @CSRFRequired()
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 def repo_statistics_reset(self):
240 def repo_statistics_reset(self):
257 _ = self.request.translate
241 _ = self.request.translate
258
242
@@ -20,7 +20,7 b''
20
20
21 import logging
21 import logging
22
22
23 from pyramid.view import view_config
23
24 from pyramid.httpexceptions import HTTPFound
24 from pyramid.httpexceptions import HTTPFound
25 from packaging.version import Version
25 from packaging.version import Version
26
26
@@ -42,7 +42,7 b' from rhodecode.model.scm import ScmModel'
42 log = logging.getLogger(__name__)
42 log = logging.getLogger(__name__)
43
43
44
44
45 class RepoSettingsView(RepoAppView):
45 class RepoSettingsAdvancedView(RepoAppView):
46
46
47 def load_default_context(self):
47 def load_default_context(self):
48 c = self._get_local_tmpl_context()
48 c = self._get_local_tmpl_context()
@@ -57,9 +57,6 b' class RepoSettingsView(RepoAppView):'
57
57
58 @LoginRequired()
58 @LoginRequired()
59 @HasRepoPermissionAnyDecorator('repository.admin')
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 def edit_advanced(self):
60 def edit_advanced(self):
64 _ = self.request.translate
61 _ = self.request.translate
65 c = self.load_default_context()
62 c = self.load_default_context()
@@ -89,9 +86,6 b' class RepoSettingsView(RepoAppView):'
89 @LoginRequired()
86 @LoginRequired()
90 @HasRepoPermissionAnyDecorator('repository.admin')
87 @HasRepoPermissionAnyDecorator('repository.admin')
91 @CSRFRequired()
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 def edit_advanced_archive(self):
89 def edit_advanced_archive(self):
96 """
90 """
97 Archives the repository. It will become read-only, and not visible in search
91 Archives the repository. It will become read-only, and not visible in search
@@ -132,9 +126,6 b' class RepoSettingsView(RepoAppView):'
132 @LoginRequired()
126 @LoginRequired()
133 @HasRepoPermissionAnyDecorator('repository.admin')
127 @HasRepoPermissionAnyDecorator('repository.admin')
134 @CSRFRequired()
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 def edit_advanced_delete(self):
129 def edit_advanced_delete(self):
139 """
130 """
140 Deletes the repository, or shows warnings if deletion is not possible
131 Deletes the repository, or shows warnings if deletion is not possible
@@ -209,9 +200,6 b' class RepoSettingsView(RepoAppView):'
209 @LoginRequired()
200 @LoginRequired()
210 @HasRepoPermissionAnyDecorator('repository.admin')
201 @HasRepoPermissionAnyDecorator('repository.admin')
211 @CSRFRequired()
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 def edit_advanced_journal(self):
203 def edit_advanced_journal(self):
216 """
204 """
217 Set's this repository to be visible in public journal,
205 Set's this repository to be visible in public journal,
@@ -236,9 +224,6 b' class RepoSettingsView(RepoAppView):'
236 @LoginRequired()
224 @LoginRequired()
237 @HasRepoPermissionAnyDecorator('repository.admin')
225 @HasRepoPermissionAnyDecorator('repository.admin')
238 @CSRFRequired()
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 def edit_advanced_fork(self):
227 def edit_advanced_fork(self):
243 """
228 """
244 Mark given repository as a fork of another
229 Mark given repository as a fork of another
@@ -281,10 +266,7 b' class RepoSettingsView(RepoAppView):'
281 @LoginRequired()
266 @LoginRequired()
282 @HasRepoPermissionAnyDecorator('repository.admin')
267 @HasRepoPermissionAnyDecorator('repository.admin')
283 @CSRFRequired()
268 @CSRFRequired()
284 @view_config(
269 def edit_advanced_toggle_locking(self):
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):
288 """
270 """
289 Toggle locking of repository
271 Toggle locking of repository
290 """
272 """
@@ -309,9 +291,6 b' class RepoSettingsView(RepoAppView):'
309
291
310 @LoginRequired()
292 @LoginRequired()
311 @HasRepoPermissionAnyDecorator('repository.admin')
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 def edit_advanced_install_hooks(self):
294 def edit_advanced_install_hooks(self):
316 """
295 """
317 Install Hooks for repository
296 Install Hooks for repository
@@ -24,7 +24,6 b' import formencode'
24 import formencode.htmlfill
24 import formencode.htmlfill
25
25
26 from pyramid.httpexceptions import HTTPFound
26 from pyramid.httpexceptions import HTTPFound
27 from pyramid.view import view_config
28
27
29 from rhodecode.apps._base import RepoAppView
28 from rhodecode.apps._base import RepoAppView
30 from rhodecode.lib import audit_logger
29 from rhodecode.lib import audit_logger
@@ -48,9 +47,6 b' class RepoSettingsFieldsView(RepoAppView'
48
47
49 @LoginRequired()
48 @LoginRequired()
50 @HasRepoPermissionAnyDecorator('repository.admin')
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 def repo_field_edit(self):
50 def repo_field_edit(self):
55 c = self.load_default_context()
51 c = self.load_default_context()
56
52
@@ -63,9 +59,6 b' class RepoSettingsFieldsView(RepoAppView'
63 @LoginRequired()
59 @LoginRequired()
64 @HasRepoPermissionAnyDecorator('repository.admin')
60 @HasRepoPermissionAnyDecorator('repository.admin')
65 @CSRFRequired()
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 def repo_field_create(self):
62 def repo_field_create(self):
70 _ = self.request.translate
63 _ = self.request.translate
71
64
@@ -94,9 +87,6 b' class RepoSettingsFieldsView(RepoAppView'
94 @LoginRequired()
87 @LoginRequired()
95 @HasRepoPermissionAnyDecorator('repository.admin')
88 @HasRepoPermissionAnyDecorator('repository.admin')
96 @CSRFRequired()
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 def repo_field_delete(self):
90 def repo_field_delete(self):
101 _ = self.request.translate
91 _ = self.request.translate
102 field = RepositoryField.get_or_404(self.request.matchdict['field_id'])
92 field = RepositoryField.get_or_404(self.request.matchdict['field_id'])
@@ -21,7 +21,7 b''
21 import logging
21 import logging
22
22
23 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
23 from pyramid.httpexceptions import HTTPFound, HTTPNotFound
24 from pyramid.view import view_config
24
25 import formencode
25 import formencode
26
26
27 from rhodecode.apps._base import RepoAppView
27 from rhodecode.apps._base import RepoAppView
@@ -45,9 +45,6 b' class RepoSettingsIssueTrackersView(Repo'
45
45
46 @LoginRequired()
46 @LoginRequired()
47 @HasRepoPermissionAnyDecorator('repository.admin')
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 def repo_issuetracker(self):
48 def repo_issuetracker(self):
52 c = self.load_default_context()
49 c = self.load_default_context()
53 c.active = 'issuetracker'
50 c.active = 'issuetracker'
@@ -62,9 +59,6 b' class RepoSettingsIssueTrackersView(Repo'
62 @LoginRequired()
59 @LoginRequired()
63 @HasRepoPermissionAnyDecorator('repository.admin')
60 @HasRepoPermissionAnyDecorator('repository.admin')
64 @CSRFRequired()
61 @CSRFRequired()
65 @view_config(
66 route_name='edit_repo_issuetracker_test', request_method='POST',
67 renderer='string', xhr=True)
68 def repo_issuetracker_test(self):
62 def repo_issuetracker_test(self):
69 return h.urlify_commit_message(
63 return h.urlify_commit_message(
70 self.request.POST.get('test_text', ''),
64 self.request.POST.get('test_text', ''),
@@ -73,9 +67,6 b' class RepoSettingsIssueTrackersView(Repo'
73 @LoginRequired()
67 @LoginRequired()
74 @HasRepoPermissionAnyDecorator('repository.admin')
68 @HasRepoPermissionAnyDecorator('repository.admin')
75 @CSRFRequired()
69 @CSRFRequired()
76 @view_config(
77 route_name='edit_repo_issuetracker_delete', request_method='POST',
78 renderer='json_ext', xhr=True)
79 def repo_issuetracker_delete(self):
70 def repo_issuetracker_delete(self):
80 _ = self.request.translate
71 _ = self.request.translate
81 uid = self.request.POST.get('uid')
72 uid = self.request.POST.get('uid')
@@ -107,9 +98,6 b' class RepoSettingsIssueTrackersView(Repo'
107 @LoginRequired()
98 @LoginRequired()
108 @HasRepoPermissionAnyDecorator('repository.admin')
99 @HasRepoPermissionAnyDecorator('repository.admin')
109 @CSRFRequired()
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 def repo_issuetracker_update(self):
101 def repo_issuetracker_update(self):
114 _ = self.request.translate
102 _ = self.request.translate
115 # Save inheritance
103 # Save inheritance
@@ -21,7 +21,7 b''
21 import logging
21 import logging
22
22
23 from pyramid.httpexceptions import HTTPFound
23 from pyramid.httpexceptions import HTTPFound
24 from pyramid.view import view_config
24
25
25
26 from rhodecode.apps._base import RepoAppView
26 from rhodecode.apps._base import RepoAppView
27 from rhodecode.lib import helpers as h
27 from rhodecode.lib import helpers as h
@@ -39,9 +39,6 b' class RepoSettingsRemoteView(RepoAppView'
39
39
40 @LoginRequired()
40 @LoginRequired()
41 @HasRepoPermissionAnyDecorator('repository.admin')
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 def repo_remote_edit_form(self):
42 def repo_remote_edit_form(self):
46 c = self.load_default_context()
43 c = self.load_default_context()
47 c.active = 'remote'
44 c.active = 'remote'
@@ -51,9 +48,6 b' class RepoSettingsRemoteView(RepoAppView'
51 @LoginRequired()
48 @LoginRequired()
52 @HasRepoPermissionAnyDecorator('repository.admin')
49 @HasRepoPermissionAnyDecorator('repository.admin')
53 @CSRFRequired()
50 @CSRFRequired()
54 @view_config(
55 route_name='edit_repo_remote_pull', request_method='POST',
56 renderer=None)
57 def repo_remote_pull_changes(self):
51 def repo_remote_pull_changes(self):
58 _ = self.request.translate
52 _ = self.request.translate
59 self.load_default_context()
53 self.load_default_context()
@@ -25,10 +25,8 b' import formencode.htmlfill'
25 from pyramid.httpexceptions import HTTPFound, HTTPBadRequest
25 from pyramid.httpexceptions import HTTPFound, HTTPBadRequest
26 from pyramid.response import Response
26 from pyramid.response import Response
27 from pyramid.renderers import render
27 from pyramid.renderers import render
28 from pyramid.view import view_config
29
28
30 from rhodecode.apps._base import RepoAppView
29 from rhodecode.apps._base import RepoAppView
31 from rhodecode.lib import audit_logger
32 from rhodecode.lib import helpers as h
30 from rhodecode.lib import helpers as h
33 from rhodecode.lib.auth import (
31 from rhodecode.lib.auth import (
34 LoginRequired, HasRepoPermissionAnyDecorator, CSRFRequired)
32 LoginRequired, HasRepoPermissionAnyDecorator, CSRFRequired)
@@ -71,9 +69,6 b' class RepoSettingsVcsView(RepoAppView):'
71
69
72 @LoginRequired()
70 @LoginRequired()
73 @HasRepoPermissionAnyDecorator('repository.admin')
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 def repo_vcs_settings(self):
72 def repo_vcs_settings(self):
78 c = self.load_default_context()
73 c = self.load_default_context()
79 model = VcsSettingsModel(repo=self.db_repo_name)
74 model = VcsSettingsModel(repo=self.db_repo_name)
@@ -100,9 +95,6 b' class RepoSettingsVcsView(RepoAppView):'
100 @LoginRequired()
95 @LoginRequired()
101 @HasRepoPermissionAnyDecorator('repository.admin')
96 @HasRepoPermissionAnyDecorator('repository.admin')
102 @CSRFRequired()
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 def repo_settings_vcs_update(self):
98 def repo_settings_vcs_update(self):
107 _ = self.request.translate
99 _ = self.request.translate
108 c = self.load_default_context()
100 c = self.load_default_context()
@@ -153,9 +145,6 b' class RepoSettingsVcsView(RepoAppView):'
153 @LoginRequired()
145 @LoginRequired()
154 @HasRepoPermissionAnyDecorator('repository.admin')
146 @HasRepoPermissionAnyDecorator('repository.admin')
155 @CSRFRequired()
147 @CSRFRequired()
156 @view_config(
157 route_name='edit_repo_vcs_svn_pattern_delete', request_method='POST',
158 renderer='json_ext', xhr=True)
159 def repo_settings_delete_svn_pattern(self):
148 def repo_settings_delete_svn_pattern(self):
160 self.load_default_context()
149 self.load_default_context()
161 delete_pattern_id = self.request.POST.get('delete_svn_pattern')
150 delete_pattern_id = self.request.POST.get('delete_svn_pattern')
@@ -19,7 +19,7 b''
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20
21 import logging
21 import logging
22 from pyramid.view import view_config
22
23
23
24 from rhodecode.apps._base import RepoAppView
24 from rhodecode.apps._base import RepoAppView
25 from rhodecode.lib import audit_logger
25 from rhodecode.lib import audit_logger
@@ -31,7 +31,7 b' from rhodecode.lib.ext_json import json'
31 log = logging.getLogger(__name__)
31 log = logging.getLogger(__name__)
32
32
33
33
34 class StripView(RepoAppView):
34 class RepoStripView(RepoAppView):
35 def load_default_context(self):
35 def load_default_context(self):
36 c = self._get_local_tmpl_context()
36 c = self._get_local_tmpl_context()
37
37
@@ -40,9 +40,6 b' class StripView(RepoAppView):'
40
40
41 @LoginRequired()
41 @LoginRequired()
42 @HasRepoPermissionAnyDecorator('repository.admin')
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 def strip(self):
43 def strip(self):
47 c = self.load_default_context()
44 c = self.load_default_context()
48 c.active = 'strip'
45 c.active = 'strip'
@@ -53,9 +50,6 b' class StripView(RepoAppView):'
53 @LoginRequired()
50 @LoginRequired()
54 @HasRepoPermissionAnyDecorator('repository.admin')
51 @HasRepoPermissionAnyDecorator('repository.admin')
55 @CSRFRequired()
52 @CSRFRequired()
56 @view_config(
57 route_name='strip_check', request_method='POST',
58 renderer='json', xhr=True)
59 def strip_check(self):
53 def strip_check(self):
60 from rhodecode.lib.vcs.backends.base import EmptyCommit
54 from rhodecode.lib.vcs.backends.base import EmptyCommit
61 data = {}
55 data = {}
@@ -79,9 +73,6 b' class StripView(RepoAppView):'
79 @LoginRequired()
73 @LoginRequired()
80 @HasRepoPermissionAnyDecorator('repository.admin')
74 @HasRepoPermissionAnyDecorator('repository.admin')
81 @CSRFRequired()
75 @CSRFRequired()
82 @view_config(
83 route_name='strip_execute', request_method='POST',
84 renderer='json', xhr=True)
85 def strip_execute(self):
76 def strip_execute(self):
86 from rhodecode.model.scm import ScmModel
77 from rhodecode.model.scm import ScmModel
87
78
@@ -24,7 +24,7 b' import time'
24
24
25 import rhodecode
25 import rhodecode
26
26
27 from pyramid.view import view_config
27
28
28
29 from rhodecode.lib.view_utils import get_format_ref_id
29 from rhodecode.lib.view_utils import get_format_ref_id
30 from rhodecode.apps._base import RepoAppView
30 from rhodecode.apps._base import RepoAppView
@@ -101,9 +101,6 b' class RepoSummaryView(RepoAppView):'
101 @LoginRequired()
101 @LoginRequired()
102 @HasRepoPermissionAnyDecorator(
102 @HasRepoPermissionAnyDecorator(
103 'repository.read', 'repository.write', 'repository.admin')
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 def summary_commits(self):
104 def summary_commits(self):
108 c = self.load_default_context()
105 c = self.load_default_context()
109 self._prepare_and_set_clone_url(c)
106 self._prepare_and_set_clone_url(c)
@@ -113,15 +110,6 b' class RepoSummaryView(RepoAppView):'
113 @LoginRequired()
110 @LoginRequired()
114 @HasRepoPermissionAnyDecorator(
111 @HasRepoPermissionAnyDecorator(
115 'repository.read', 'repository.write', 'repository.admin')
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 def summary(self):
113 def summary(self):
126 c = self.load_default_context()
114 c = self.load_default_context()
127
115
@@ -176,9 +164,6 b' class RepoSummaryView(RepoAppView):'
176 @LoginRequired()
164 @LoginRequired()
177 @HasRepoPermissionAnyDecorator(
165 @HasRepoPermissionAnyDecorator(
178 'repository.read', 'repository.write', 'repository.admin')
166 'repository.read', 'repository.write', 'repository.admin')
179 @view_config(
180 route_name='repo_stats', request_method='GET',
181 renderer='json_ext')
182 def repo_stats(self):
167 def repo_stats(self):
183 show_stats = bool(self.db_repo.enable_statistics)
168 show_stats = bool(self.db_repo.enable_statistics)
184 repo_id = self.db_repo.repo_id
169 repo_id = self.db_repo.repo_id
@@ -228,9 +213,6 b' class RepoSummaryView(RepoAppView):'
228 @LoginRequired()
213 @LoginRequired()
229 @HasRepoPermissionAnyDecorator(
214 @HasRepoPermissionAnyDecorator(
230 'repository.read', 'repository.write', 'repository.admin')
215 'repository.read', 'repository.write', 'repository.admin')
231 @view_config(
232 route_name='repo_refs_data', request_method='GET',
233 renderer='json_ext')
234 def repo_refs_data(self):
216 def repo_refs_data(self):
235 _ = self.request.translate
217 _ = self.request.translate
236 self.load_default_context()
218 self.load_default_context()
@@ -251,9 +233,6 b' class RepoSummaryView(RepoAppView):'
251 @LoginRequired()
233 @LoginRequired()
252 @HasRepoPermissionAnyDecorator(
234 @HasRepoPermissionAnyDecorator(
253 'repository.read', 'repository.write', 'repository.admin')
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 def repo_refs_changelog_data(self):
236 def repo_refs_changelog_data(self):
258 _ = self.request.translate
237 _ = self.request.translate
259 self.load_default_context()
238 self.load_default_context()
@@ -19,7 +19,6 b''
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20
20
21 import logging
21 import logging
22 from pyramid.view import view_config
23
22
24 from rhodecode.apps._base import BaseReferencesView
23 from rhodecode.apps._base import BaseReferencesView
25 from rhodecode.lib.ext_json import json
24 from rhodecode.lib.ext_json import json
@@ -33,9 +32,6 b' class RepoTagsView(BaseReferencesView):'
33 @LoginRequired()
32 @LoginRequired()
34 @HasRepoPermissionAnyDecorator(
33 @HasRepoPermissionAnyDecorator(
35 'repository.read', 'repository.write', 'repository.admin')
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 def tags(self):
35 def tags(self):
40 c = self.load_default_context()
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 def includeme(config):
23 def includeme(config):
24 from rhodecode.apps.search.views import (
25 SearchView, SearchRepoView, SearchRepoGroupView)
24
26
25 config.add_route(
27 config.add_route(
26 name='search',
28 name='search',
27 pattern=ADMIN_PREFIX + '/search')
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 config.add_route(
36 config.add_route(
30 name='search_repo',
37 name='search_repo',
31 pattern='/{repo_name:.*?[^/]}/_search', repo_route=True)
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 config.add_route(
45 config.add_route(
34 name='search_repo_alt',
46 name='search_repo_alt',
35 pattern='/{repo_name:.*?[^/]}/search', repo_route=True)
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 config.add_route(
54 config.add_route(
38 name='search_repo_group',
55 name='search_repo_group',
39 pattern='/{repo_group_name:.*?[^/]}/_search',
56 pattern='/{repo_group_name:.*?[^/]}/_search',
40 repo_group_route=True)
57 repo_group_route=True)
41
58 config.add_view(
42 # Scan module for configuration decorators.
59 SearchRepoGroupView,
43 config.scan('.views', ignore='.tests')
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 import logging
21 import logging
22 import urllib
22 import urllib
23 from pyramid.view import view_config
23
24 from webhelpers2.html.tools import update_params
24 from webhelpers2.html.tools import update_params
25
25
26 from rhodecode.apps._base import BaseAppView, RepoAppView, RepoGroupAppView
26 from rhodecode.apps._base import BaseAppView, RepoAppView, RepoGroupAppView
@@ -130,9 +130,6 b' class SearchView(BaseAppView):'
130 return c
130 return c
131
131
132 @LoginRequired()
132 @LoginRequired()
133 @view_config(
134 route_name='search', request_method='GET',
135 renderer='rhodecode:templates/search/search.mako')
136 def search(self):
133 def search(self):
137 c = self.load_default_context()
134 c = self.load_default_context()
138 perform_search(self.request, c)
135 perform_search(self.request, c)
@@ -148,12 +145,6 b' class SearchRepoView(RepoAppView):'
148 @LoginRequired()
145 @LoginRequired()
149 @HasRepoPermissionAnyDecorator(
146 @HasRepoPermissionAnyDecorator(
150 'repository.read', 'repository.write', 'repository.admin')
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 def search_repo(self):
148 def search_repo(self):
158 c = self.load_default_context()
149 c = self.load_default_context()
159 perform_search(self.request, c, repo_name=self.db_repo_name)
150 perform_search(self.request, c, repo_name=self.db_repo_name)
@@ -169,9 +160,6 b' class SearchRepoGroupView(RepoGroupAppVi'
169 @LoginRequired()
160 @LoginRequired()
170 @HasRepoGroupPermissionAnyDecorator(
161 @HasRepoGroupPermissionAnyDecorator(
171 'group.read', 'group.write', 'group.admin')
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 def search_repo_group(self):
163 def search_repo_group(self):
176 c = self.load_default_context()
164 c = self.load_default_context()
177 perform_search(self.request, c, repo_group_name=self.db_repo_group_name)
165 perform_search(self.request, c, repo_group_name=self.db_repo_group_name)
@@ -37,25 +37,6 b' from . import config_keys'
37 log = logging.getLogger(__name__)
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 def _sanitize_settings_and_apply_defaults(settings):
40 def _sanitize_settings_and_apply_defaults(settings):
60 """
41 """
61 Set defaults, convert to python types and validate settings.
42 Set defaults, convert to python types and validate settings.
@@ -88,3 +69,22 b' def _append_path_sep(path):'
88 if isinstance(path, compat.string_types) and not path.endswith(os.path.sep):
69 if isinstance(path, compat.string_types) and not path.endswith(os.path.sep):
89 path += os.path.sep
70 path += os.path.sep
90 return path
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 User groups /_admin prefixed routes
29 User groups /_admin prefixed routes
30 """
30 """
31 from rhodecode.apps.user_group.views import UserGroupsView
31
32
32 config.add_route(
33 config.add_route(
33 name='user_group_members_data',
34 name='user_group_members_data',
34 pattern='/user_groups/{user_group_id:\d+}/members',
35 pattern='/user_groups/{user_group_id:\d+}/members',
35 user_group_route=True)
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 # user groups perms
43 # user groups perms
38 config.add_route(
44 config.add_route(
39 name='edit_user_group_perms_summary',
45 name='edit_user_group_perms_summary',
40 pattern='/user_groups/{user_group_id:\d+}/edit/permissions_summary',
46 pattern='/user_groups/{user_group_id:\d+}/edit/permissions_summary',
41 user_group_route=True)
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 config.add_route(
54 config.add_route(
43 name='edit_user_group_perms_summary_json',
55 name='edit_user_group_perms_summary_json',
44 pattern='/user_groups/{user_group_id:\d+}/edit/permissions_summary/json',
56 pattern='/user_groups/{user_group_id:\d+}/edit/permissions_summary/json',
45 user_group_route=True)
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 # user groups edit
64 # user groups edit
48 config.add_route(
65 config.add_route(
49 name='edit_user_group',
66 name='edit_user_group',
50 pattern='/user_groups/{user_group_id:\d+}/edit',
67 pattern='/user_groups/{user_group_id:\d+}/edit',
51 user_group_route=True)
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 # user groups update
75 # user groups update
54 config.add_route(
76 config.add_route(
55 name='user_groups_update',
77 name='user_groups_update',
56 pattern='/user_groups/{user_group_id:\d+}/update',
78 pattern='/user_groups/{user_group_id:\d+}/update',
57 user_group_route=True)
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 config.add_route(
86 config.add_route(
60 name='edit_user_group_global_perms',
87 name='edit_user_group_global_perms',
61 pattern='/user_groups/{user_group_id:\d+}/edit/global_permissions',
88 pattern='/user_groups/{user_group_id:\d+}/edit/global_permissions',
62 user_group_route=True)
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 config.add_route(
96 config.add_route(
65 name='edit_user_group_global_perms_update',
97 name='edit_user_group_global_perms_update',
66 pattern='/user_groups/{user_group_id:\d+}/edit/global_permissions/update',
98 pattern='/user_groups/{user_group_id:\d+}/edit/global_permissions/update',
67 user_group_route=True)
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 config.add_route(
106 config.add_route(
70 name='edit_user_group_perms',
107 name='edit_user_group_perms',
71 pattern='/user_groups/{user_group_id:\d+}/edit/permissions',
108 pattern='/user_groups/{user_group_id:\d+}/edit/permissions',
72 user_group_route=True)
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 config.add_route(
116 config.add_route(
75 name='edit_user_group_perms_update',
117 name='edit_user_group_perms_update',
76 pattern='/user_groups/{user_group_id:\d+}/edit/permissions/update',
118 pattern='/user_groups/{user_group_id:\d+}/edit/permissions/update',
77 user_group_route=True)
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 config.add_route(
126 config.add_route(
80 name='edit_user_group_advanced',
127 name='edit_user_group_advanced',
81 pattern='/user_groups/{user_group_id:\d+}/edit/advanced',
128 pattern='/user_groups/{user_group_id:\d+}/edit/advanced',
82 user_group_route=True)
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 config.add_route(
136 config.add_route(
85 name='edit_user_group_advanced_sync',
137 name='edit_user_group_advanced_sync',
86 pattern='/user_groups/{user_group_id:\d+}/edit/advanced/sync',
138 pattern='/user_groups/{user_group_id:\d+}/edit/advanced/sync',
87 user_group_route=True)
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 # user groups delete
146 # user groups delete
90 config.add_route(
147 config.add_route(
91 name='user_groups_delete',
148 name='user_groups_delete',
92 pattern='/user_groups/{user_group_id:\d+}/delete',
149 pattern='/user_groups/{user_group_id:\d+}/delete',
93 user_group_route=True)
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 def includeme(config):
158 def includeme(config):
97 # main admin routes
159 # main admin routes
98 config.include(admin_routes, route_prefix=ADMIN_PREFIX)
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 import formencode
24 import formencode
25 import formencode.htmlfill
25 import formencode.htmlfill
26 from pyramid.httpexceptions import HTTPFound
26 from pyramid.httpexceptions import HTTPFound
27 from pyramid.view import view_config
27
28 from pyramid.response import Response
28 from pyramid.response import Response
29 from pyramid.renderers import render
29 from pyramid.renderers import render
30
30
@@ -60,9 +60,6 b' class UserGroupsView(UserGroupAppView):'
60
60
61 @LoginRequired()
61 @LoginRequired()
62 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
62 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
63 @view_config(
64 route_name='user_group_members_data', request_method='GET',
65 renderer='json_ext', xhr=True)
66 def user_group_members(self):
63 def user_group_members(self):
67 """
64 """
68 Return members of given user group
65 Return members of given user group
@@ -93,9 +90,6 b' class UserGroupsView(UserGroupAppView):'
93
90
94 @LoginRequired()
91 @LoginRequired()
95 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
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 def user_group_perms_summary(self):
93 def user_group_perms_summary(self):
100 c = self.load_default_context()
94 c = self.load_default_context()
101 c.user_group = self.db_user_group
95 c.user_group = self.db_user_group
@@ -106,9 +100,6 b' class UserGroupsView(UserGroupAppView):'
106
100
107 @LoginRequired()
101 @LoginRequired()
108 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
102 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
109 @view_config(
110 route_name='edit_user_group_perms_summary_json', request_method='GET',
111 renderer='json_ext')
112 def user_group_perms_summary_json(self):
103 def user_group_perms_summary_json(self):
113 self.load_default_context()
104 self.load_default_context()
114 user_group = self.db_user_group
105 user_group = self.db_user_group
@@ -131,9 +122,6 b' class UserGroupsView(UserGroupAppView):'
131 @LoginRequired()
122 @LoginRequired()
132 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
123 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
133 @CSRFRequired()
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 def user_group_update(self):
125 def user_group_update(self):
138 _ = self.request.translate
126 _ = self.request.translate
139
127
@@ -230,9 +218,6 b' class UserGroupsView(UserGroupAppView):'
230 @LoginRequired()
218 @LoginRequired()
231 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
219 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
232 @CSRFRequired()
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 def user_group_delete(self):
221 def user_group_delete(self):
237 _ = self.request.translate
222 _ = self.request.translate
238 user_group = self.db_user_group
223 user_group = self.db_user_group
@@ -258,9 +243,6 b' class UserGroupsView(UserGroupAppView):'
258
243
259 @LoginRequired()
244 @LoginRequired()
260 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
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 def user_group_edit(self):
246 def user_group_edit(self):
265 user_group = self.db_user_group
247 user_group = self.db_user_group
266
248
@@ -293,9 +275,6 b' class UserGroupsView(UserGroupAppView):'
293
275
294 @LoginRequired()
276 @LoginRequired()
295 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
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 def user_group_edit_perms(self):
278 def user_group_edit_perms(self):
300 user_group = self.db_user_group
279 user_group = self.db_user_group
301 c = self.load_default_context()
280 c = self.load_default_context()
@@ -326,9 +305,6 b' class UserGroupsView(UserGroupAppView):'
326 @LoginRequired()
305 @LoginRequired()
327 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
306 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
328 @CSRFRequired()
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 def user_group_update_perms(self):
308 def user_group_update_perms(self):
333 """
309 """
334 grant permission for given user group
310 grant permission for given user group
@@ -390,9 +366,6 b' class UserGroupsView(UserGroupAppView):'
390
366
391 @LoginRequired()
367 @LoginRequired()
392 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
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 def user_group_global_perms_edit(self):
369 def user_group_global_perms_edit(self):
397 user_group = self.db_user_group
370 user_group = self.db_user_group
398 c = self.load_default_context()
371 c = self.load_default_context()
@@ -418,9 +391,6 b' class UserGroupsView(UserGroupAppView):'
418 @LoginRequired()
391 @LoginRequired()
419 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
392 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
420 @CSRFRequired()
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 def user_group_global_perms_update(self):
394 def user_group_global_perms_update(self):
425 _ = self.request.translate
395 _ = self.request.translate
426 user_group = self.db_user_group
396 user_group = self.db_user_group
@@ -485,9 +455,6 b' class UserGroupsView(UserGroupAppView):'
485
455
486 @LoginRequired()
456 @LoginRequired()
487 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
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 def user_group_edit_advanced(self):
458 def user_group_edit_advanced(self):
492 user_group = self.db_user_group
459 user_group = self.db_user_group
493
460
@@ -515,9 +482,6 b' class UserGroupsView(UserGroupAppView):'
515 @LoginRequired()
482 @LoginRequired()
516 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
483 @HasUserGroupPermissionAnyDecorator('usergroup.admin')
517 @CSRFRequired()
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 def user_group_edit_advanced_set_synchronization(self):
485 def user_group_edit_advanced_set_synchronization(self):
522 _ = self.request.translate
486 _ = self.request.translate
523 user_group = self.db_user_group
487 user_group = self.db_user_group
@@ -20,8 +20,13 b''
20
20
21
21
22 def includeme(config):
22 def includeme(config):
23 from rhodecode.apps.user_group_profile.views import UserGroupProfileView
24
23 config.add_route(
25 config.add_route(
24 name='user_group_profile',
26 name='user_group_profile',
25 pattern='/_profile_user_group/{user_group_name}')
27 pattern='/_profile_user_group/{user_group_name}')
26 # Scan module for configuration decorators.
28 config.add_view(
27 config.scan('.views', ignore='.tests')
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 import logging
21 import logging
22
22
23 from pyramid.httpexceptions import HTTPNotFound
23 from pyramid.httpexceptions import HTTPNotFound
24 from pyramid.view import view_config
24
25
25
26 from rhodecode.apps._base import BaseAppView
26 from rhodecode.apps._base import BaseAppView
27 from rhodecode.lib.auth import HasUserGroupPermissionAnyDecorator, LoginRequired, NotAnonymous
27 from rhodecode.lib.auth import HasUserGroupPermissionAnyDecorator, LoginRequired, NotAnonymous
@@ -36,9 +36,6 b' class UserGroupProfileView(BaseAppView):'
36 @LoginRequired()
36 @LoginRequired()
37 @NotAnonymous()
37 @NotAnonymous()
38 @HasUserGroupPermissionAnyDecorator('usergroup.read', 'usergroup.write', 'usergroup.admin',)
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 def user_group_profile(self):
39 def user_group_profile(self):
43 c = self._get_local_tmpl_context()
40 c = self._get_local_tmpl_context()
44 c.active = 'profile'
41 c.active = 'profile'
@@ -20,9 +20,13 b''
20
20
21
21
22 def includeme(config):
22 def includeme(config):
23 from rhodecode.apps.user_profile.views import UserProfileView
24
23 config.add_route(
25 config.add_route(
24 name='user_profile',
26 name='user_profile',
25 pattern='/_profiles/{username}')
27 pattern='/_profiles/{username}')
26
28 config.add_view(
27 # Scan module for configuration decorators.
29 UserProfileView,
28 config.scan('.views', ignore='.tests')
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 import logging
21 import logging
22
22
23 from pyramid.httpexceptions import HTTPNotFound
23 from pyramid.httpexceptions import HTTPNotFound
24 from pyramid.view import view_config
25
24
26 from rhodecode.apps._base import BaseAppView
25 from rhodecode.apps._base import BaseAppView
27 from rhodecode.lib.auth import LoginRequired, NotAnonymous
26 from rhodecode.lib.auth import LoginRequired, NotAnonymous
@@ -36,9 +35,6 b' class UserProfileView(BaseAppView):'
36
35
37 @LoginRequired()
36 @LoginRequired()
38 @NotAnonymous()
37 @NotAnonymous()
39 @view_config(
40 route_name='user_profile', request_method='GET',
41 renderer='rhodecode:templates/users/user.mako')
42 def user_profile(self):
38 def user_profile(self):
43 # register local template context
39 # register local template context
44 c = self._get_local_tmpl_context()
40 c = self._get_local_tmpl_context()
@@ -20,7 +20,7 b''
20
20
21 def generate_jsroutes_content(jsroutes):
21 def generate_jsroutes_content(jsroutes):
22 statements = []
22 statements = []
23 for url_name, url, fields in jsroutes:
23 for url_name, url, fields in sorted(jsroutes):
24 statements.append(
24 statements.append(
25 "pyroutes.register('%s', '%s', %s);" % (url_name, url, fields))
25 "pyroutes.register('%s', '%s', %s);" % (url_name, url, fields))
26 return u'''
26 return u'''
@@ -92,6 +92,7 b' def make_pyramid_app(global_config, **se'
92 # Allows to use format style "{ENV_NAME}" placeholders in the configuration. It
92 # Allows to use format style "{ENV_NAME}" placeholders in the configuration. It
93 # will be replaced by the value of the environment variable "NAME" in this case.
93 # will be replaced by the value of the environment variable "NAME" in this case.
94 start_time = time.time()
94 start_time = time.time()
95 log.info('Pyramid app config starting')
95
96
96 debug = asbool(global_config.get('debug'))
97 debug = asbool(global_config.get('debug'))
97 if debug:
98 if debug:
@@ -121,6 +122,7 b' def make_pyramid_app(global_config, **se'
121 pyramid_app.config = config
122 pyramid_app.config = config
122
123
123 config.configure_celery(global_config['__file__'])
124 config.configure_celery(global_config['__file__'])
125
124 # creating the app uses a connection - return it after we are done
126 # creating the app uses a connection - return it after we are done
125 meta.Session.remove()
127 meta.Session.remove()
126 total_time = time.time() - start_time
128 total_time = time.time() - start_time
@@ -234,7 +236,7 b' def includeme_first(config):'
234 '_static/rhodecode', path='rhodecode:public', cache_max_age=3600 * 24)
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 log.debug('Initializing main includeme from %s', os.path.basename(__file__))
240 log.debug('Initializing main includeme from %s', os.path.basename(__file__))
239 settings = config.registry.settings
241 settings = config.registry.settings
240 config.set_request_factory(Request)
242 config.set_request_factory(Request)
@@ -256,24 +258,29 b' def includeme(config):'
256 config.include('pyramid_mako')
258 config.include('pyramid_mako')
257 config.include('rhodecode.lib.rc_beaker')
259 config.include('rhodecode.lib.rc_beaker')
258 config.include('rhodecode.lib.rc_cache')
260 config.include('rhodecode.lib.rc_cache')
259
260 config.include('rhodecode.apps._base.navigation')
261 config.include('rhodecode.apps._base.navigation')
261 config.include('rhodecode.apps._base.subscribers')
262 config.include('rhodecode.apps._base.subscribers')
262 config.include('rhodecode.tweens')
263 config.include('rhodecode.tweens')
263 config.include('rhodecode.authentication')
264 config.include('rhodecode.authentication')
264
265
265 if load_all:
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 # load CE authentication plugins
277 # load CE authentication plugins
270 config.include('rhodecode.authentication.plugins.auth_crowd')
278
271 config.include('rhodecode.authentication.plugins.auth_headers')
279 if auth_resources:
272 config.include('rhodecode.authentication.plugins.auth_jasig_cas')
280 ce_auth_resources.extend(auth_resources)
273 config.include('rhodecode.authentication.plugins.auth_ldap')
281
274 config.include('rhodecode.authentication.plugins.auth_pam')
282 for resource in ce_auth_resources:
275 config.include('rhodecode.authentication.plugins.auth_rhodecode')
283 config.include(resource)
276 config.include('rhodecode.authentication.plugins.auth_token')
277
284
278 # Auto discover authentication plugins and include their configuration.
285 # Auto discover authentication plugins and include their configuration.
279 if asbool(settings.get('auth_plugin.import_legacy_plugins', 'true')):
286 if asbool(settings.get('auth_plugin.import_legacy_plugins', 'true')):
@@ -282,15 +289,17 b' def includeme(config):'
282
289
283 # apps
290 # apps
284 if load_all:
291 if load_all:
292 config.include('rhodecode.api')
285 config.include('rhodecode.apps._base')
293 config.include('rhodecode.apps._base')
286 config.include('rhodecode.apps.hovercards')
294 config.include('rhodecode.apps.hovercards')
287 config.include('rhodecode.apps.ops')
295 config.include('rhodecode.apps.ops')
288 config.include('rhodecode.apps.admin')
289 config.include('rhodecode.apps.channelstream')
296 config.include('rhodecode.apps.channelstream')
290 config.include('rhodecode.apps.file_store')
297 config.include('rhodecode.apps.file_store')
298 config.include('rhodecode.apps.admin')
291 config.include('rhodecode.apps.login')
299 config.include('rhodecode.apps.login')
292 config.include('rhodecode.apps.home')
300 config.include('rhodecode.apps.home')
293 config.include('rhodecode.apps.journal')
301 config.include('rhodecode.apps.journal')
302
294 config.include('rhodecode.apps.repository')
303 config.include('rhodecode.apps.repository')
295 config.include('rhodecode.apps.repo_group')
304 config.include('rhodecode.apps.repo_group')
296 config.include('rhodecode.apps.user_group')
305 config.include('rhodecode.apps.user_group')
@@ -298,11 +307,14 b' def includeme(config):'
298 config.include('rhodecode.apps.user_profile')
307 config.include('rhodecode.apps.user_profile')
299 config.include('rhodecode.apps.user_group_profile')
308 config.include('rhodecode.apps.user_group_profile')
300 config.include('rhodecode.apps.my_account')
309 config.include('rhodecode.apps.my_account')
310 config.include('rhodecode.apps.gist')
311
301 config.include('rhodecode.apps.svn_support')
312 config.include('rhodecode.apps.svn_support')
302 config.include('rhodecode.apps.ssh_support')
313 config.include('rhodecode.apps.ssh_support')
303 config.include('rhodecode.apps.gist')
304 config.include('rhodecode.apps.debug_style')
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 config.add_route('rhodecode_support', 'https://rhodecode.com/help/', static=True)
319 config.add_route('rhodecode_support', 'https://rhodecode.com/help/', static=True)
308 config.add_translation_dirs('rhodecode:i18n/')
320 config.add_translation_dirs('rhodecode:i18n/')
@@ -46,7 +46,7 b' def _pre_push_hook(*args, **kwargs):'
46 # e.g store a list of patterns to be forbidden e.g `*.exe, *.dump`
46 # e.g store a list of patterns to be forbidden e.g `*.exe, *.dump`
47 forbid_files = extra_fields.get_field(repo_extra_fields, key='forbid_files_glob',
47 forbid_files = extra_fields.get_field(repo_extra_fields, key='forbid_files_glob',
48 convert_type=False, default=[])
48 convert_type=False, default=[])
49 forbid_files = aslist(forbid_files)
49 forbid_files = aslist(forbid_files, sep=',')
50
50
51 # forbid_files = ['*'] # example pattern
51 # forbid_files = ['*'] # example pattern
52
52
@@ -37,6 +37,7 b' from rhodecode.lib.vcs.backends.git.diff'
37 def get_svn_files(repo, vcs_repo, refs):
37 def get_svn_files(repo, vcs_repo, refs):
38 txn_id = refs[0]
38 txn_id = refs[0]
39 files = []
39 files = []
40
40 stdout, stderr = vcs_repo.run_svn_command(
41 stdout, stderr = vcs_repo.run_svn_command(
41 ['svnlook', 'changed', repo.repo_full_path, '--transaction', txn_id])
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 parsed_entry['operation'] = rc_op
64 parsed_entry['operation'] = rc_op
64
65
65 if rc_op in ['A', 'M']:
66 if rc_op in ['A', 'M']:
67
66 stdout, stderr = vcs_repo.run_svn_command(
68 stdout, stderr = vcs_repo.run_svn_command(
67 ['svnlook', 'filesize', repo.repo_full_path, path, '--transaction', txn_id])
69 ['svnlook', 'filesize', repo.repo_full_path, path, '--transaction', txn_id],
68 file_size = int(stdout.strip())
70 _safe=True
69 parsed_entry['file_size'] = file_size
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 files.append(parsed_entry)
79 files.append(parsed_entry)
72
80
@@ -20,29 +20,9 b' import logging'
20 from pyramid.threadlocal import get_current_registry
20 from pyramid.threadlocal import get_current_registry
21 from rhodecode.events.base import RhodeCodeIntegrationEvent
21 from rhodecode.events.base import RhodeCodeIntegrationEvent
22
22
23
23 from rhodecode.events.base import ( # pragma: no cover
24 log = logging.getLogger(__name__)
24 FtsBuild
25
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
46
26
47 from rhodecode.events.user import ( # pragma: no cover
27 from rhodecode.events.user import ( # pragma: no cover
48 UserPreCreate,
28 UserPreCreate,
@@ -78,3 +58,26 b' from rhodecode.events.pullrequest import'
78 PullRequestMergeEvent,
58 PullRequestMergeEvent,
79 PullRequestCloseEvent,
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 Special subclass for Integration events
120 Special subclass for Integration events
121 """
121 """
122 description = ''
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 #, fuzzy
6 #, fuzzy
7 msgid ""
7 msgid ""
8 msgstr ""
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 "Report-Msgid-Bugs-To: marcin@rhodecode.com\n"
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 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14 "Language-Team: LANGUAGE <LL@li.org>\n"
14 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,9 +18,7 b' msgstr ""'
18 "Generated-By: Babel 1.3\n"
18 "Generated-By: Babel 1.3\n"
19
19
20 #: rhodecode/api/views/pull_request_api.py:646
20 #: rhodecode/api/views/pull_request_api.py:646
21 #: rhodecode/api/views/repo_api.py:1685
21 #: rhodecode/api/views/repo_api.py:1686
22 #: rhodecode/apps/repository/views/repo_commits.py:471
23 #: rhodecode/apps/repository/views/repo_pull_requests.py:1658
24 msgid "posted a new {} comment"
22 msgid "posted a new {} comment"
25 msgstr ""
23 msgstr ""
26
24
@@ -63,9 +61,9 b' msgstr ""'
63 #: rhodecode/templates/admin/integrations/list.mako:172
61 #: rhodecode/templates/admin/integrations/list.mako:172
64 #: rhodecode/templates/admin/my_account/my_account_profile.mako:7
62 #: rhodecode/templates/admin/my_account/my_account_profile.mako:7
65 #: rhodecode/templates/base/issue_tracker_settings.mako:138
63 #: rhodecode/templates/base/issue_tracker_settings.mako:138
66 #: rhodecode/templates/changeset/changeset_file_comment.mako:213
64 #: rhodecode/templates/changeset/changeset_file_comment.mako:233
67 #: rhodecode/templates/changeset/changeset_file_comment.mako:221
65 #: rhodecode/templates/changeset/changeset_file_comment.mako:247
68 #: rhodecode/templates/changeset/changeset_file_comment.mako:230
66 #: rhodecode/templates/changeset/changeset_file_comment.mako:256
69 #: rhodecode/templates/data_table/_dt_elements.mako:173
67 #: rhodecode/templates/data_table/_dt_elements.mako:173
70 #: rhodecode/templates/data_table/_dt_elements.mako:251
68 #: rhodecode/templates/data_table/_dt_elements.mako:251
71 #: rhodecode/templates/data_table/_dt_elements.mako:266
69 #: rhodecode/templates/data_table/_dt_elements.mako:266
@@ -76,9 +74,9 b' msgstr ""'
76 #: rhodecode/templates/files/files_edit.mako:57
74 #: rhodecode/templates/files/files_edit.mako:57
77 #: rhodecode/templates/files/files_source.mako:39
75 #: rhodecode/templates/files/files_source.mako:39
78 #: rhodecode/templates/files/files_source.mako:52
76 #: rhodecode/templates/files/files_source.mako:52
79 #: rhodecode/templates/pullrequests/pullrequest_show.mako:83
77 #: rhodecode/templates/pullrequests/pullrequest_show.mako:81
80 #: rhodecode/templates/pullrequests/pullrequest_show.mako:588
78 #: rhodecode/templates/pullrequests/pullrequest_show.mako:622
81 #: rhodecode/templates/pullrequests/pullrequest_show.mako:645
79 #: rhodecode/templates/pullrequests/pullrequest_show.mako:679
82 #: rhodecode/templates/user_group/profile.mako:8
80 #: rhodecode/templates/user_group/profile.mako:8
83 #: rhodecode/templates/users/user_profile.mako:8
81 #: rhodecode/templates/users/user_profile.mako:8
84 msgid "Edit"
82 msgid "Edit"
@@ -377,200 +375,200 b' msgstr ""'
377 msgid "Error occurred during creation of user %s"
375 msgid "Error occurred during creation of user %s"
378 msgstr ""
376 msgstr ""
379
377
380 #: rhodecode/apps/admin/views/users.py:345
378 #: rhodecode/apps/admin/views/users.py:349
381 msgid "User updated successfully"
379 msgid "User updated successfully"
382 msgstr ""
380 msgstr ""
383
381
384 #: rhodecode/apps/admin/views/users.py:363
382 #: rhodecode/apps/admin/views/users.py:367
385 #, python-format
383 #, python-format
386 msgid "Error occurred during update of user %s"
384 msgid "Error occurred during update of user %s"
387 msgstr ""
385 msgstr ""
388
386
389 #: rhodecode/apps/admin/views/users.py:394
387 #: rhodecode/apps/admin/views/users.py:398
390 #, python-format
388 #, python-format
391 msgid "Detached %s repositories"
389 msgid "Detached %s repositories"
392 msgstr ""
390 msgstr ""
393
391
394 #: rhodecode/apps/admin/views/users.py:397
392 #: rhodecode/apps/admin/views/users.py:401
395 #, python-format
393 #, python-format
396 msgid "Deleted %s repositories"
394 msgid "Deleted %s repositories"
397 msgstr ""
395 msgstr ""
398
396
399 #: rhodecode/apps/admin/views/users.py:403
397 #: rhodecode/apps/admin/views/users.py:407
400 #, python-format
398 #, python-format
401 msgid "Detached %s repository groups"
399 msgid "Detached %s repository groups"
402 msgstr ""
400 msgstr ""
403
401
404 #: rhodecode/apps/admin/views/users.py:406
402 #: rhodecode/apps/admin/views/users.py:410
405 #, python-format
403 #, python-format
406 msgid "Deleted %s repository groups"
404 msgid "Deleted %s repository groups"
407 msgstr ""
405 msgstr ""
408
406
409 #: rhodecode/apps/admin/views/users.py:412
407 #: rhodecode/apps/admin/views/users.py:416
410 #, python-format
408 #, python-format
411 msgid "Detached %s user groups"
409 msgid "Detached %s user groups"
412 msgstr ""
410 msgstr ""
413
411
414 #: rhodecode/apps/admin/views/users.py:415
412 #: rhodecode/apps/admin/views/users.py:419
415 #, python-format
413 #, python-format
416 msgid "Deleted %s user groups"
414 msgid "Deleted %s user groups"
417 msgstr ""
415 msgstr ""
418
416
419 #: rhodecode/apps/admin/views/users.py:421
417 #: rhodecode/apps/admin/views/users.py:425
420 #, python-format
418 #, python-format
421 msgid "Detached %s pull requests"
419 msgid "Detached %s pull requests"
422 msgstr ""
420 msgstr ""
423
421
424 #: rhodecode/apps/admin/views/users.py:424
422 #: rhodecode/apps/admin/views/users.py:428
425 #, python-format
423 #, python-format
426 msgid "Deleted %s pull requests"
424 msgid "Deleted %s pull requests"
427 msgstr ""
425 msgstr ""
428
426
429 #: rhodecode/apps/admin/views/users.py:430
427 #: rhodecode/apps/admin/views/users.py:434
430 #, python-format
428 #, python-format
431 msgid "Detached %s artifacts"
429 msgid "Detached %s artifacts"
432 msgstr ""
430 msgstr ""
433
431
434 #: rhodecode/apps/admin/views/users.py:433
432 #: rhodecode/apps/admin/views/users.py:437
435 #, python-format
433 #, python-format
436 msgid "Deleted %s artifacts"
434 msgid "Deleted %s artifacts"
437 msgstr ""
435 msgstr ""
438
436
439 #: rhodecode/apps/admin/views/users.py:482
437 #: rhodecode/apps/admin/views/users.py:486
440 msgid "Successfully deleted user `{}`"
438 msgid "Successfully deleted user `{}`"
441 msgstr ""
439 msgstr ""
442
440
443 #: rhodecode/apps/admin/views/users.py:489
441 #: rhodecode/apps/admin/views/users.py:493
444 msgid "An error occurred during deletion of user"
442 msgid "An error occurred during deletion of user"
445 msgstr ""
443 msgstr ""
446
444
447 #: rhodecode/apps/admin/views/users.py:558
445 #: rhodecode/apps/admin/views/users.py:562
448 msgid ""
446 msgid ""
449 "The user participates as reviewer in {} pull request and cannot be deleted. \n"
447 "The user participates as reviewer in {} pull request and cannot be deleted. \n"
450 "You can set the user to \"{}\" instead of deleting it."
448 "You can set the user to \"{}\" instead of deleting it."
451 msgstr ""
449 msgstr ""
452
450
453 #: rhodecode/apps/admin/views/users.py:564
451 #: rhodecode/apps/admin/views/users.py:568
454 msgid ""
452 msgid ""
455 "The user participates as reviewer in {} pull requests and cannot be deleted. \n"
453 "The user participates as reviewer in {} pull requests and cannot be deleted. \n"
456 "You can set the user to \"{}\" instead of deleting it."
454 "You can set the user to \"{}\" instead of deleting it."
457 msgstr ""
455 msgstr ""
458
456
459 #: rhodecode/apps/admin/views/users.py:653
457 #: rhodecode/apps/admin/views/users.py:657
460 msgid "User global permissions updated successfully"
458 msgid "User global permissions updated successfully"
461 msgstr ""
459 msgstr ""
462
460
463 #: rhodecode/apps/admin/views/users.py:671
461 #: rhodecode/apps/admin/views/users.py:675
464 #: rhodecode/apps/user_group/views/__init__.py:479
462 #: rhodecode/apps/user_group/views/__init__.py:479
465 msgid "An error occurred during permissions saving"
463 msgid "An error occurred during permissions saving"
466 msgstr ""
464 msgstr ""
467
465
468 #: rhodecode/apps/admin/views/users.py:694
466 #: rhodecode/apps/admin/views/users.py:698
469 msgid "Force password change enabled for user"
467 msgid "Force password change enabled for user"
470 msgstr ""
468 msgstr ""
471
469
472 #: rhodecode/apps/admin/views/users.py:702
470 #: rhodecode/apps/admin/views/users.py:706
473 #: rhodecode/apps/admin/views/users.py:732
471 #: rhodecode/apps/admin/views/users.py:736
474 msgid "An error occurred during password reset for user"
472 msgid "An error occurred during password reset for user"
475 msgstr ""
473 msgstr ""
476
474
477 #: rhodecode/apps/admin/views/users.py:723
475 #: rhodecode/apps/admin/views/users.py:727
478 msgid "Force password change disabled for user"
476 msgid "Force password change disabled for user"
479 msgstr ""
477 msgstr ""
480
478
481 #: rhodecode/apps/admin/views/users.py:796
479 #: rhodecode/apps/admin/views/users.py:800
482 #, python-format
480 #, python-format
483 msgid "Linked repository group `%s` as personal"
481 msgid "Linked repository group `%s` as personal"
484 msgstr ""
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 #: rhodecode/apps/admin/views/users.py:806
484 #: rhodecode/apps/admin/views/users.py:806
492 #, python-format
485 #, python-format
486 msgid "Created repository group `%s`"
487 msgstr ""
488
489 #: rhodecode/apps/admin/views/users.py:810
490 #, python-format
493 msgid "Repository group `%s` is already taken"
491 msgid "Repository group `%s` is already taken"
494 msgstr ""
492 msgstr ""
495
493
496 #: rhodecode/apps/admin/views/users.py:811
494 #: rhodecode/apps/admin/views/users.py:815
497 msgid "An error occurred during repository group creation for user"
495 msgid "An error occurred during repository group creation for user"
498 msgstr ""
496 msgstr ""
499
497
500 #: rhodecode/apps/admin/views/users.py:834
498 #: rhodecode/apps/admin/views/users.py:838
501 #: rhodecode/apps/my_account/views/my_account.py:161
499 #: rhodecode/apps/my_account/views/my_account.py:161
502 #: rhodecode/templates/admin/my_account/my_account_auth_tokens.mako:28
500 #: rhodecode/templates/admin/my_account/my_account_auth_tokens.mako:28
503 #: rhodecode/templates/admin/users/user_edit_auth_tokens.mako:33
501 #: rhodecode/templates/admin/users/user_edit_auth_tokens.mako:33
504 msgid "Role"
502 msgid "Role"
505 msgstr ""
503 msgstr ""
506
504
507 #: rhodecode/apps/admin/views/users.py:892
505 #: rhodecode/apps/admin/views/users.py:896
508 #: rhodecode/apps/my_account/views/my_account.py:217
506 #: rhodecode/apps/my_account/views/my_account.py:217
509 msgid "Auth token successfully created"
507 msgid "Auth token successfully created"
510 msgstr ""
508 msgstr ""
511
509
512 #: rhodecode/apps/admin/views/users.py:921
510 #: rhodecode/apps/admin/views/users.py:925
513 #: rhodecode/apps/my_account/views/my_account.py:241
511 #: rhodecode/apps/my_account/views/my_account.py:241
514 msgid "Auth token successfully deleted"
512 msgid "Auth token successfully deleted"
515 msgstr ""
513 msgstr ""
516
514
517 #: rhodecode/apps/admin/views/users.py:997
515 #: rhodecode/apps/admin/views/users.py:1001
518 #: rhodecode/apps/my_account/views/my_account_ssh_keys.py:117
516 #: rhodecode/apps/my_account/views/my_account_ssh_keys.py:117
519 msgid "Ssh Key successfully created"
517 msgid "Ssh Key successfully created"
520 msgstr ""
518 msgstr ""
521
519
522 #: rhodecode/apps/admin/views/users.py:1003
523 #: rhodecode/apps/admin/views/users.py:1007
520 #: rhodecode/apps/admin/views/users.py:1007
521 #: rhodecode/apps/admin/views/users.py:1011
524 #: rhodecode/apps/my_account/views/my_account_ssh_keys.py:123
522 #: rhodecode/apps/my_account/views/my_account_ssh_keys.py:123
525 #: rhodecode/apps/my_account/views/my_account_ssh_keys.py:127
523 #: rhodecode/apps/my_account/views/my_account_ssh_keys.py:127
526 msgid "An error occurred during ssh key saving: {}"
524 msgid "An error occurred during ssh key saving: {}"
527 msgstr ""
525 msgstr ""
528
526
529 #: rhodecode/apps/admin/views/users.py:1041
527 #: rhodecode/apps/admin/views/users.py:1045
530 #: rhodecode/apps/my_account/views/my_account_ssh_keys.py:157
528 #: rhodecode/apps/my_account/views/my_account_ssh_keys.py:157
531 msgid "Ssh key successfully deleted"
529 msgid "Ssh key successfully deleted"
532 msgstr ""
530 msgstr ""
533
531
534 #: rhodecode/apps/admin/views/users.py:1087
532 #: rhodecode/apps/admin/views/users.py:1091
535 #, python-format
533 #, python-format
536 msgid "Added new email address `%s` for user account"
534 msgid "Added new email address `%s` for user account"
537 msgstr ""
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 #: rhodecode/apps/admin/views/users.py:1097
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 msgid "An error occurred during email saving"
542 msgid "An error occurred during email saving"
545 msgstr ""
543 msgstr ""
546
544
547 #: rhodecode/apps/admin/views/users.py:1124
545 #: rhodecode/apps/admin/views/users.py:1128
548 msgid "Removed email address from user account"
546 msgid "Removed email address from user account"
549 msgstr ""
547 msgstr ""
550
548
551 #: rhodecode/apps/admin/views/users.py:1170
549 #: rhodecode/apps/admin/views/users.py:1174
552 #, python-format
550 #, python-format
553 msgid "An error occurred during ip saving:%s"
551 msgid "An error occurred during ip saving:%s"
554 msgstr ""
552 msgstr ""
555
553
556 #: rhodecode/apps/admin/views/users.py:1192
557 msgid "An error occurred during ip saving"
558 msgstr ""
559
560 #: rhodecode/apps/admin/views/users.py:1196
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 #, python-format
559 #, python-format
562 msgid "Added ips %s to user whitelist"
560 msgid "Added ips %s to user whitelist"
563 msgstr ""
561 msgstr ""
564
562
565 #: rhodecode/apps/admin/views/users.py:1226
563 #: rhodecode/apps/admin/views/users.py:1230
566 msgid "Removed ip address from user whitelist"
564 msgid "Removed ip address from user whitelist"
567 msgstr ""
565 msgstr ""
568
566
569 #: rhodecode/apps/admin/views/users.py:1291
567 #: rhodecode/apps/admin/views/users.py:1295
570 msgid "Groups successfully changed"
568 msgid "Groups successfully changed"
571 msgstr ""
569 msgstr ""
572
570
573 #: rhodecode/apps/admin/views/users.py:1411
571 #: rhodecode/apps/admin/views/users.py:1415
574 msgid "Deleted {} cache keys"
572 msgid "Deleted {} cache keys"
575 msgstr ""
573 msgstr ""
576
574
@@ -649,7 +647,7 b' msgid "Error occurred during update of g'
649 msgstr ""
647 msgstr ""
650
648
651 #: rhodecode/apps/home/views.py:453
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 #: rhodecode/templates/admin/repo_groups/repo_group_edit_permissions.mako:219
651 #: rhodecode/templates/admin/repo_groups/repo_group_edit_permissions.mako:219
654 #: rhodecode/templates/admin/repos/repo_add.mako:15
652 #: rhodecode/templates/admin/repos/repo_add.mako:15
655 #: rhodecode/templates/admin/repos/repo_add.mako:19
653 #: rhodecode/templates/admin/repos/repo_add.mako:19
@@ -736,11 +734,11 b' msgstr ""'
736 msgid "Failed to update bookmarks. Make sure an unique position is used."
734 msgid "Failed to update bookmarks. Make sure an unique position is used."
737 msgstr ""
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 msgid "Your account was updated successfully"
738 msgid "Your account was updated successfully"
741 msgstr ""
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 msgid "Error occurred during update of user"
742 msgid "Error occurred during update of user"
745 msgstr ""
743 msgstr ""
746
744
@@ -787,7 +785,7 b' msgstr ""'
787
785
788 #: rhodecode/apps/repository/views/repo_changelog.py:66
786 #: rhodecode/apps/repository/views/repo_changelog.py:66
789 #: rhodecode/apps/repository/views/repo_compare.py:64
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 msgid "There are no commits yet"
789 msgid "There are no commits yet"
792 msgstr ""
790 msgstr ""
793
791
@@ -811,20 +809,30 b' msgstr ""'
811 msgid "Created repository %s"
809 msgid "Created repository %s"
812 msgstr ""
810 msgstr ""
813
811
814 #: rhodecode/apps/repository/views/repo_commits.py:112
812 #: rhodecode/apps/repository/views/repo_commits.py:113
815 msgid "No such commit exists. Org exception: `{}`"
813 msgid "No such commit exists. Org exception: `{}`"
816 msgstr ""
814 msgstr ""
817
815
818 #: rhodecode/apps/repository/views/repo_commits.py:388
816 #: rhodecode/apps/repository/views/repo_commits.py:404
819 #: rhodecode/apps/repository/views/repo_pull_requests.py:1582
817 #: rhodecode/apps/repository/views/repo_pull_requests.py:1620
820 #, python-format
818 #, python-format
821 msgid "Status change %(transition_icon)s %(status)s"
819 msgid "Status change %(transition_icon)s %(status)s"
822 msgstr ""
820 msgstr ""
823
821
824 #: rhodecode/apps/repository/views/repo_commits.py:434
822 #: rhodecode/apps/repository/views/repo_commits.py:442
825 msgid "Changing the status of a commit associated with a closed pull request is not allowed"
823 msgid "Changing the status of a commit associated with a closed pull request is not allowed"
826 msgstr ""
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 #: rhodecode/apps/repository/views/repo_compare.py:102
836 #: rhodecode/apps/repository/views/repo_compare.py:102
829 msgid "Select commit"
837 msgid "Select commit"
830 msgstr ""
838 msgstr ""
@@ -886,104 +894,104 b' msgstr ""'
886 msgid "No such commit exists for this repository. Commit: {}"
894 msgid "No such commit exists for this repository. Commit: {}"
887 msgstr ""
895 msgstr ""
888
896
889 #: rhodecode/apps/repository/views/repo_files.py:345
897 #: rhodecode/apps/repository/views/repo_files.py:361
890 msgid "Downloads disabled"
898 msgid "Downloads disabled"
891 msgstr ""
899 msgstr ""
892
900
893 #: rhodecode/apps/repository/views/repo_files.py:351
901 #: rhodecode/apps/repository/views/repo_files.py:367
894 msgid "Unknown archive type for: `{}`"
902 msgid "Unknown archive type for: `{}`"
895 msgstr ""
903 msgstr ""
896
904
897 #: rhodecode/apps/repository/views/repo_files.py:357
905 #: rhodecode/apps/repository/views/repo_files.py:373
898 msgid "Unknown commit_id {}"
906 msgid "Unknown commit_id {}"
899 msgstr ""
907 msgstr ""
900
908
901 #: rhodecode/apps/repository/views/repo_files.py:360
909 #: rhodecode/apps/repository/views/repo_files.py:376
902 msgid "Empty repository"
910 msgid "Empty repository"
903 msgstr ""
911 msgstr ""
904
912
905 #: rhodecode/apps/repository/views/repo_files.py:365
913 #: rhodecode/apps/repository/views/repo_files.py:381
906 msgid "No node at path {} for this repository"
914 msgid "No node at path {} for this repository"
907 msgstr ""
915 msgstr ""
908
916
909 #: rhodecode/apps/repository/views/repo_files.py:414
917 #: rhodecode/apps/repository/views/repo_files.py:432
910 msgid "Unknown archive type"
918 msgid "Unknown archive type"
911 msgstr ""
919 msgstr ""
912
920
913 #: rhodecode/apps/repository/views/repo_files.py:1010
921 #: rhodecode/apps/repository/views/repo_files.py:1027
914 msgid "Changesets"
922 msgid "Changesets"
915 msgstr ""
923 msgstr ""
916
924
917 #: rhodecode/apps/repository/views/repo_files.py:1031
925 #: rhodecode/apps/repository/views/repo_files.py:1048
918 #: rhodecode/apps/repository/views/repo_summary.py:264
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 #: rhodecode/templates/base/vcs_settings.mako:235
928 #: rhodecode/templates/base/vcs_settings.mako:235
921 #: rhodecode/templates/summary/components.mako:10
929 #: rhodecode/templates/summary/components.mako:10
922 msgid "Branches"
930 msgid "Branches"
923 msgstr ""
931 msgstr ""
924
932
925 #: rhodecode/apps/repository/views/repo_files.py:1035
933 #: rhodecode/apps/repository/views/repo_files.py:1052
926 #: rhodecode/model/scm.py:1012 rhodecode/templates/base/vcs_settings.mako:260
934 #: rhodecode/model/scm.py:1016 rhodecode/templates/base/vcs_settings.mako:260
927 #: rhodecode/templates/summary/components.mako:34
935 #: rhodecode/templates/summary/components.mako:34
928 msgid "Tags"
936 msgid "Tags"
929 msgstr ""
937 msgstr ""
930
938
931 #: rhodecode/apps/repository/views/repo_files.py:1191
939 #: rhodecode/apps/repository/views/repo_files.py:1208
932 #: rhodecode/apps/repository/views/repo_files.py:1220
940 #: rhodecode/apps/repository/views/repo_files.py:1237
933 msgid "Deleted file {} via RhodeCode Enterprise"
941 msgid "Deleted file {} via RhodeCode Enterprise"
934 msgstr ""
942 msgstr ""
935
943
936 #: rhodecode/apps/repository/views/repo_files.py:1241
944 #: rhodecode/apps/repository/views/repo_files.py:1258
937 msgid "Successfully deleted file `{}`"
945 msgid "Successfully deleted file `{}`"
938 msgstr ""
946 msgstr ""
939
947
940 #: rhodecode/apps/repository/views/repo_files.py:1245
948 #: rhodecode/apps/repository/views/repo_files.py:1262
941 #: rhodecode/apps/repository/views/repo_files.py:1364
949 #: rhodecode/apps/repository/views/repo_files.py:1381
942 #: rhodecode/apps/repository/views/repo_files.py:1497
950 #: rhodecode/apps/repository/views/repo_files.py:1514
943 #: rhodecode/apps/repository/views/repo_files.py:1621
951 #: rhodecode/apps/repository/views/repo_files.py:1638
944 msgid "Error occurred during commit"
952 msgid "Error occurred during commit"
945 msgstr ""
953 msgstr ""
946
954
947 #: rhodecode/apps/repository/views/repo_files.py:1278
955 #: rhodecode/apps/repository/views/repo_files.py:1295
948 #: rhodecode/apps/repository/views/repo_files.py:1310
956 #: rhodecode/apps/repository/views/repo_files.py:1327
949 msgid "Edited file {} via RhodeCode Enterprise"
957 msgid "Edited file {} via RhodeCode Enterprise"
950 msgstr ""
958 msgstr ""
951
959
952 #: rhodecode/apps/repository/views/repo_files.py:1333
960 #: rhodecode/apps/repository/views/repo_files.py:1350
953 msgid "No changes detected on {}"
961 msgid "No changes detected on {}"
954 msgstr ""
962 msgstr ""
955
963
956 #: rhodecode/apps/repository/views/repo_files.py:1357
964 #: rhodecode/apps/repository/views/repo_files.py:1374
957 msgid "Successfully committed changes to file `{}`"
965 msgid "Successfully committed changes to file `{}`"
958 msgstr ""
966 msgstr ""
959
967
960 #: rhodecode/apps/repository/views/repo_files.py:1399
968 #: rhodecode/apps/repository/views/repo_files.py:1416
961 #: rhodecode/apps/repository/views/repo_files.py:1441
969 #: rhodecode/apps/repository/views/repo_files.py:1458
962 msgid "Added file via RhodeCode Enterprise"
970 msgid "Added file via RhodeCode Enterprise"
963 msgstr ""
971 msgstr ""
964
972
965 #: rhodecode/apps/repository/views/repo_files.py:1457
973 #: rhodecode/apps/repository/views/repo_files.py:1474
966 msgid "No filename specified"
974 msgid "No filename specified"
967 msgstr ""
975 msgstr ""
968
976
969 #: rhodecode/apps/repository/views/repo_files.py:1482
977 #: rhodecode/apps/repository/views/repo_files.py:1499
970 msgid "Successfully committed new file `{}`"
978 msgid "Successfully committed new file `{}`"
971 msgstr ""
979 msgstr ""
972
980
973 #: rhodecode/apps/repository/views/repo_files.py:1490
981 #: rhodecode/apps/repository/views/repo_files.py:1507
974 #: rhodecode/apps/repository/views/repo_files.py:1603
982 #: rhodecode/apps/repository/views/repo_files.py:1620
975 msgid "The location specified must be a relative path and must not contain .. in the path"
983 msgid "The location specified must be a relative path and must not contain .. in the path"
976 msgstr ""
984 msgstr ""
977
985
978 #: rhodecode/apps/repository/views/repo_files.py:1548
986 #: rhodecode/apps/repository/views/repo_files.py:1565
979 msgid "Uploaded file via RhodeCode Enterprise"
987 msgid "Uploaded file via RhodeCode Enterprise"
980 msgstr ""
988 msgstr ""
981
989
982 #: rhodecode/apps/repository/views/repo_files.py:1592
990 #: rhodecode/apps/repository/views/repo_files.py:1609
983 msgid "Successfully committed {} new files"
991 msgid "Successfully committed {} new files"
984 msgstr ""
992 msgstr ""
985
993
986 #: rhodecode/apps/repository/views/repo_files.py:1594
994 #: rhodecode/apps/repository/views/repo_files.py:1611
987 msgid "Successfully committed 1 new file"
995 msgid "Successfully committed 1 new file"
988 msgstr ""
996 msgstr ""
989
997
@@ -1013,72 +1021,72 b' msgstr ""'
1013 msgid "Error occurred during update of repository {}"
1021 msgid "Error occurred during update of repository {}"
1014 msgstr ""
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 msgid "Pull Request state was force changed to `{}`"
1025 msgid "Pull Request state was force changed to `{}`"
1018 msgstr ""
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 msgid "Commit does not exist"
1029 msgid "Commit does not exist"
1022 msgstr ""
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 msgid "Error creating pull request: {}"
1033 msgid "Error creating pull request: {}"
1026 msgstr ""
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 msgid "source_repo or target repo not found"
1037 msgid "source_repo or target repo not found"
1030 msgstr ""
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 msgid "Not Enough permissions to source repo `{}`."
1041 msgid "Not Enough permissions to source repo `{}`."
1034 msgstr ""
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 msgid "Not Enough permissions to target repo `{}`."
1045 msgid "Not Enough permissions to target repo `{}`."
1038 msgstr ""
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 msgid "Successfully opened new pull request"
1049 msgid "Successfully opened new pull request"
1042 msgstr ""
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 msgid "Error occurred during creation of this pull request."
1053 msgid "Error occurred during creation of this pull request."
1046 msgstr ""
1054 msgstr ""
1047
1055
1048 #: rhodecode/apps/repository/views/repo_pull_requests.py:1243
1056 #: rhodecode/apps/repository/views/repo_pull_requests.py:1293
1049 #: rhodecode/apps/repository/views/repo_pull_requests.py:1312
1057 #: rhodecode/apps/repository/views/repo_pull_requests.py:1362
1050 msgid "Cannot update closed pull requests."
1058 msgid "Cannot update closed pull requests."
1051 msgstr ""
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 msgid "Cannot update pull requests commits in state other than `{}`. Current state is: `{}`"
1062 msgid "Cannot update pull requests commits in state other than `{}`. Current state is: `{}`"
1055 msgstr ""
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 msgid "Pull request title & description updated."
1066 msgid "Pull request title & description updated."
1059 msgstr ""
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 msgid "Pull request updated to \"{source_commit_id}\" with {count_added} added, {count_removed} removed commits. Source of changes: {change_source}."
1070 msgid "Pull request updated to \"{source_commit_id}\" with {count_added} added, {count_removed} removed commits. Source of changes: {change_source}."
1063 msgstr ""
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 msgid "Pull request reviewers updated."
1074 msgid "Pull request reviewers updated."
1067 msgstr ""
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 msgid "Pull request observers updated."
1078 msgid "Pull request observers updated."
1071 msgstr ""
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 msgid "Cannot merge pull requests in state other than `{}`. Current state is: `{}`"
1082 msgid "Cannot merge pull requests in state other than `{}`. Current state is: `{}`"
1075 msgstr ""
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 msgid "Pull request was successfully merged and closed."
1086 msgid "Pull request was successfully merged and closed."
1079 msgstr ""
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 msgid "Successfully deleted pull request"
1090 msgid "Successfully deleted pull request"
1083 msgstr ""
1091 msgstr ""
1084
1092
@@ -1830,10 +1838,10 b' msgstr ""'
1830 #: rhodecode/templates/base/issue_tracker_settings.mako:147
1838 #: rhodecode/templates/base/issue_tracker_settings.mako:147
1831 #: rhodecode/templates/base/vcs_settings.mako:244
1839 #: rhodecode/templates/base/vcs_settings.mako:244
1832 #: rhodecode/templates/base/vcs_settings.mako:269
1840 #: rhodecode/templates/base/vcs_settings.mako:269
1833 #: rhodecode/templates/changeset/changeset_file_comment.mako:216
1841 #: rhodecode/templates/changeset/changeset_file_comment.mako:236
1834 #: rhodecode/templates/changeset/changeset_file_comment.mako:224
1842 #: rhodecode/templates/changeset/changeset_file_comment.mako:250
1835 #: rhodecode/templates/changeset/changeset_file_comment.mako:233
1843 #: rhodecode/templates/changeset/changeset_file_comment.mako:259
1836 #: rhodecode/templates/data_table/_dt_elements.mako:436
1844 #: rhodecode/templates/data_table/_dt_elements.mako:439
1837 #: rhodecode/templates/debug_style/buttons.html:132
1845 #: rhodecode/templates/debug_style/buttons.html:132
1838 #: rhodecode/templates/files/files_source.mako:40
1846 #: rhodecode/templates/files/files_source.mako:40
1839 #: rhodecode/templates/files/files_source.mako:47
1847 #: rhodecode/templates/files/files_source.mako:47
@@ -1915,7 +1923,7 b' msgid "Email address"'
1915 msgstr ""
1923 msgstr ""
1916
1924
1917 #: rhodecode/integrations/types/email.py:175
1925 #: rhodecode/integrations/types/email.py:175
1918 #: rhodecode/templates/register.mako:95
1926 #: rhodecode/templates/register.mako:97
1919 #: rhodecode/templates/admin/my_account/my_account_profile.mako:78
1927 #: rhodecode/templates/admin/my_account/my_account_profile.mako:78
1920 #: rhodecode/templates/admin/users/user_add.mako:86
1928 #: rhodecode/templates/admin/users/user_add.mako:86
1921 #: rhodecode/templates/admin/users/user_edit_profile.mako:65
1929 #: rhodecode/templates/admin/users/user_edit_profile.mako:65
@@ -1991,7 +1999,7 b' msgstr ""'
1991
1999
1992 #: rhodecode/integrations/types/slack.py:86
2000 #: rhodecode/integrations/types/slack.py:86
1993 #: rhodecode/integrations/types/webhook.py:81 rhodecode/templates/login.mako:44
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 #: rhodecode/templates/admin/admin_log_base.mako:7
2003 #: rhodecode/templates/admin/admin_log_base.mako:7
1996 #: rhodecode/templates/admin/my_account/my_account_profile.mako:38
2004 #: rhodecode/templates/admin/my_account/my_account_profile.mako:38
1997 #: rhodecode/templates/admin/my_account/my_account_profile_edit.mako:29
2005 #: rhodecode/templates/admin/my_account/my_account_profile_edit.mako:29
@@ -2056,7 +2064,7 b' msgid "Optional username to authenticate'
2056 msgstr ""
2064 msgstr ""
2057
2065
2058 #: rhodecode/integrations/types/webhook.py:91 rhodecode/templates/login.mako:51
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 #: rhodecode/templates/admin/my_account/my_account.mako:31
2068 #: rhodecode/templates/admin/my_account/my_account.mako:31
2061 #: rhodecode/templates/admin/users/user_add.mako:44
2069 #: rhodecode/templates/admin/users/user_add.mako:44
2062 #: rhodecode/templates/debug_style/login.html:45
2070 #: rhodecode/templates/debug_style/login.html:45
@@ -2237,10 +2245,6 b' msgstr ""'
2237 msgid " Reload page to load changes"
2245 msgid " Reload page to load changes"
2238 msgstr ""
2246 msgstr ""
2239
2247
2240 #: rhodecode/lib/channelstream.py:348
2241 msgid "Reload page to see new comments"
2242 msgstr ""
2243
2244 #: rhodecode/lib/diffs.py:903
2248 #: rhodecode/lib/diffs.py:903
2245 msgid "Click to select line"
2249 msgid "Click to select line"
2246 msgstr ""
2250 msgstr ""
@@ -2755,10 +2759,10 b' msgstr ""'
2755 #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2910
2759 #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2910
2756 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3011
2760 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3011
2757 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3012
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 #: rhodecode/public/js/scripts.js:42424 rhodecode/public/js/scripts.min.js:1
2763 #: rhodecode/public/js/scripts.js:42424 rhodecode/public/js/scripts.min.js:1
2760 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:70
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 msgid "Not Reviewed"
2766 msgid "Not Reviewed"
2763 msgstr ""
2767 msgstr ""
2764
2768
@@ -2801,7 +2805,7 b' msgstr ""'
2801 #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2911
2805 #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2911
2802 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3012
2806 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3012
2803 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3013
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 msgid "Approved"
2809 msgid "Approved"
2806 msgstr ""
2810 msgstr ""
2807
2811
@@ -2844,7 +2848,7 b' msgstr ""'
2844 #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2912
2848 #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2912
2845 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3013
2849 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3013
2846 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3014
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 msgid "Rejected"
2852 msgid "Rejected"
2849 msgstr ""
2853 msgstr ""
2850
2854
@@ -2887,7 +2891,7 b' msgstr ""'
2887 #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2913
2891 #: rhodecode/lib/dbmigrate/schema/db_4_5_0_0.py:2913
2888 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3014
2892 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_0.py:3014
2889 #: rhodecode/lib/dbmigrate/schema/db_4_7_0_1.py:3015
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 msgid "Under Review"
2895 msgid "Under Review"
2892 msgstr ""
2896 msgstr ""
2893
2897
@@ -4064,72 +4068,72 b' msgstr ""'
4064 msgid "Enter %(min)i characters or more"
4068 msgid "Enter %(min)i characters or more"
4065 msgstr ""
4069 msgstr ""
4066
4070
4067 #: rhodecode/model/notification.py:248
4071 #: rhodecode/model/notification.py:263
4068 #, python-format
4072 #, python-format
4069 msgid "%(user)s commented on commit %(date_or_age)s"
4073 msgid "%(user)s commented on commit %(date_or_age)s"
4070 msgstr ""
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 #: rhodecode/model/notification.py:264
4076 #: rhodecode/model/notification.py:264
4108 #, python-format
4077 #, python-format
4109 msgid "%(user)s opened new pull request %(date_or_age)s"
4078 msgid "%(user)s commented on commit at %(date_or_age)s"
4110 msgstr ""
4079 msgstr ""
4111
4080
4112 #: rhodecode/model/notification.py:265
4081 #: rhodecode/model/notification.py:267
4113 #, python-format
4082 #, python-format
4114 msgid "%(user)s opened new pull request at %(date_or_age)s"
4083 msgid "%(user)s sent message %(date_or_age)s"
4115 msgstr ""
4084 msgstr ""
4116
4085
4117 #: rhodecode/model/notification.py:268
4086 #: rhodecode/model/notification.py:268
4118 #, python-format
4087 #, python-format
4119 msgid "%(user)s updated pull request %(date_or_age)s"
4088 msgid "%(user)s sent message at %(date_or_age)s"
4120 msgstr ""
4089 msgstr ""
4121
4090
4122 #: rhodecode/model/notification.py:269
4091 #: rhodecode/model/notification.py:271
4123 #, python-format
4092 #, python-format
4124 msgid "%(user)s updated pull request at %(date_or_age)s"
4093 msgid "%(user)s mentioned you %(date_or_age)s"
4125 msgstr ""
4094 msgstr ""
4126
4095
4127 #: rhodecode/model/notification.py:272
4096 #: rhodecode/model/notification.py:272
4128 #, python-format
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 msgid "%(user)s commented on pull request %(date_or_age)s"
4133 msgid "%(user)s commented on pull request %(date_or_age)s"
4130 msgstr ""
4134 msgstr ""
4131
4135
4132 #: rhodecode/model/notification.py:273
4136 #: rhodecode/model/notification.py:288
4133 #, python-format
4137 #, python-format
4134 msgid "%(user)s commented on pull request at %(date_or_age)s"
4138 msgid "%(user)s commented on pull request at %(date_or_age)s"
4135 msgstr ""
4139 msgstr ""
@@ -4156,9 +4160,9 b' msgstr ""'
4156 #: rhodecode/templates/admin/repo_groups/repo_group_edit_permissions.mako:13
4160 #: rhodecode/templates/admin/repo_groups/repo_group_edit_permissions.mako:13
4157 #: rhodecode/templates/admin/repos/repo_edit_permissions.mako:13
4161 #: rhodecode/templates/admin/repos/repo_edit_permissions.mako:13
4158 #: rhodecode/templates/admin/user_groups/user_group_edit_perms.mako:17
4162 #: rhodecode/templates/admin/user_groups/user_group_edit_perms.mako:17
4159 #: rhodecode/templates/changeset/changeset_file_comment.mako:364
4163 #: rhodecode/templates/changeset/changeset_file_comment.mako:392
4160 #: rhodecode/templates/changeset/changeset_file_comment.mako:415
4164 #: rhodecode/templates/changeset/changeset_file_comment.mako:443
4161 #: rhodecode/templates/data_table/_dt_elements.mako:450
4165 #: rhodecode/templates/data_table/_dt_elements.mako:453
4162 msgid "Write"
4166 msgid "Write"
4163 msgstr ""
4167 msgstr ""
4164
4168
@@ -4257,79 +4261,79 b' msgstr ""'
4257 msgid "This pull request cannot be updated because the source reference is missing."
4261 msgid "This pull request cannot be updated because the source reference is missing."
4258 msgstr ""
4262 msgstr ""
4259
4263
4260 #: rhodecode/model/pull_request.py:1681
4264 #: rhodecode/model/pull_request.py:1674
4261 msgid "Server-side pull request merging is disabled."
4265 msgid "Server-side pull request merging is disabled."
4262 msgstr ""
4266 msgstr ""
4263
4267
4264 #: rhodecode/model/pull_request.py:1684
4268 #: rhodecode/model/pull_request.py:1677
4265 msgid "This pull request is closed."
4269 msgid "This pull request is closed."
4266 msgstr ""
4270 msgstr ""
4267
4271
4268 #: rhodecode/model/pull_request.py:1698
4272 #: rhodecode/model/pull_request.py:1691
4269 msgid "Pull request merging is not supported."
4273 msgid "Pull request merging is not supported."
4270 msgstr ""
4274 msgstr ""
4271
4275
4272 #: rhodecode/model/pull_request.py:1715
4276 #: rhodecode/model/pull_request.py:1708
4273 msgid "Target repository large files support is disabled."
4277 msgid "Target repository large files support is disabled."
4274 msgstr ""
4278 msgstr ""
4275
4279
4276 #: rhodecode/model/pull_request.py:1718
4280 #: rhodecode/model/pull_request.py:1711
4277 msgid "Source repository large files support is disabled."
4281 msgid "Source repository large files support is disabled."
4278 msgstr ""
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 #: rhodecode/templates/admin/my_account/my_account.mako:32
4285 #: rhodecode/templates/admin/my_account/my_account.mako:32
4282 #: rhodecode/templates/base/base.mako:638
4286 #: rhodecode/templates/base/base.mako:638
4283 #: rhodecode/templates/summary/components.mako:46
4287 #: rhodecode/templates/summary/components.mako:46
4284 msgid "Bookmarks"
4288 msgid "Bookmarks"
4285 msgstr ""
4289 msgstr ""
4286
4290
4287 #: rhodecode/model/pull_request.py:1907
4291 #: rhodecode/model/pull_request.py:1900
4288 msgid "Commit IDs"
4292 msgid "Commit IDs"
4289 msgstr ""
4293 msgstr ""
4290
4294
4291 #: rhodecode/model/pull_request.py:1910
4295 #: rhodecode/model/pull_request.py:1903
4292 #: rhodecode/templates/summary/components.mako:22
4296 #: rhodecode/templates/summary/components.mako:22
4293 msgid "Closed Branches"
4297 msgid "Closed Branches"
4294 msgstr ""
4298 msgstr ""
4295
4299
4296 #: rhodecode/model/pull_request.py:2094
4300 #: rhodecode/model/pull_request.py:2089
4297 msgid "WIP marker in title prevents from accidental merge."
4301 msgid "WIP marker in title prevents from accidental merge."
4298 msgstr ""
4302 msgstr ""
4299
4303
4300 #: rhodecode/model/pull_request.py:2104
4304 #: rhodecode/model/pull_request.py:2099
4301 msgid "User `{}` not allowed to perform merge."
4305 msgid "User `{}` not allowed to perform merge."
4302 msgstr ""
4306 msgstr ""
4303
4307
4304 #: rhodecode/model/pull_request.py:2122
4308 #: rhodecode/model/pull_request.py:2117
4305 msgid "Target branch `{}` changes rejected by rule {}."
4309 msgid "Target branch `{}` changes rejected by rule {}."
4306 msgstr ""
4310 msgstr ""
4307
4311
4308 #: rhodecode/model/pull_request.py:2136
4312 #: rhodecode/model/pull_request.py:2132
4309 msgid "Pull request reviewer approval is pending."
4313 msgid "Pull request reviewer approval is pending."
4310 msgstr ""
4314 msgstr ""
4311
4315
4312 #: rhodecode/model/pull_request.py:2150
4316 #: rhodecode/model/pull_request.py:2146
4313 msgid "Cannot merge, {} TODO still not resolved."
4317 msgid "Cannot merge, {} TODO still not resolved."
4314 msgstr ""
4318 msgstr ""
4315
4319
4316 #: rhodecode/model/pull_request.py:2153
4320 #: rhodecode/model/pull_request.py:2149
4317 msgid "Cannot merge, {} TODOs still not resolved."
4321 msgid "Cannot merge, {} TODOs still not resolved."
4318 msgstr ""
4322 msgstr ""
4319
4323
4320 #: rhodecode/model/pull_request.py:2208
4324 #: rhodecode/model/pull_request.py:2204
4321 msgid "Merge strategy: rebase"
4325 msgid "Merge strategy: rebase"
4322 msgstr ""
4326 msgstr ""
4323
4327
4324 #: rhodecode/model/pull_request.py:2213
4328 #: rhodecode/model/pull_request.py:2209
4325 msgid "Merge strategy: explicit merge commit"
4329 msgid "Merge strategy: explicit merge commit"
4326 msgstr ""
4330 msgstr ""
4327
4331
4328 #: rhodecode/model/pull_request.py:2221
4332 #: rhodecode/model/pull_request.py:2217
4329 msgid "Source branch will be closed before the merge."
4333 msgid "Source branch will be closed before the merge."
4330 msgstr ""
4334 msgstr ""
4331
4335
4332 #: rhodecode/model/pull_request.py:2223
4336 #: rhodecode/model/pull_request.py:2219
4333 msgid "Source branch will be deleted after the merge."
4337 msgid "Source branch will be deleted after the merge."
4334 msgstr ""
4338 msgstr ""
4335
4339
@@ -4850,49 +4854,49 b' msgstr ""'
4850
4854
4851 #: rhodecode/public/js/scripts.js:39232 rhodecode/public/js/scripts.min.js:1
4855 #: rhodecode/public/js/scripts.js:39232 rhodecode/public/js/scripts.min.js:1
4852 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:85
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 msgid "Set status to Approved"
4858 msgid "Set status to Approved"
4855 msgstr ""
4859 msgstr ""
4856
4860
4857 #: rhodecode/public/js/scripts.js:39252 rhodecode/public/js/scripts.min.js:1
4861 #: rhodecode/public/js/scripts.js:39252 rhodecode/public/js/scripts.min.js:1
4858 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:86
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 msgid "Set status to Rejected"
4864 msgid "Set status to Rejected"
4861 msgstr ""
4865 msgstr ""
4862
4866
4863 #: rhodecode/public/js/scripts.js:39271 rhodecode/public/js/scripts.min.js:1
4867 #: rhodecode/public/js/scripts.js:39271 rhodecode/public/js/scripts.min.js:1
4864 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:106
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 msgid "TODO comment"
4870 msgid "TODO comment"
4867 msgstr ""
4871 msgstr ""
4868
4872
4869 #: rhodecode/public/js/scripts.js:39291 rhodecode/public/js/scripts.min.js:1
4873 #: rhodecode/public/js/scripts.js:39291 rhodecode/public/js/scripts.min.js:1
4870 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:71
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 msgid "Note Comment"
4876 msgid "Note Comment"
4873 msgstr ""
4877 msgstr ""
4874
4878
4875 #: rhodecode/public/js/scripts.js:39592 rhodecode/public/js/scripts.js:39967
4879 #: rhodecode/public/js/scripts.js:39592 rhodecode/public/js/scripts.js:39967
4876 #: rhodecode/public/js/scripts.min.js:1
4880 #: rhodecode/public/js/scripts.min.js:1
4877 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:99
4881 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:99
4878 #: rhodecode/public/js/src/rhodecode/codemirror.js:723
4882 #: rhodecode/public/js/src/rhodecode/codemirror.js:730
4879 #: rhodecode/public/js/src/rhodecode/comments.js:254
4883 #: rhodecode/public/js/src/rhodecode/comments.js:267
4880 msgid "Status Review"
4884 msgid "Status Review"
4881 msgstr ""
4885 msgstr ""
4882
4886
4883 #: rhodecode/public/js/scripts.js:39607 rhodecode/public/js/scripts.js:39982
4887 #: rhodecode/public/js/scripts.js:39607 rhodecode/public/js/scripts.js:39982
4884 #: rhodecode/public/js/scripts.min.js:1
4888 #: rhodecode/public/js/scripts.min.js:1
4885 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:24
4889 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:24
4886 #: rhodecode/public/js/src/rhodecode/codemirror.js:738
4890 #: rhodecode/public/js/src/rhodecode/codemirror.js:745
4887 #: rhodecode/public/js/src/rhodecode/comments.js:269
4891 #: rhodecode/public/js/src/rhodecode/comments.js:284
4888 msgid "Comment text will be set automatically based on currently selected status ({0}) ..."
4892 msgid "Comment text will be set automatically based on currently selected status ({0}) ..."
4889 msgstr ""
4893 msgstr ""
4890
4894
4891 #: rhodecode/public/js/scripts.js:39688 rhodecode/public/js/scripts.js:40177
4895 #: rhodecode/public/js/scripts.js:39688 rhodecode/public/js/scripts.js:40177
4892 #: rhodecode/public/js/scripts.js:41535 rhodecode/public/js/scripts.min.js:1
4896 #: rhodecode/public/js/scripts.js:41535 rhodecode/public/js/scripts.min.js:1
4893 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:48
4897 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:48
4894 #: rhodecode/public/js/src/rhodecode/codemirror.js:819
4898 #: rhodecode/public/js/src/rhodecode/codemirror.js:826
4895 #: rhodecode/public/js/src/rhodecode/comments.js:464
4899 #: rhodecode/public/js/src/rhodecode/comments.js:493
4896 #: rhodecode/public/js/src/rhodecode/files.js:499
4900 #: rhodecode/public/js/src/rhodecode/files.js:499
4897 #: rhodecode/templates/files/files_browser_tree.mako:57
4901 #: rhodecode/templates/files/files_browser_tree.mako:57
4898 msgid "Loading ..."
4902 msgid "Loading ..."
@@ -4900,49 +4904,47 b' msgstr ""'
4900
4904
4901 #: rhodecode/public/js/scripts.js:39849 rhodecode/public/js/scripts.min.js:1
4905 #: rhodecode/public/js/scripts.js:39849 rhodecode/public/js/scripts.min.js:1
4902 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:117
4906 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:117
4903 #: rhodecode/public/js/src/rhodecode/comments.js:136
4904 msgid "Updated Comment"
4907 msgid "Updated Comment"
4905 msgstr ""
4908 msgstr ""
4906
4909
4907 #: rhodecode/public/js/scripts.js:39873 rhodecode/public/js/scripts.min.js:1
4910 #: rhodecode/public/js/scripts.js:39873 rhodecode/public/js/scripts.min.js:1
4908 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:141
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 msgid "resolve comment"
4913 msgid "resolve comment"
4911 msgstr ""
4914 msgstr ""
4912
4915
4913 #: rhodecode/public/js/scripts.js:40126 rhodecode/public/js/scripts.min.js:1
4916 #: rhodecode/public/js/scripts.js:40126 rhodecode/public/js/scripts.min.js:1
4914 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:102
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 msgid "Submitting..."
4919 msgid "Submitting..."
4917 msgstr ""
4920 msgstr ""
4918
4921
4919 #: rhodecode/public/js/scripts.js:40423 rhodecode/public/js/scripts.min.js:1
4922 #: rhodecode/public/js/scripts.js:40423 rhodecode/public/js/scripts.min.js:1
4920 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:122
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 msgid "Yes, delete comment #{0}!"
4925 msgid "Yes, delete comment #{0}!"
4923 msgstr ""
4926 msgstr ""
4924
4927
4925 #: rhodecode/public/js/scripts.js:40487 rhodecode/public/js/scripts.min.js:1
4928 #: rhodecode/public/js/scripts.js:40487 rhodecode/public/js/scripts.min.js:1
4926 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:46
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 msgid "Leave a resolution comment, or click resolve button to resolve TODO comment #{0}"
4931 msgid "Leave a resolution comment, or click resolve button to resolve TODO comment #{0}"
4929 msgstr ""
4932 msgstr ""
4930
4933
4931 #: rhodecode/public/js/scripts.js:40696 rhodecode/public/js/scripts.min.js:1
4934 #: rhodecode/public/js/scripts.js:40696 rhodecode/public/js/scripts.min.js:1
4932 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:23
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 msgid "Comment body was not changed."
4937 msgid "Comment body was not changed."
4935 msgstr ""
4938 msgstr ""
4936
4939
4937 #: rhodecode/public/js/scripts.js:40875 rhodecode/public/js/scripts.min.js:1
4940 #: rhodecode/public/js/scripts.js:40875 rhodecode/public/js/scripts.min.js:1
4938 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:44
4941 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:44
4939 #: rhodecode/public/js/src/rhodecode/comments.js:1162
4940 msgid "Leave a comment on line {0}."
4942 msgid "Leave a comment on line {0}."
4941 msgstr ""
4943 msgstr ""
4942
4944
4943 #: rhodecode/public/js/scripts.js:41006 rhodecode/public/js/scripts.min.js:1
4945 #: rhodecode/public/js/scripts.js:41006 rhodecode/public/js/scripts.min.js:1
4944 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:107
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 msgid "TODO from comment {0} was fixed."
4948 msgid "TODO from comment {0} was fixed."
4947 msgstr ""
4949 msgstr ""
4948
4950
@@ -5024,102 +5026,94 b' msgstr ""'
5024
5026
5025 #: rhodecode/public/js/scripts.js:42165 rhodecode/public/js/scripts.min.js:1
5027 #: rhodecode/public/js/scripts.js:42165 rhodecode/public/js/scripts.min.js:1
5026 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:12
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 msgid "All reviewers must vote."
5030 msgid "All reviewers must vote."
5029 msgstr ""
5031 msgstr ""
5030
5032
5031 #: rhodecode/public/js/scripts.js:42174 rhodecode/public/js/scripts.min.js:1
5033 #: rhodecode/public/js/scripts.js:42174 rhodecode/public/js/scripts.min.js:1
5032 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:11
5034 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:11
5033 #: rhodecode/public/js/src/rhodecode/pullrequests.js:195
5034 msgid "All individual reviewers must vote."
5035 msgid "All individual reviewers must vote."
5035 msgstr ""
5036 msgstr ""
5036
5037
5037 #: rhodecode/public/js/scripts.js:42179 rhodecode/public/js/scripts.min.js:1
5038 #: rhodecode/public/js/scripts.js:42179 rhodecode/public/js/scripts.min.js:1
5038 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:14
5039 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:14
5039 #: rhodecode/public/js/src/rhodecode/pullrequests.js:200
5040 msgid "At least {0} reviewer must vote."
5040 msgid "At least {0} reviewer must vote."
5041 msgstr ""
5041 msgstr ""
5042
5042
5043 #: rhodecode/public/js/scripts.js:42185 rhodecode/public/js/scripts.min.js:1
5043 #: rhodecode/public/js/scripts.js:42185 rhodecode/public/js/scripts.min.js:1
5044 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:15
5044 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:15
5045 #: rhodecode/public/js/src/rhodecode/pullrequests.js:206
5046 msgid "At least {0} reviewers must vote."
5045 msgid "At least {0} reviewers must vote."
5047 msgstr ""
5046 msgstr ""
5048
5047
5049 #: rhodecode/public/js/scripts.js:42201 rhodecode/public/js/scripts.min.js:1
5048 #: rhodecode/public/js/scripts.js:42201 rhodecode/public/js/scripts.min.js:1
5050 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:80
5049 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:80
5051 #: rhodecode/public/js/src/rhodecode/pullrequests.js:222
5052 msgid "Reviewers picked from source code changes."
5050 msgid "Reviewers picked from source code changes."
5053 msgstr ""
5051 msgstr ""
5054
5052
5055 #: rhodecode/public/js/scripts.js:42209 rhodecode/public/js/scripts.min.js:1
5053 #: rhodecode/public/js/scripts.js:42209 rhodecode/public/js/scripts.min.js:1
5056 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:8
5054 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:8
5057 #: rhodecode/public/js/src/rhodecode/pullrequests.js:230
5058 msgid "Adding new reviewers is forbidden."
5055 msgid "Adding new reviewers is forbidden."
5059 msgstr ""
5056 msgstr ""
5060
5057
5061 #: rhodecode/public/js/scripts.js:42217 rhodecode/public/js/scripts.min.js:1
5058 #: rhodecode/public/js/scripts.js:42217 rhodecode/public/js/scripts.min.js:1
5062 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:17
5059 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:17
5063 #: rhodecode/public/js/src/rhodecode/pullrequests.js:238
5064 msgid "Author is not allowed to be a reviewer."
5060 msgid "Author is not allowed to be a reviewer."
5065 msgstr ""
5061 msgstr ""
5066
5062
5067 #: rhodecode/public/js/scripts.js:42231 rhodecode/public/js/scripts.min.js:1
5063 #: rhodecode/public/js/scripts.js:42231 rhodecode/public/js/scripts.min.js:1
5068 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:25
5064 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:25
5069 #: rhodecode/public/js/src/rhodecode/pullrequests.js:252
5070 msgid "Commit Authors are not allowed to be a reviewer."
5065 msgid "Commit Authors are not allowed to be a reviewer."
5071 msgstr ""
5066 msgstr ""
5072
5067
5073 #: rhodecode/public/js/scripts.js:42238 rhodecode/public/js/scripts.min.js:1
5068 #: rhodecode/public/js/scripts.js:42238 rhodecode/public/js/scripts.min.js:1
5074 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:65
5069 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:65
5075 #: rhodecode/public/js/src/rhodecode/pullrequests.js:259
5076 msgid "No review rules set."
5070 msgid "No review rules set."
5077 msgstr ""
5071 msgstr ""
5078
5072
5079 #: rhodecode/public/js/scripts.js:42283 rhodecode/public/js/scripts.min.js:1
5073 #: rhodecode/public/js/scripts.js:42283 rhodecode/public/js/scripts.min.js:1
5080 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:49
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 msgid "Loading diff ..."
5076 msgid "Loading diff ..."
5083 msgstr ""
5077 msgstr ""
5084
5078
5085 #: rhodecode/public/js/scripts.js:42336 rhodecode/public/js/scripts.min.js:1
5079 #: rhodecode/public/js/scripts.js:42336 rhodecode/public/js/scripts.min.js:1
5086 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:109
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 msgid "There are no commits to merge."
5082 msgid "There are no commits to merge."
5089 msgstr ""
5083 msgstr ""
5090
5084
5091 #: rhodecode/public/js/scripts.js:42408 rhodecode/public/js/scripts.min.js:1
5085 #: rhodecode/public/js/scripts.js:42408 rhodecode/public/js/scripts.min.js:1
5092 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:120
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 msgid "User `{0}` not allowed to be a reviewer"
5088 msgid "User `{0}` not allowed to be a reviewer"
5095 msgstr ""
5089 msgstr ""
5096
5090
5097 #: rhodecode/public/js/scripts.js:42414 rhodecode/public/js/scripts.min.js:1
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 msgid "User `{0}` already in reviewers/observers"
5093 msgid "User `{0}` already in reviewers/observers"
5100 msgstr ""
5094 msgstr ""
5101
5095
5102 #: rhodecode/public/js/scripts.js:42528 rhodecode/public/js/scripts.min.js:1
5096 #: rhodecode/public/js/scripts.js:42528 rhodecode/public/js/scripts.min.js:1
5103 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:126
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 msgid "added manually by \"{0}\""
5099 msgid "added manually by \"{0}\""
5106 msgstr ""
5100 msgstr ""
5107
5101
5108 #: rhodecode/public/js/scripts.js:42533 rhodecode/public/js/scripts.min.js:1
5102 #: rhodecode/public/js/scripts.js:42533 rhodecode/public/js/scripts.min.js:1
5109 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:138
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 msgid "member of \"{0}\""
5105 msgid "member of \"{0}\""
5112 msgstr ""
5106 msgstr ""
5113
5107
5114 #: rhodecode/public/js/scripts.js:42766 rhodecode/public/js/scripts.min.js:1
5108 #: rhodecode/public/js/scripts.js:42766 rhodecode/public/js/scripts.min.js:1
5115 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:118
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 msgid "Updating..."
5111 msgid "Updating..."
5118 msgstr ""
5112 msgstr ""
5119
5113
5120 #: rhodecode/public/js/scripts.js:42776 rhodecode/public/js/scripts.min.js:1
5114 #: rhodecode/public/js/scripts.js:42776 rhodecode/public/js/scripts.min.js:1
5121 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:40
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 msgid "Force updating..."
5117 msgid "Force updating..."
5124 msgstr ""
5118 msgstr ""
5125
5119
@@ -5198,8 +5192,6 b' msgid "<strong>{0} files</strong> change'
5198 msgstr ""
5192 msgstr ""
5199
5193
5200 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:7
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 msgid "Add another comment"
5195 msgid "Add another comment"
5204 msgstr ""
5196 msgstr ""
5205
5197
@@ -5213,14 +5205,14 b' msgstr ""'
5213
5205
5214 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:19
5206 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:19
5215 #: rhodecode/public/js/src/i18n_messages.js:5
5207 #: rhodecode/public/js/src/i18n_messages.js:5
5216 #: rhodecode/templates/pullrequests/pullrequest_show.mako:589
5208 #: rhodecode/templates/pullrequests/pullrequest_show.mako:623
5217 #: rhodecode/templates/pullrequests/pullrequest_show.mako:592
5209 #: rhodecode/templates/pullrequests/pullrequest_show.mako:626
5218 #: rhodecode/templates/pullrequests/pullrequest_show.mako:646
5210 #: rhodecode/templates/pullrequests/pullrequest_show.mako:680
5219 msgid "Close"
5211 msgid "Close"
5220 msgstr ""
5212 msgstr ""
5221
5213
5222 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:20
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 msgid "Collapse all files"
5216 msgid "Collapse all files"
5225 msgstr ""
5217 msgstr ""
5226
5218
@@ -5257,7 +5249,7 b' msgid "Error during search operation"'
5257 msgstr ""
5249 msgstr ""
5258
5250
5259 #: rhodecode/public/js/rhodecode/i18n/js_translations.js:33
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 msgid "Expand all files"
5253 msgid "Expand all files"
5262 msgstr ""
5254 msgstr ""
5263
5255
@@ -5557,6 +5549,30 b' msgstr ""'
5557 msgid "MathML"
5549 msgid "MathML"
5558 msgstr ""
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 #: rhodecode/templates/index.mako:5
5576 #: rhodecode/templates/index.mako:5
5561 msgid "Dashboard"
5577 msgid "Dashboard"
5562 msgstr ""
5578 msgstr ""
@@ -5622,7 +5638,7 b' msgstr ""'
5622 #: rhodecode/templates/forks/fork.mako:56
5638 #: rhodecode/templates/forks/fork.mako:56
5623 #: rhodecode/templates/forks/forks.mako:62
5639 #: rhodecode/templates/forks/forks.mako:62
5624 #: rhodecode/templates/pullrequests/pullrequest.mako:104
5640 #: rhodecode/templates/pullrequests/pullrequest.mako:104
5625 #: rhodecode/templates/pullrequests/pullrequest_show.mako:400
5641 #: rhodecode/templates/pullrequests/pullrequest_show.mako:398
5626 #: rhodecode/templates/summary/components.mako:159
5642 #: rhodecode/templates/summary/components.mako:159
5627 #: rhodecode/templates/user_group/profile.mako:25
5643 #: rhodecode/templates/user_group/profile.mako:25
5628 #: rhodecode/templates/users/user_profile.mako:59
5644 #: rhodecode/templates/users/user_profile.mako:59
@@ -5664,7 +5680,7 b' msgstr ""'
5664 #: rhodecode/templates/email_templates/commit_comment.mako:114
5680 #: rhodecode/templates/email_templates/commit_comment.mako:114
5665 #: rhodecode/templates/email_templates/commit_comment.mako:141
5681 #: rhodecode/templates/email_templates/commit_comment.mako:141
5666 #: rhodecode/templates/files/file_authors_box.mako:28
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 #: rhodecode/templates/search/search_commit.mako:9
5684 #: rhodecode/templates/search/search_commit.mako:9
5669 #: rhodecode/templates/summary/components.mako:117
5685 #: rhodecode/templates/summary/components.mako:117
5670 #: rhodecode/templates/summary/components.mako:125
5686 #: rhodecode/templates/summary/components.mako:125
@@ -5716,16 +5732,16 b' msgstr ""'
5716 msgid "Please contact "
5732 msgid "Please contact "
5717 msgstr ""
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 #: rhodecode/templates/base/base.mako:63
5736 #: rhodecode/templates/base/base.mako:63
5721 msgid "Support"
5737 msgid "Support"
5722 msgstr ""
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 msgid "or"
5741 msgid "or"
5726 msgstr ""
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 msgid "an administrator if you need help."
5745 msgid "an administrator if you need help."
5730 msgstr ""
5746 msgstr ""
5731
5747
@@ -5737,32 +5753,32 b' msgstr ""'
5737 msgid "Reset Password"
5753 msgid "Reset Password"
5738 msgstr ""
5754 msgstr ""
5739
5755
5740 #: rhodecode/templates/password_reset.mako:37
5756 #: rhodecode/templates/password_reset.mako:38
5741 msgid "Password reset is disabled. Please contact "
5757 msgid "Password reset is disabled. Please contact "
5742 msgstr ""
5758 msgstr ""
5743
5759
5744 #: rhodecode/templates/password_reset.mako:49
5745 msgid "Reset your Password"
5746 msgstr ""
5747
5748 #: rhodecode/templates/password_reset.mako:50
5760 #: rhodecode/templates/password_reset.mako:50
5761 msgid "Reset your Password"
5762 msgstr ""
5763
5764 #: rhodecode/templates/password_reset.mako:51
5749 msgid "Go to the login page to sign in."
5765 msgid "Go to the login page to sign in."
5750 msgstr ""
5766 msgstr ""
5751
5767
5752 #: rhodecode/templates/password_reset.mako:54
5768 #: rhodecode/templates/password_reset.mako:55
5753 msgid "Email Address"
5769 msgid "Email Address"
5754 msgstr ""
5770 msgstr ""
5755
5771
5756 #: rhodecode/templates/password_reset.mako:60
5772 #: rhodecode/templates/password_reset.mako:61
5757 msgid "Password reset link will be sent to matching email address"
5773 msgid "Password reset link will be sent to matching email address"
5758 msgstr ""
5774 msgstr ""
5759
5775
5760 #: rhodecode/templates/password_reset.mako:64
5776 #: rhodecode/templates/password_reset.mako:65
5761 #: rhodecode/templates/register.mako:104
5777 #: rhodecode/templates/register.mako:106
5762 msgid "Captcha"
5778 msgid "Captcha"
5763 msgstr ""
5779 msgstr ""
5764
5780
5765 #: rhodecode/templates/password_reset.mako:75
5781 #: rhodecode/templates/password_reset.mako:76
5766 msgid "Send password reset email"
5782 msgid "Send password reset email"
5767 msgstr ""
5783 msgstr ""
5768
5784
@@ -5770,23 +5786,23 b' msgstr ""'
5770 msgid "Create an Account"
5786 msgid "Create an Account"
5771 msgstr ""
5787 msgstr ""
5772
5788
5773 #: rhodecode/templates/register.mako:38
5789 #: rhodecode/templates/register.mako:40
5774 msgid "Create an account linked with {}"
5790 msgid "Create an account linked with {}"
5775 msgstr ""
5791 msgstr ""
5776
5792
5777 #: rhodecode/templates/register.mako:40
5793 #: rhodecode/templates/register.mako:42
5778 msgid "Create an account"
5794 msgid "Create an account"
5779 msgstr ""
5795 msgstr ""
5780
5796
5781 #: rhodecode/templates/register.mako:43
5797 #: rhodecode/templates/register.mako:45
5782 msgid "Go to the login page to sign in with an existing account."
5798 msgid "Go to the login page to sign in with an existing account."
5783 msgstr ""
5799 msgstr ""
5784
5800
5785 #: rhodecode/templates/register.mako:69
5801 #: rhodecode/templates/register.mako:71
5786 msgid "Re-enter password"
5802 msgid "Re-enter password"
5787 msgstr ""
5803 msgstr ""
5788
5804
5789 #: rhodecode/templates/register.mako:81
5805 #: rhodecode/templates/register.mako:83
5790 #: rhodecode/templates/admin/my_account/my_account_profile.mako:48
5806 #: rhodecode/templates/admin/my_account/my_account_profile.mako:48
5791 #: rhodecode/templates/admin/my_account/my_account_profile_edit.mako:38
5807 #: rhodecode/templates/admin/my_account/my_account_profile_edit.mako:38
5792 #: rhodecode/templates/admin/users/user_add.mako:68
5808 #: rhodecode/templates/admin/users/user_add.mako:68
@@ -5795,7 +5811,7 b' msgstr ""'
5795 msgid "First Name"
5811 msgid "First Name"
5796 msgstr ""
5812 msgstr ""
5797
5813
5798 #: rhodecode/templates/register.mako:88
5814 #: rhodecode/templates/register.mako:90
5799 #: rhodecode/templates/admin/my_account/my_account_profile.mako:58
5815 #: rhodecode/templates/admin/my_account/my_account_profile.mako:58
5800 #: rhodecode/templates/admin/my_account/my_account_profile_edit.mako:47
5816 #: rhodecode/templates/admin/my_account/my_account_profile_edit.mako:47
5801 #: rhodecode/templates/admin/users/user_add.mako:77
5817 #: rhodecode/templates/admin/users/user_add.mako:77
@@ -5804,15 +5820,15 b' msgstr ""'
5804 msgid "Last Name"
5820 msgid "Last Name"
5805 msgstr ""
5821 msgstr ""
5806
5822
5807 #: rhodecode/templates/register.mako:116
5823 #: rhodecode/templates/register.mako:118
5808 msgid "Account activation requires admin approval."
5824 msgid "Account activation requires admin approval."
5809 msgstr ""
5825 msgstr ""
5810
5826
5811 #: rhodecode/templates/register.mako:123
5827 #: rhodecode/templates/register.mako:125
5812 msgid "Create Account"
5828 msgid "Create Account"
5813 msgstr ""
5829 msgstr ""
5814
5830
5815 #: rhodecode/templates/register.mako:123
5831 #: rhodecode/templates/register.mako:125
5816 msgid "Create Account in {}"
5832 msgid "Create Account in {}"
5817 msgstr ""
5833 msgstr ""
5818
5834
@@ -6108,9 +6124,7 b' msgstr ""'
6108
6124
6109 #: rhodecode/templates/admin/gists/gist_edit.mako:100
6125 #: rhodecode/templates/admin/gists/gist_edit.mako:100
6110 #: rhodecode/templates/base/issue_tracker_settings.mako:151
6126 #: rhodecode/templates/base/issue_tracker_settings.mako:151
6111 #: rhodecode/templates/changeset/changeset_file_comment.mako:487
6127 #: rhodecode/templates/pullrequests/pullrequest_show.mako:82
6112 #: rhodecode/templates/codeblocks/diffs.mako:90
6113 #: rhodecode/templates/pullrequests/pullrequest_show.mako:84
6114 msgid "Cancel"
6128 msgid "Cancel"
6115 msgstr ""
6129 msgstr ""
6116
6130
@@ -6173,14 +6187,14 b' msgid "quick filter..."'
6173 msgstr ""
6187 msgstr ""
6174
6188
6175 #: rhodecode/templates/admin/gists/gist_index.mako:103
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 #: rhodecode/templates/bookmarks/bookmarks.mako:73
6191 #: rhodecode/templates/bookmarks/bookmarks.mako:73
6178 #: rhodecode/templates/branches/branches.mako:72
6192 #: rhodecode/templates/branches/branches.mako:72
6179 #: rhodecode/templates/commits/changelog.mako:119
6193 #: rhodecode/templates/commits/changelog.mako:138
6180 #: rhodecode/templates/compare/compare_commits.mako:16
6194 #: rhodecode/templates/compare/compare_commits.mako:16
6181 #: rhodecode/templates/files/files_browser_tree.mako:20
6195 #: rhodecode/templates/files/files_browser_tree.mako:20
6182 #: rhodecode/templates/pullrequests/pullrequest_show.mako:397
6196 #: rhodecode/templates/pullrequests/pullrequest_show.mako:395
6183 #: rhodecode/templates/pullrequests/pullrequests.mako:98
6197 #: rhodecode/templates/pullrequests/pullrequests.mako:100
6184 #: rhodecode/templates/search/search_commit.mako:18
6198 #: rhodecode/templates/search/search_commit.mako:18
6185 #: rhodecode/templates/summary/summary_commits.mako:11
6199 #: rhodecode/templates/summary/summary_commits.mako:11
6186 #: rhodecode/templates/tags/tags.mako:73
6200 #: rhodecode/templates/tags/tags.mako:73
@@ -6195,7 +6209,7 b' msgstr ""'
6195 #: rhodecode/templates/admin/user_groups/user_group_edit_advanced.mako:7
6209 #: rhodecode/templates/admin/user_groups/user_group_edit_advanced.mako:7
6196 #: rhodecode/templates/admin/users/user_edit_advanced.mako:6
6210 #: rhodecode/templates/admin/users/user_edit_advanced.mako:6
6197 #: rhodecode/templates/admin/users/user_edit_ssh_keys.mako:16
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 msgid "Created on"
6213 msgid "Created on"
6200 msgstr ""
6214 msgstr ""
6201
6215
@@ -6691,26 +6705,26 b' msgstr ""'
6691 msgid "Pull Requests You Participate In"
6705 msgid "Pull Requests You Participate In"
6692 msgstr ""
6706 msgstr ""
6693
6707
6694 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:73
6708 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:75
6695 #: rhodecode/templates/pullrequests/pullrequests.mako:94
6709 #: rhodecode/templates/pullrequests/pullrequests.mako:96
6696 msgid "Id"
6710 msgid "Id"
6697 msgstr ""
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 #: rhodecode/templates/admin/settings/settings_global.mako:9
6714 #: rhodecode/templates/admin/settings/settings_global.mako:9
6701 #: rhodecode/templates/email_templates/pull_request_review.mako:47
6715 #: rhodecode/templates/email_templates/pull_request_review.mako:47
6702 #: rhodecode/templates/email_templates/pull_request_update.mako:43
6716 #: rhodecode/templates/email_templates/pull_request_update.mako:43
6703 #: rhodecode/templates/pullrequests/pullrequest.mako:91
6717 #: rhodecode/templates/pullrequests/pullrequest.mako:91
6704 #: rhodecode/templates/pullrequests/pullrequests.mako:96
6718 #: rhodecode/templates/pullrequests/pullrequests.mako:98
6705 msgid "Title"
6719 msgid "Title"
6706 msgstr ""
6720 msgstr ""
6707
6721
6708 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:97
6722 #: rhodecode/templates/admin/my_account/my_account_pullrequests.mako:99
6709 #: rhodecode/templates/pullrequests/pullrequests.mako:102
6723 #: rhodecode/templates/pullrequests/pullrequests.mako:104
6710 msgid "Last Update"
6724 msgid "Last Update"
6711 msgstr ""
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 msgid "Target Repo"
6728 msgid "Target Repo"
6715 msgstr ""
6729 msgstr ""
6716
6730
@@ -6816,10 +6830,10 b' msgid "Unread"'
6816 msgstr ""
6830 msgstr ""
6817
6831
6818 #: rhodecode/templates/admin/notifications/notifications_show_all.mako:41
6832 #: rhodecode/templates/admin/notifications/notifications_show_all.mako:41
6819 #: rhodecode/templates/changeset/changeset.mako:254
6833 #: rhodecode/templates/changeset/changeset.mako:252
6820 #: rhodecode/templates/changeset/changeset.mako:264
6834 #: rhodecode/templates/changeset/changeset.mako:262
6821 #: rhodecode/templates/pullrequests/pullrequest_show.mako:729
6835 #: rhodecode/templates/pullrequests/pullrequest_show.mako:763
6822 #: rhodecode/templates/pullrequests/pullrequest_show.mako:739
6836 #: rhodecode/templates/pullrequests/pullrequest_show.mako:773
6823 msgid "Comments"
6837 msgid "Comments"
6824 msgstr ""
6838 msgstr ""
6825
6839
@@ -7858,7 +7872,7 b' msgid "Private repository"'
7858 msgstr ""
7872 msgstr ""
7859
7873
7860 #: rhodecode/templates/admin/repos/repo_edit_settings.mako:204
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 msgid "Enable statistics"
7876 msgid "Enable statistics"
7863 msgstr ""
7877 msgstr ""
7864
7878
@@ -9043,10 +9057,10 b' msgstr ""'
9043
9057
9044 #: rhodecode/templates/base/base.mako:161
9058 #: rhodecode/templates/base/base.mako:161
9045 #: rhodecode/templates/base/base.mako:201
9059 #: rhodecode/templates/base/base.mako:201
9046 #: rhodecode/templates/changeset/changeset.mako:142
9060 #: rhodecode/templates/changeset/changeset.mako:140
9047 #: rhodecode/templates/files/files_source_header.mako:57
9061 #: rhodecode/templates/files/files_source_header.mako:57
9048 #: rhodecode/templates/files/files_tree_header.mako:44
9062 #: rhodecode/templates/files/files_tree_header.mako:44
9049 #: rhodecode/templates/summary/components.mako:275
9063 #: rhodecode/templates/summary/components.mako:274
9050 msgid "Show More"
9064 msgid "Show More"
9051 msgstr ""
9065 msgstr ""
9052
9066
@@ -9358,9 +9372,9 b' msgid "Confirm to remove this pattern:"'
9358 msgstr ""
9372 msgstr ""
9359
9373
9360 #: rhodecode/templates/base/issue_tracker_settings.mako:300
9374 #: rhodecode/templates/base/issue_tracker_settings.mako:300
9361 #: rhodecode/templates/changeset/changeset_file_comment.mako:367
9375 #: rhodecode/templates/changeset/changeset_file_comment.mako:395
9362 #: rhodecode/templates/changeset/changeset_file_comment.mako:418
9376 #: rhodecode/templates/changeset/changeset_file_comment.mako:446
9363 #: rhodecode/templates/data_table/_dt_elements.mako:453
9377 #: rhodecode/templates/data_table/_dt_elements.mako:456
9364 #: rhodecode/templates/files/files_add.mako:59
9378 #: rhodecode/templates/files/files_add.mako:59
9365 #: rhodecode/templates/files/files_edit.mako:61
9379 #: rhodecode/templates/files/files_edit.mako:61
9366 msgid "Preview"
9380 msgid "Preview"
@@ -9708,7 +9722,7 b' msgstr ""'
9708 msgid "{} Commit"
9722 msgid "{} Commit"
9709 msgstr ""
9723 msgstr ""
9710
9724
9711 #: rhodecode/templates/changeset/changeset.mako:80
9725 #: rhodecode/templates/changeset/changeset.mako:78
9712 #: rhodecode/templates/commits/changelog_elements.mako:56
9726 #: rhodecode/templates/commits/changelog_elements.mako:56
9713 #: rhodecode/templates/files/files_source_header.mako:48
9727 #: rhodecode/templates/files/files_source_header.mako:48
9714 #: rhodecode/templates/files/files_tree_header.mako:35
9728 #: rhodecode/templates/files/files_tree_header.mako:35
@@ -9716,119 +9730,127 b' msgstr ""'
9716 msgid "Copy the full commit id"
9730 msgid "Copy the full commit id"
9717 msgstr ""
9731 msgstr ""
9718
9732
9719 #: rhodecode/templates/changeset/changeset.mako:85
9733 #: rhodecode/templates/changeset/changeset.mako:83
9720 msgid "Commit phase"
9734 msgid "Commit phase"
9721 msgstr ""
9735 msgstr ""
9722
9736
9723 #: rhodecode/templates/changeset/changeset.mako:92
9737 #: rhodecode/templates/changeset/changeset.mako:90
9724 #: rhodecode/templates/changeset/changeset.mako:99
9738 #: rhodecode/templates/changeset/changeset.mako:97
9725 msgid "Evolve State"
9739 msgid "Evolve State"
9726 msgstr ""
9740 msgstr ""
9727
9741
9728 #: rhodecode/templates/changeset/changeset.mako:93
9742 #: rhodecode/templates/changeset/changeset.mako:91
9729 msgid "obsolete"
9743 msgid "obsolete"
9730 msgstr ""
9744 msgstr ""
9731
9745
9732 #: rhodecode/templates/changeset/changeset.mako:100
9746 #: rhodecode/templates/changeset/changeset.mako:98
9733 msgid "hidden"
9747 msgid "hidden"
9734 msgstr ""
9748 msgstr ""
9735
9749
9736 #: rhodecode/templates/changeset/changeset.mako:106
9750 #: rhodecode/templates/changeset/changeset.mako:104
9737 msgid "Parent Commit"
9751 msgid "Parent Commit"
9738 msgstr ""
9752 msgstr ""
9739
9753
9740 #: rhodecode/templates/changeset/changeset.mako:106
9754 #: rhodecode/templates/changeset/changeset.mako:104
9741 msgid "parent"
9755 msgid "parent"
9742 msgstr ""
9756 msgstr ""
9743
9757
9744 #: rhodecode/templates/changeset/changeset.mako:110
9758 #: rhodecode/templates/changeset/changeset.mako:108
9745 msgid "Child Commit"
9759 msgid "Child Commit"
9746 msgstr ""
9760 msgstr ""
9747
9761
9748 #: rhodecode/templates/changeset/changeset.mako:110
9762 #: rhodecode/templates/changeset/changeset.mako:108
9749 msgid "child"
9763 msgid "child"
9750 msgstr ""
9764 msgstr ""
9751
9765
9752 #: rhodecode/templates/changeset/changeset.mako:120
9766 #: rhodecode/templates/changeset/changeset.mako:118
9753 msgid "Diff options"
9767 msgid "Diff options"
9754 msgstr ""
9768 msgstr ""
9755
9769
9756 #: rhodecode/templates/changeset/changeset.mako:124
9770 #: rhodecode/templates/changeset/changeset.mako:122
9757 msgid "Raw Diff"
9771 msgid "Raw Diff"
9758 msgstr ""
9772 msgstr ""
9759
9773
9760 #: rhodecode/templates/changeset/changeset.mako:128
9774 #: rhodecode/templates/changeset/changeset.mako:126
9761 msgid "Patch Diff"
9775 msgid "Patch Diff"
9762 msgstr ""
9776 msgstr ""
9763
9777
9764 #: rhodecode/templates/changeset/changeset.mako:132
9778 #: rhodecode/templates/changeset/changeset.mako:130
9765 msgid "Download Diff"
9779 msgid "Download Diff"
9766 msgstr ""
9780 msgstr ""
9767
9781
9768 #: rhodecode/templates/changeset/changeset.mako:162
9782 #: rhodecode/templates/changeset/changeset.mako:160
9769 #: rhodecode/templates/pullrequests/pullrequest_show.mako:504
9783 #: rhodecode/templates/pullrequests/pullrequest_show.mako:502
9770 msgid "General Comments"
9784 msgid "General Comments"
9771 msgstr ""
9785 msgstr ""
9772
9786
9773 #: rhodecode/templates/changeset/changeset.mako:203
9787 #: rhodecode/templates/changeset/changeset.mako:201
9774 #: rhodecode/templates/pullrequests/pullrequest_show.mako:585
9788 #: rhodecode/templates/pullrequests/pullrequest_show.mako:619
9775 msgid "Reviewers"
9789 msgid "Reviewers"
9776 msgstr ""
9790 msgstr ""
9777
9791
9778 #: rhodecode/templates/changeset/changeset.mako:244
9792 #: rhodecode/templates/changeset/changeset.mako:242
9779 #: rhodecode/templates/pullrequests/pullrequest_show.mako:718
9793 #: rhodecode/templates/pullrequests/pullrequest_show.mako:579
9794 #: rhodecode/templates/pullrequests/pullrequest_show.mako:752
9780 msgid "No TODOs yet"
9795 msgid "No TODOs yet"
9781 msgstr ""
9796 msgstr ""
9782
9797
9783 #: rhodecode/templates/changeset/changeset.mako:276
9798 #: rhodecode/templates/changeset/changeset.mako:274
9784 #: rhodecode/templates/pullrequests/pullrequest_show.mako:769
9799 #: rhodecode/templates/pullrequests/pullrequest_show.mako:803
9785 msgid "No Comments yet"
9800 msgid "No Comments yet"
9786 msgstr ""
9801 msgstr ""
9787
9802
9788 #: rhodecode/templates/changeset/changeset.mako:332
9803 #: rhodecode/templates/changeset/changeset.mako:330
9789 msgid "No Child Commits"
9804 msgid "No Child Commits"
9790 msgstr ""
9805 msgstr ""
9791
9806
9792 #: rhodecode/templates/changeset/changeset.mako:379
9807 #: rhodecode/templates/changeset/changeset.mako:377
9793 msgid "No Parent Commits"
9808 msgid "No Parent Commits"
9794 msgstr ""
9809 msgstr ""
9795
9810
9796 #: rhodecode/templates/changeset/changeset_file_comment.mako:47
9811 #: rhodecode/templates/changeset/changeset_file_comment.mako:51
9797 msgid "Resolved by comment #{}"
9812 msgid "Draft comments are only visible to the author until submitted"
9798 msgstr ""
9813 msgstr ""
9799
9814
9800 #: rhodecode/templates/changeset/changeset_file_comment.mako:55
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 msgid "Click to create resolution comment."
9824 msgid "Click to create resolution comment."
9802 msgstr ""
9825 msgstr ""
9803
9826
9804 #: rhodecode/templates/changeset/changeset_file_comment.mako:64
9827 #: rhodecode/templates/changeset/changeset_file_comment.mako:82
9805 msgid "This comment resolves TODO #{}"
9828 msgid "This comment resolves TODO #{}"
9806 msgstr ""
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 #: rhodecode/templates/changeset/changeset_file_comment.mako:114
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 msgid "author"
9840 msgid "author"
9818 msgstr ""
9841 msgstr ""
9819
9842
9820 #: rhodecode/templates/changeset/changeset_file_comment.mako:167
9843 #: rhodecode/templates/changeset/changeset_file_comment.mako:187
9821 #: rhodecode/templates/changeset/changeset_file_comment.mako:181
9844 #: rhodecode/templates/changeset/changeset_file_comment.mako:201
9822 msgid "Outdated comment from pull request version v{0}, latest v{1}"
9845 msgid "Outdated comment from pull request version v{0}, latest v{1}"
9823 msgstr ""
9846 msgstr ""
9824
9847
9825 #: rhodecode/templates/changeset/changeset_file_comment.mako:170
9848 #: rhodecode/templates/changeset/changeset_file_comment.mako:190
9826 #: rhodecode/templates/changeset/changeset_file_comment.mako:186
9849 #: rhodecode/templates/changeset/changeset_file_comment.mako:206
9827 msgid "Comment from pull request version v{0}, latest v{1}"
9850 msgid "Comment from pull request version v{0}, latest v{1}"
9828 msgstr ""
9851 msgstr ""
9829
9852
9830 #: rhodecode/templates/changeset/changeset_file_comment.mako:202
9853 #: rhodecode/templates/changeset/changeset_file_comment.mako:222
9831 #: rhodecode/templates/changeset/changeset_file_comment.mako:480
9832 #: rhodecode/templates/compare/compare_diff.mako:108
9854 #: rhodecode/templates/compare/compare_diff.mako:108
9833 #: rhodecode/templates/compare/compare_diff.mako:116
9855 #: rhodecode/templates/compare/compare_diff.mako:116
9834 #: rhodecode/templates/compare/compare_diff.mako:124
9856 #: rhodecode/templates/compare/compare_diff.mako:124
@@ -9836,98 +9858,93 b' msgstr ""'
9836 msgid "Comment"
9858 msgid "Comment"
9837 msgstr ""
9859 msgstr ""
9838
9860
9839 #: rhodecode/templates/changeset/changeset_file_comment.mako:203
9861 #: rhodecode/templates/changeset/changeset_file_comment.mako:223
9840 #: rhodecode/templates/files/files_source.mako:117
9862 #: rhodecode/templates/files/files_source.mako:117
9841 msgid "Copy permalink"
9863 msgid "Copy permalink"
9842 msgstr ""
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 #: rhodecode/templates/changeset/changeset_file_comment.mako:241
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 msgid "Jump to the previous outdated comment"
9878 msgid "Jump to the previous outdated comment"
9853 msgstr ""
9879 msgstr ""
9854
9880
9855 #: rhodecode/templates/changeset/changeset_file_comment.mako:242
9881 #: rhodecode/templates/changeset/changeset_file_comment.mako:268
9856 msgid "Jump to the next outdated comment"
9882 msgid "Jump to the next outdated comment"
9857 msgstr ""
9883 msgstr ""
9858
9884
9859 #: rhodecode/templates/changeset/changeset_file_comment.mako:244
9885 #: rhodecode/templates/changeset/changeset_file_comment.mako:270
9860 msgid "Jump to the previous comment"
9886 msgid "Jump to the previous comment"
9861 msgstr ""
9887 msgstr ""
9862
9888
9863 #: rhodecode/templates/changeset/changeset_file_comment.mako:245
9889 #: rhodecode/templates/changeset/changeset_file_comment.mako:271
9864 msgid "Jump to the next comment"
9890 msgid "Jump to the next comment"
9865 msgstr ""
9891 msgstr ""
9866
9892
9867 #: rhodecode/templates/changeset/changeset_file_comment.mako:284
9893 #: rhodecode/templates/changeset/changeset_file_comment.mako:311
9868 msgid "Leave a comment on this Pull Request."
9894 msgid "Leave a comment on this Pull Request."
9869 msgstr ""
9895 msgstr ""
9870
9896
9871 #: rhodecode/templates/changeset/changeset_file_comment.mako:286
9897 #: rhodecode/templates/changeset/changeset_file_comment.mako:313
9872 msgid "Leave a comment on {} commits in this range."
9898 msgid "Leave a comment on {} commits in this range."
9873 msgstr ""
9899 msgstr ""
9874
9900
9875 #: rhodecode/templates/changeset/changeset_file_comment.mako:288
9901 #: rhodecode/templates/changeset/changeset_file_comment.mako:315
9876 msgid "Leave a comment on this Commit."
9902 msgid "Leave a comment on this Commit."
9877 msgstr ""
9903 msgstr ""
9878
9904
9879 #: rhodecode/templates/changeset/changeset_file_comment.mako:375
9905 #: rhodecode/templates/changeset/changeset_file_comment.mako:403
9880 #: rhodecode/templates/codeblocks/diffs.mako:85
9881 msgid "You need to be logged in to leave comments."
9906 msgid "You need to be logged in to leave comments."
9882 msgstr ""
9907 msgstr ""
9883
9908
9884 #: rhodecode/templates/changeset/changeset_file_comment.mako:376
9909 #: rhodecode/templates/changeset/changeset_file_comment.mako:404
9885 #: rhodecode/templates/codeblocks/diffs.mako:85
9886 msgid "Login now"
9910 msgid "Login now"
9887 msgstr ""
9911 msgstr ""
9888
9912
9889 #: rhodecode/templates/changeset/changeset_file_comment.mako:423
9913 #: rhodecode/templates/changeset/changeset_file_comment.mako:451
9890 msgid "Mark as"
9914 msgid "Mark as"
9891 msgstr ""
9915 msgstr ""
9892
9916
9893 #: rhodecode/templates/changeset/changeset_file_comment.mako:446
9917 #: rhodecode/templates/changeset/changeset_file_comment.mako:474
9894 #: rhodecode/templates/files/files_upload.mako:86
9918 #: rhodecode/templates/files/files_upload.mako:86
9895 msgid "Drag'n Drop files here or"
9919 msgid "Drag'n Drop files here or"
9896 msgstr ""
9920 msgstr ""
9897
9921
9898 #: rhodecode/templates/changeset/changeset_file_comment.mako:446
9922 #: rhodecode/templates/changeset/changeset_file_comment.mako:474
9899 #: rhodecode/templates/files/files_upload.mako:86
9923 #: rhodecode/templates/files/files_upload.mako:86
9900 msgid "Choose your files"
9924 msgid "Choose your files"
9901 msgstr ""
9925 msgstr ""
9902
9926
9903 #: rhodecode/templates/changeset/changeset_file_comment.mako:449
9927 #: rhodecode/templates/changeset/changeset_file_comment.mako:477
9904 msgid "uploading..."
9928 msgid "uploading..."
9905 msgstr ""
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 #: rhodecode/templates/changeset/changeset_file_comment.mako:508
9931 #: rhodecode/templates/changeset/changeset_file_comment.mako:508
9914 msgid "Comments parsed using {} syntax."
9932 msgid "Add comment"
9915 msgstr ""
9933 msgstr ""
9916
9934
9917 #: rhodecode/templates/changeset/changeset_file_comment.mako:509
9935 #: rhodecode/templates/changeset/changeset_file_comment.mako:513
9918 msgid "Use @username inside this text to send notification to this RhodeCode user"
9936 #: rhodecode/templates/changeset/changeset_file_comment.mako:515
9919 msgstr ""
9937 msgid "Add draft"
9920
9938 msgstr ""
9921 #: rhodecode/templates/changeset/changeset_file_comment.mako:510
9939
9922 msgid "and"
9940 #: rhodecode/templates/changeset/changeset_file_comment.mako:526
9923 msgstr ""
9941 #: rhodecode/templates/pullrequests/pullrequest_show.mako:46
9924
9942 #: rhodecode/templates/pullrequests/pullrequests.mako:31
9925 #: rhodecode/templates/changeset/changeset_file_comment.mako:511
9943 msgid "Closed"
9926 msgid "Start typing with / for certain actions to be triggered via text box."
9944 msgstr ""
9927 msgstr ""
9945
9928
9946 #: rhodecode/templates/changeset/changeset_file_comment.mako:545
9929 #: rhodecode/templates/changeset/changeset_file_comment.mako:512
9947 msgid "{} is supported."
9930 msgid "actions supported."
9931 msgstr ""
9948 msgstr ""
9932
9949
9933 #: rhodecode/templates/changeset/changeset_range.mako:5
9950 #: rhodecode/templates/changeset/changeset_range.mako:5
@@ -9948,6 +9965,7 b' msgid "Diff Option"'
9948 msgstr ""
9965 msgstr ""
9949
9966
9950 #: rhodecode/templates/changeset/changeset_range.mako:71
9967 #: rhodecode/templates/changeset/changeset_range.mako:71
9968 #: rhodecode/templates/commits/changelog.mako:124
9951 msgid "Show combined diff"
9969 msgid "Show combined diff"
9952 msgstr ""
9970 msgstr ""
9953
9971
@@ -9959,8 +9977,8 b' msgstr ""'
9959 #: rhodecode/templates/changeset/diff_block.mako:10
9977 #: rhodecode/templates/changeset/diff_block.mako:10
9960 #: rhodecode/templates/changeset/diff_block.mako:25
9978 #: rhodecode/templates/changeset/diff_block.mako:25
9961 #: rhodecode/templates/changeset/diff_block.mako:46
9979 #: rhodecode/templates/changeset/diff_block.mako:46
9962 #: rhodecode/templates/codeblocks/diffs.mako:210
9980 #: rhodecode/templates/codeblocks/diffs.mako:196
9963 #: rhodecode/templates/codeblocks/diffs.mako:341
9981 #: rhodecode/templates/codeblocks/diffs.mako:327
9964 msgid "Showing a big diff might take some time and resources, continue?"
9982 msgid "Showing a big diff might take some time and resources, continue?"
9965 msgstr ""
9983 msgstr ""
9966
9984
@@ -9968,8 +9986,8 b' msgstr ""'
9968 #: rhodecode/templates/changeset/diff_block.mako:10
9986 #: rhodecode/templates/changeset/diff_block.mako:10
9969 #: rhodecode/templates/changeset/diff_block.mako:25
9987 #: rhodecode/templates/changeset/diff_block.mako:25
9970 #: rhodecode/templates/changeset/diff_block.mako:46
9988 #: rhodecode/templates/changeset/diff_block.mako:46
9971 #: rhodecode/templates/codeblocks/diffs.mako:210
9989 #: rhodecode/templates/codeblocks/diffs.mako:196
9972 #: rhodecode/templates/codeblocks/diffs.mako:341
9990 #: rhodecode/templates/codeblocks/diffs.mako:327
9973 msgid "Show full diff"
9991 msgid "Show full diff"
9974 msgstr ""
9992 msgstr ""
9975
9993
@@ -9982,148 +10000,149 b' msgstr ""'
9982 msgid "Diff was truncated. File content available only in full diff."
10000 msgid "Diff was truncated. File content available only in full diff."
9983 msgstr ""
10001 msgstr ""
9984
10002
9985 #: rhodecode/templates/codeblocks/diffs.mako:143
10003 #: rhodecode/templates/codeblocks/diffs.mako:129
9986 msgid "not available in this view"
10004 msgid "not available in this view"
9987 msgstr ""
10005 msgstr ""
9988
10006
9989 #: rhodecode/templates/codeblocks/diffs.mako:152
10007 #: rhodecode/templates/codeblocks/diffs.mako:138
9990 msgid "{} unresolved"
10008 msgid "{} unresolved"
9991 msgstr ""
10009 msgstr ""
9992
10010
9993 #: rhodecode/templates/codeblocks/diffs.mako:155
10011 #: rhodecode/templates/codeblocks/diffs.mako:141
9994 msgid "0 unresolved"
10012 msgid "0 unresolved"
9995 msgstr ""
10013 msgstr ""
9996
10014
9997 #: rhodecode/templates/codeblocks/diffs.mako:158
10015 #: rhodecode/templates/codeblocks/diffs.mako:144
9998 msgid "{} Resolved"
10016 msgid "{} Resolved"
9999 msgstr ""
10017 msgstr ""
10000
10018
10001 #: rhodecode/templates/codeblocks/diffs.mako:209
10019 #: rhodecode/templates/codeblocks/diffs.mako:195
10002 msgid "The requested changes are too big and content was truncated."
10020 msgid "The requested changes are too big and content was truncated."
10003 msgstr ""
10021 msgstr ""
10004
10022
10005 #: rhodecode/templates/codeblocks/diffs.mako:226
10023 #: rhodecode/templates/codeblocks/diffs.mako:212
10006 msgid "Some changes may be hidden"
10024 msgid "Some changes may be hidden"
10007 msgstr ""
10025 msgstr ""
10008
10026
10009 #: rhodecode/templates/codeblocks/diffs.mako:228
10027 #: rhodecode/templates/codeblocks/diffs.mako:214
10010 msgid "No files"
10028 msgid "No files"
10011 msgstr ""
10029 msgstr ""
10012
10030
10013 #: rhodecode/templates/codeblocks/diffs.mako:341
10031 #: rhodecode/templates/codeblocks/diffs.mako:327
10014 msgid "The requested commit or file is too big and content was truncated."
10032 msgid "The requested commit or file is too big and content was truncated."
10015 msgstr ""
10033 msgstr ""
10016
10034
10017 #: rhodecode/templates/codeblocks/diffs.mako:348
10035 #: rhodecode/templates/codeblocks/diffs.mako:334
10018 #, python-format
10036 #, python-format
10019 msgid "This diff has been collapsed as it changes many lines, (%i lines changed)"
10037 msgid "This diff has been collapsed as it changes many lines, (%i lines changed)"
10020 msgstr ""
10038 msgstr ""
10021
10039
10022 #: rhodecode/templates/codeblocks/diffs.mako:350
10040 #: rhodecode/templates/codeblocks/diffs.mako:336
10023 msgid "Show them"
10041 msgid "Show them"
10024 msgstr ""
10042 msgstr ""
10025
10043
10026 #: rhodecode/templates/codeblocks/diffs.mako:353
10044 #: rhodecode/templates/codeblocks/diffs.mako:339
10027 msgid "Hide them"
10045 msgid "Hide them"
10028 msgstr ""
10046 msgstr ""
10029
10047
10030 #: rhodecode/templates/codeblocks/diffs.mako:390
10048 #: rhodecode/templates/codeblocks/diffs.mako:376
10031 #: rhodecode/templates/codeblocks/diffs.mako:409
10049 #: rhodecode/templates/codeblocks/diffs.mako:395
10032 msgid "Unmatched/outdated inline comments below"
10050 msgid "Unmatched/outdated inline comments below"
10033 msgstr ""
10051 msgstr ""
10034
10052
10035 #: rhodecode/templates/codeblocks/diffs.mako:415
10053 #: rhodecode/templates/codeblocks/diffs.mako:401
10036 msgid "Unmatched/outdated comments below"
10054 msgid "Unmatched/outdated comments below"
10037 msgstr ""
10055 msgstr ""
10038
10056
10039 #: rhodecode/templates/codeblocks/diffs.mako:489
10057 #: rhodecode/templates/codeblocks/diffs.mako:475
10040 msgid "This file was removed from diff during updates to this pull-request."
10058 msgid "This file was removed from diff during updates to this pull-request."
10041 msgstr ""
10059 msgstr ""
10042
10060
10043 #: rhodecode/templates/codeblocks/diffs.mako:490
10061 #: rhodecode/templates/codeblocks/diffs.mako:476
10044 msgid "There are still outdated/unresolved comments attached to it."
10062 msgid "There are still outdated/unresolved comments attached to it."
10045 msgstr ""
10063 msgstr ""
10046
10064
10047 #: rhodecode/templates/codeblocks/diffs.mako:596
10065 #: rhodecode/templates/codeblocks/diffs.mako:582
10048 #: rhodecode/templates/codeblocks/diffs.mako:614
10066 #: rhodecode/templates/codeblocks/diffs.mako:600
10049 #, python-format
10067 #, python-format
10050 msgid "Show file at commit: %(commit_id)s"
10068 msgid "Show file at commit: %(commit_id)s"
10051 msgstr ""
10069 msgstr ""
10052
10070
10053 #: rhodecode/templates/codeblocks/diffs.mako:598
10071 #: rhodecode/templates/codeblocks/diffs.mako:584
10054 #: rhodecode/templates/codeblocks/diffs.mako:605
10072 #: rhodecode/templates/codeblocks/diffs.mako:591
10055 msgid "Show file before"
10073 msgid "Show file before"
10056 msgstr ""
10074 msgstr ""
10057
10075
10058 #: rhodecode/templates/codeblocks/diffs.mako:603
10076 #: rhodecode/templates/codeblocks/diffs.mako:589
10059 #: rhodecode/templates/codeblocks/diffs.mako:621
10077 #: rhodecode/templates/codeblocks/diffs.mako:607
10060 #, python-format
10078 #, python-format
10061 msgid "File not present at commit: %(commit_id)s"
10079 msgid "File not present at commit: %(commit_id)s"
10062 msgstr ""
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 #: rhodecode/templates/codeblocks/diffs.mako:616
10087 #: rhodecode/templates/codeblocks/diffs.mako:616
10065 #: rhodecode/templates/codeblocks/diffs.mako:623
10088 #: rhodecode/templates/codeblocks/diffs.mako:618
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
10074 msgid "Hide comments"
10089 msgid "Hide comments"
10075 msgstr ""
10090 msgstr ""
10076
10091
10077 #: rhodecode/templates/codeblocks/diffs.mako:721
10092 #: rhodecode/templates/codeblocks/diffs.mako:617
10078 #: rhodecode/templates/codeblocks/diffs.mako:764
10093 msgid "Show comments"
10079 #: rhodecode/templates/codeblocks/diffs.mako:826
10094 msgstr ""
10080 msgid "comments including outdated: {}. Click here to display them."
10095
10081 msgstr ""
10096 #: rhodecode/templates/codeblocks/diffs.mako:726
10082
10097 #: rhodecode/templates/codeblocks/diffs.mako:773
10083 #: rhodecode/templates/codeblocks/diffs.mako:723
10098 #: rhodecode/templates/codeblocks/diffs.mako:840
10084 #: rhodecode/templates/codeblocks/diffs.mako:766
10099 msgid "Comments including outdated: {}. Click here to toggle them."
10085 #: rhodecode/templates/codeblocks/diffs.mako:828
10100 msgstr ""
10086 msgid "comments: {}. Click to toggle them."
10101
10087 msgstr ""
10102 #: rhodecode/templates/codeblocks/diffs.mako:728
10088
10103 #: rhodecode/templates/codeblocks/diffs.mako:775
10089 #: rhodecode/templates/codeblocks/diffs.mako:897
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 msgid "Toggle wide diff"
10109 msgid "Toggle wide diff"
10091 msgstr ""
10110 msgstr ""
10092
10111
10093 #: rhodecode/templates/codeblocks/diffs.mako:905
10112 #: rhodecode/templates/codeblocks/diffs.mako:922
10094 msgid "View diff as side by side"
10113 msgid "View diff as side by side"
10095 msgstr ""
10114 msgstr ""
10096
10115
10097 #: rhodecode/templates/codeblocks/diffs.mako:907
10116 #: rhodecode/templates/codeblocks/diffs.mako:924
10098 msgid "Side by Side"
10117 msgid "Side by Side"
10099 msgstr ""
10118 msgstr ""
10100
10119
10101 #: rhodecode/templates/codeblocks/diffs.mako:912
10120 #: rhodecode/templates/codeblocks/diffs.mako:929
10102 msgid "View diff as unified"
10121 msgid "View diff as unified"
10103 msgstr ""
10122 msgstr ""
10104
10123
10105 #: rhodecode/templates/codeblocks/diffs.mako:913
10124 #: rhodecode/templates/codeblocks/diffs.mako:930
10106 msgid "Unified"
10125 msgid "Unified"
10107 msgstr ""
10126 msgstr ""
10108
10127
10109 #: rhodecode/templates/codeblocks/diffs.mako:918
10128 #: rhodecode/templates/codeblocks/diffs.mako:935
10110 msgid "Turn off: Show the diff as commit range"
10129 msgid "Turn off: Show the diff as commit range"
10111 msgstr ""
10130 msgstr ""
10112
10131
10113 #: rhodecode/templates/codeblocks/diffs.mako:921
10132 #: rhodecode/templates/codeblocks/diffs.mako:938
10114 #: rhodecode/templates/codeblocks/diffs.mako:928
10133 #: rhodecode/templates/codeblocks/diffs.mako:945
10115 msgid "Range Diff"
10134 msgid "Range Diff"
10116 msgstr ""
10135 msgstr ""
10117
10136
10118 #: rhodecode/templates/codeblocks/diffs.mako:925
10137 #: rhodecode/templates/codeblocks/diffs.mako:942
10119 msgid "Show the diff as commit range"
10138 msgid "Show the diff as commit range"
10120 msgstr ""
10139 msgstr ""
10121
10140
10122 #: rhodecode/templates/codeblocks/diffs.mako:990
10141 #: rhodecode/templates/codeblocks/diffs.mako:1007
10123 msgid "Disabled on range diff"
10142 msgid "Disabled on range diff"
10124 msgstr ""
10143 msgstr ""
10125
10144
10126 #: rhodecode/templates/codeblocks/diffs.mako:1297
10145 #: rhodecode/templates/codeblocks/diffs.mako:1314
10127 msgid "..."
10146 msgid "..."
10128 msgstr ""
10147 msgstr ""
10129
10148
@@ -10171,25 +10190,25 b' msgstr ""'
10171 msgid "Select second commit"
10190 msgid "Select second commit"
10172 msgstr ""
10191 msgstr ""
10173
10192
10174 #: rhodecode/templates/commits/changelog.mako:116
10193 #: rhodecode/templates/commits/changelog.mako:135
10175 msgid "Commit Message"
10194 msgid "Commit Message"
10176 msgstr ""
10195 msgstr ""
10177
10196
10178 #: rhodecode/templates/commits/changelog.mako:118
10197 #: rhodecode/templates/commits/changelog.mako:137
10179 #: rhodecode/templates/summary/summary_commits.mako:10
10198 #: rhodecode/templates/summary/summary_commits.mako:10
10180 msgid "Age"
10199 msgid "Age"
10181 msgstr ""
10200 msgstr ""
10182
10201
10183 #: rhodecode/templates/commits/changelog.mako:121
10202 #: rhodecode/templates/commits/changelog.mako:140
10184 #: rhodecode/templates/summary/summary_commits.mako:12
10203 #: rhodecode/templates/summary/summary_commits.mako:12
10185 msgid "Refs"
10204 msgid "Refs"
10186 msgstr ""
10205 msgstr ""
10187
10206
10188 #: rhodecode/templates/commits/changelog.mako:262
10207 #: rhodecode/templates/commits/changelog.mako:289
10189 msgid "Branch filter"
10208 msgid "Branch filter"
10190 msgstr ""
10209 msgstr ""
10191
10210
10192 #: rhodecode/templates/commits/changelog.mako:323
10211 #: rhodecode/templates/commits/changelog.mako:350
10193 msgid "There are no changes yet"
10212 msgid "There are no changes yet"
10194 msgstr ""
10213 msgstr ""
10195
10214
@@ -10229,7 +10248,7 b' msgstr ""'
10229
10248
10230 #: rhodecode/templates/commits/changelog_elements.mako:80
10249 #: rhodecode/templates/commits/changelog_elements.mako:80
10231 #: rhodecode/templates/compare/compare_commits.mako:47
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 #: rhodecode/templates/search/search_commit.mako:34
10252 #: rhodecode/templates/search/search_commit.mako:34
10234 msgid "Expand commit message"
10253 msgid "Expand commit message"
10235 msgstr ""
10254 msgstr ""
@@ -10281,7 +10300,7 b' msgid "Compare was calculated based on t'
10281 msgstr ""
10300 msgstr ""
10282
10301
10283 #: rhodecode/templates/compare/compare_commits.mako:15
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 msgid "Time"
10304 msgid "Time"
10286 msgstr ""
10305 msgstr ""
10287
10306
@@ -10402,7 +10421,7 b' msgid "personal"'
10402 msgstr ""
10421 msgstr ""
10403
10422
10404 #: rhodecode/templates/data_table/_dt_elements.mako:387
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 msgid "Pull request !{}"
10425 msgid "Pull request !{}"
10407 msgstr ""
10426 msgstr ""
10408
10427
@@ -10410,11 +10429,11 b' msgstr ""'
10410 msgid "Work in progress"
10429 msgid "Work in progress"
10411 msgstr ""
10430 msgstr ""
10412
10431
10413 #: rhodecode/templates/data_table/_dt_elements.mako:429
10432 #: rhodecode/templates/data_table/_dt_elements.mako:432
10414 msgid "Info"
10433 msgid "Info"
10415 msgstr ""
10434 msgstr ""
10416
10435
10417 #: rhodecode/templates/data_table/_dt_elements.mako:470
10436 #: rhodecode/templates/data_table/_dt_elements.mako:473
10418 #, python-format
10437 #, python-format
10419 msgid "Parsed using %s syntax"
10438 msgid "Parsed using %s syntax"
10420 msgstr ""
10439 msgstr ""
@@ -10553,11 +10572,11 b' msgid "Don\'t have an account ?"'
10553 msgstr ""
10572 msgstr ""
10554
10573
10555 #: rhodecode/templates/email_templates/base.mako:72
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 msgid "This is a notification from RhodeCode."
10576 msgid "This is a notification from RhodeCode."
10558 msgstr ""
10577 msgstr ""
10559
10578
10560 #: rhodecode/templates/email_templates/base.mako:613
10579 #: rhodecode/templates/email_templates/base.mako:619
10561 msgid "RhodeCode"
10580 msgid "RhodeCode"
10562 msgstr ""
10581 msgstr ""
10563
10582
@@ -10718,8 +10737,8 b' msgstr ""'
10718 #: rhodecode/templates/email_templates/pull_request_review.mako:129
10737 #: rhodecode/templates/email_templates/pull_request_review.mako:129
10719 #: rhodecode/templates/email_templates/pull_request_update.mako:132
10738 #: rhodecode/templates/email_templates/pull_request_update.mako:132
10720 #: rhodecode/templates/email_templates/pull_request_update.mako:134
10739 #: rhodecode/templates/email_templates/pull_request_update.mako:134
10721 #: rhodecode/templates/pullrequests/pullrequest_show.mako:114
10740 #: rhodecode/templates/pullrequests/pullrequest_show.mako:112
10722 #: rhodecode/templates/pullrequests/pullrequest_show.mako:123
10741 #: rhodecode/templates/pullrequests/pullrequest_show.mako:121
10723 msgid "of"
10742 msgid "of"
10724 msgstr ""
10743 msgstr ""
10725
10744
@@ -10857,15 +10876,20 b' msgstr ""'
10857 msgid "Upload File"
10876 msgid "Upload File"
10858 msgstr ""
10877 msgstr ""
10859
10878
10860 #: rhodecode/templates/files/files_browser.mako:51
10879 #: rhodecode/templates/files/files_browser.mako:50
10861 msgid "Download full tree ZIP"
10880 msgid "Full tree as {}"
10862 msgstr ""
10881 msgstr ""
10863
10882
10864 #: rhodecode/templates/files/files_browser.mako:55
10883 #: rhodecode/templates/files/files_browser.mako:53
10865 msgid "Download this tree ZIP"
10884 msgid "This tree as {}"
10866 msgstr ""
10885 msgstr ""
10867
10886
10868 #: rhodecode/templates/files/files_browser.mako:83
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 #: rhodecode/templates/summary/summary.mako:37
10893 #: rhodecode/templates/summary/summary.mako:37
10870 #, python-format
10894 #, python-format
10871 msgid "Readme file from commit %s:%s"
10895 msgid "Readme file from commit %s:%s"
@@ -11064,7 +11088,7 b' msgid "New pull request"'
11064 msgstr ""
11088 msgstr ""
11065
11089
11066 #: rhodecode/templates/pullrequests/pullrequest.mako:33
11090 #: rhodecode/templates/pullrequests/pullrequest.mako:33
11067 #: rhodecode/templates/pullrequests/pullrequest_show.mako:104
11091 #: rhodecode/templates/pullrequests/pullrequest_show.mako:102
11068 msgid "Commit flow"
11092 msgid "Commit flow"
11069 msgstr ""
11093 msgstr ""
11070
11094
@@ -11085,17 +11109,17 b' msgid "Reviewers / Observers"'
11085 msgstr ""
11109 msgstr ""
11086
11110
11087 #: rhodecode/templates/pullrequests/pullrequest.mako:121
11111 #: rhodecode/templates/pullrequests/pullrequest.mako:121
11088 #: rhodecode/templates/pullrequests/pullrequest_show.mako:571
11112 #: rhodecode/templates/pullrequests/pullrequest_show.mako:605
11089 msgid "Reviewer rules"
11113 msgid "Reviewer rules"
11090 msgstr ""
11114 msgstr ""
11091
11115
11092 #: rhodecode/templates/pullrequests/pullrequest.mako:167
11116 #: rhodecode/templates/pullrequests/pullrequest.mako:167
11093 #: rhodecode/templates/pullrequests/pullrequest_show.mako:613
11117 #: rhodecode/templates/pullrequests/pullrequest_show.mako:647
11094 msgid "Add reviewer or reviewer group"
11118 msgid "Add reviewer or reviewer group"
11095 msgstr ""
11119 msgstr ""
11096
11120
11097 #: rhodecode/templates/pullrequests/pullrequest.mako:191
11121 #: rhodecode/templates/pullrequests/pullrequest.mako:191
11098 #: rhodecode/templates/pullrequests/pullrequest_show.mako:666
11122 #: rhodecode/templates/pullrequests/pullrequest_show.mako:700
11099 msgid "Add observer or observer group"
11123 msgid "Add observer or observer group"
11100 msgstr ""
11124 msgstr ""
11101
11125
@@ -11151,223 +11175,232 b' msgstr ""'
11151 msgid "{} Pull Request !{}"
11175 msgid "{} Pull Request !{}"
11152 msgstr ""
11176 msgstr ""
11153
11177
11154 #: rhodecode/templates/pullrequests/pullrequest_show.mako:61
11178 #: rhodecode/templates/pullrequests/pullrequest_show.mako:59
11155 msgid "Last updated on"
11179 msgid "Last updated on"
11156 msgstr ""
11180 msgstr ""
11157
11181
11158 #: rhodecode/templates/pullrequests/pullrequest_show.mako:62
11182 #: rhodecode/templates/pullrequests/pullrequest_show.mako:60
11159 msgid "by"
11183 msgid "by"
11160 msgstr ""
11184 msgstr ""
11161
11185
11162 #: rhodecode/templates/pullrequests/pullrequest_show.mako:71
11186 #: rhodecode/templates/pullrequests/pullrequest_show.mako:69
11163 msgid "Update title & description"
11187 msgid "Update title & description"
11164 msgstr ""
11188 msgstr ""
11165
11189
11166 #: rhodecode/templates/pullrequests/pullrequest_show.mako:77
11190 #: rhodecode/templates/pullrequests/pullrequest_show.mako:75
11167 #: rhodecode/templates/pullrequests/pullrequest_show.mako:80
11191 #: rhodecode/templates/pullrequests/pullrequest_show.mako:78
11168 msgid "Delete pull request"
11192 msgid "Delete pull request"
11169 msgstr ""
11193 msgstr ""
11170
11194
11171 #: rhodecode/templates/pullrequests/pullrequest_show.mako:80
11195 #: rhodecode/templates/pullrequests/pullrequest_show.mako:78
11172 msgid "Not allowed to delete this pull request"
11196 msgid "Not allowed to delete this pull request"
11173 msgstr ""
11197 msgstr ""
11174
11198
11175 #: rhodecode/templates/pullrequests/pullrequest_show.mako:90
11199 #: rhodecode/templates/pullrequests/pullrequest_show.mako:88
11176 msgid "Rendered using {} renderer"
11200 msgid "Rendered using {} renderer"
11177 msgstr ""
11201 msgstr ""
11178
11202
11179 #: rhodecode/templates/pullrequests/pullrequest_show.mako:137
11203 #: rhodecode/templates/pullrequests/pullrequest_show.mako:135
11180 msgid "Common ancestor"
11204 msgid "Common ancestor"
11181 msgstr ""
11205 msgstr ""
11182
11206
11183 #: rhodecode/templates/pullrequests/pullrequest_show.mako:141
11207 #: rhodecode/templates/pullrequests/pullrequest_show.mako:139
11184 msgid "not available"
11208 msgid "not available"
11185 msgstr ""
11209 msgstr ""
11186
11210
11187 #: rhodecode/templates/pullrequests/pullrequest_show.mako:153
11211 #: rhodecode/templates/pullrequests/pullrequest_show.mako:151
11188 msgid "Pull changes from source"
11212 msgid "Pull changes from source"
11189 msgstr ""
11213 msgstr ""
11190
11214
11191 #: rhodecode/templates/pullrequests/pullrequest_show.mako:154
11215 #: rhodecode/templates/pullrequests/pullrequest_show.mako:152
11192 msgid "Copy the pull url"
11216 msgid "Copy the pull url"
11193 msgstr ""
11217 msgstr ""
11194
11218
11195 #: rhodecode/templates/pullrequests/pullrequest_show.mako:166
11219 #: rhodecode/templates/pullrequests/pullrequest_show.mako:164
11196 msgid "Clone repository in its merged state using shadow repository"
11220 msgid "Clone repository in its merged state using shadow repository"
11197 msgstr ""
11221 msgstr ""
11198
11222
11199 #: rhodecode/templates/pullrequests/pullrequest_show.mako:166
11223 #: rhodecode/templates/pullrequests/pullrequest_show.mako:164
11200 msgid "Clone from shadow repository"
11224 msgid "Clone from shadow repository"
11201 msgstr ""
11225 msgstr ""
11202
11226
11203 #: rhodecode/templates/pullrequests/pullrequest_show.mako:167
11227 #: rhodecode/templates/pullrequests/pullrequest_show.mako:165
11204 #: rhodecode/templates/summary/components.mako:78
11228 #: rhodecode/templates/summary/components.mako:78
11205 msgid "Copy the clone url"
11229 msgid "Copy the clone url"
11206 msgstr ""
11230 msgstr ""
11207
11231
11208 #: rhodecode/templates/pullrequests/pullrequest_show.mako:171
11232 #: rhodecode/templates/pullrequests/pullrequest_show.mako:169
11209 msgid "Shadow repository data not available"
11233 msgid "Shadow repository data not available"
11210 msgstr ""
11234 msgstr ""
11211
11235
11212 #: rhodecode/templates/pullrequests/pullrequest_show.mako:187
11236 #: rhodecode/templates/pullrequests/pullrequest_show.mako:185
11213 msgid "Versions"
11237 msgid "Versions"
11214 msgstr ""
11238 msgstr ""
11215
11239
11240 #: rhodecode/templates/pullrequests/pullrequest_show.mako:197
11216 #: rhodecode/templates/pullrequests/pullrequest_show.mako:199
11241 #: rhodecode/templates/pullrequests/pullrequest_show.mako:199
11217 #: rhodecode/templates/pullrequests/pullrequest_show.mako:201
11218 msgid "show versions"
11242 msgid "show versions"
11219 msgstr ""
11243 msgstr ""
11220
11244
11221 #: rhodecode/templates/pullrequests/pullrequest_show.mako:200
11245 #: rhodecode/templates/pullrequests/pullrequest_show.mako:198
11222 msgid "hide versions"
11246 msgid "hide versions"
11223 msgstr ""
11247 msgstr ""
11224
11248
11225 #: rhodecode/templates/pullrequests/pullrequest_show.mako:225
11249 #: rhodecode/templates/pullrequests/pullrequest_show.mako:223
11226 msgid "Your review status at this version"
11250 msgid "Your review status at this version"
11227 msgstr ""
11251 msgstr ""
11228
11252
11229 #: rhodecode/templates/pullrequests/pullrequest_show.mako:230
11253 #: rhodecode/templates/pullrequests/pullrequest_show.mako:228
11230 msgid "Comments from pull request version v{0}"
11254 msgid "Comments from pull request version v{0}"
11231 msgstr ""
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 #: rhodecode/templates/pullrequests/pullrequest_show.mako:248
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 msgid "show pull request for this version"
11267 msgid "show pull request for this version"
11244 msgstr ""
11268 msgstr ""
11245
11269
11246 #: rhodecode/templates/pullrequests/pullrequest_show.mako:259
11270 #: rhodecode/templates/pullrequests/pullrequest_show.mako:257
11247 msgid "Pull request versions not available"
11271 msgid "Pull request versions not available"
11248 msgstr ""
11272 msgstr ""
11249
11273
11250 #: rhodecode/templates/pullrequests/pullrequest_show.mako:279
11274 #: rhodecode/templates/pullrequests/pullrequest_show.mako:277
11251 msgid "Cannot show diff when pull request state is changing. Current progress state"
11275 msgid "Cannot show diff when pull request state is changing. Current progress state"
11252 msgstr ""
11276 msgstr ""
11253
11277
11254 #: rhodecode/templates/pullrequests/pullrequest_show.mako:297
11278 #: rhodecode/templates/pullrequests/pullrequest_show.mako:295
11255 msgid "Missing requirements:"
11279 msgid "Missing requirements:"
11256 msgstr ""
11280 msgstr ""
11257
11281
11258 #: rhodecode/templates/pullrequests/pullrequest_show.mako:298
11282 #: rhodecode/templates/pullrequests/pullrequest_show.mako:296
11259 msgid "These commits cannot be displayed, because this repository uses the Mercurial largefiles extension, which was not enabled."
11283 msgid "These commits cannot be displayed, because this repository uses the Mercurial largefiles extension, which was not enabled."
11260 msgstr ""
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 #: rhodecode/templates/pullrequests/pullrequest_show.mako:306
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 msgstr ""
11296 msgstr ""
11265
11297
11266 #: rhodecode/templates/pullrequests/pullrequest_show.mako:307
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 msgid "Consider doing a `force update commits` in case you think this is an error."
11299 msgid "Consider doing a `force update commits` in case you think this is an error."
11276 msgstr ""
11300 msgstr ""
11277
11301
11278 #: rhodecode/templates/pullrequests/pullrequest_show.mako:317
11302 #: rhodecode/templates/pullrequests/pullrequest_show.mako:315
11279 msgid "There are new changes for `{}:{}` in source repository, please consider updating this pull request."
11303 msgid "There are new changes for `{}:{}` in source repository, please consider updating this pull request."
11280 msgstr ""
11304 msgstr ""
11281
11305
11282 #: rhodecode/templates/pullrequests/pullrequest_show.mako:328
11306 #: rhodecode/templates/pullrequests/pullrequest_show.mako:326
11283 msgid "Showing changes at v{}, commenting is disabled."
11307 msgid "Showing changes at v{}, commenting is disabled."
11284 msgstr ""
11308 msgstr ""
11285
11309
11286 #: rhodecode/templates/pullrequests/pullrequest_show.mako:351
11310 #: rhodecode/templates/pullrequests/pullrequest_show.mako:349
11287 #: rhodecode/templates/pullrequests/pullrequest_show.mako:373
11311 #: rhodecode/templates/pullrequests/pullrequest_show.mako:371
11288 msgid "Update commits"
11312 msgid "Update commits"
11289 msgstr ""
11313 msgstr ""
11290
11314
11291 #: rhodecode/templates/pullrequests/pullrequest_show.mako:354
11315 #: rhodecode/templates/pullrequests/pullrequest_show.mako:352
11292 msgid "more update options"
11316 msgid "more update options"
11293 msgstr ""
11317 msgstr ""
11294
11318
11295 #: rhodecode/templates/pullrequests/pullrequest_show.mako:362
11319 #: rhodecode/templates/pullrequests/pullrequest_show.mako:360
11296 msgid "Force update commits"
11320 msgid "Force update commits"
11297 msgstr ""
11321 msgstr ""
11298
11322
11299 #: rhodecode/templates/pullrequests/pullrequest_show.mako:365
11323 #: rhodecode/templates/pullrequests/pullrequest_show.mako:363
11300 msgid "Update commits and force refresh this pull request."
11324 msgid "Update commits and force refresh this pull request."
11301 msgstr ""
11325 msgstr ""
11302
11326
11303 #: rhodecode/templates/pullrequests/pullrequest_show.mako:373
11327 #: rhodecode/templates/pullrequests/pullrequest_show.mako:371
11304 msgid "Update is disabled for current view"
11328 msgid "Update is disabled for current view"
11305 msgstr ""
11329 msgstr ""
11306
11330
11307 #: rhodecode/templates/pullrequests/pullrequest_show.mako:385
11331 #: rhodecode/templates/pullrequests/pullrequest_show.mako:383
11308 msgid "Commits and changes between v{ver_from} and {ver_to} of this pull request, commenting is disabled"
11332 msgid "Commits and changes between v{ver_from} and {ver_to} of this pull request, commenting is disabled"
11309 msgstr ""
11333 msgstr ""
11310
11334
11311 #: rhodecode/templates/pullrequests/pullrequest_show.mako:389
11335 #: rhodecode/templates/pullrequests/pullrequest_show.mako:387
11312 msgid "commits added: {}, removed: {}"
11336 msgid "commits added: {}, removed: {}"
11313 msgstr ""
11337 msgstr ""
11314
11338
11339 #: rhodecode/templates/pullrequests/pullrequest_show.mako:405
11340 msgid "Commit added in displayed changes"
11341 msgstr ""
11342
11315 #: rhodecode/templates/pullrequests/pullrequest_show.mako:407
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 msgid "Commit removed in displayed changes"
11344 msgid "Commit removed in displayed changes"
11321 msgstr ""
11345 msgstr ""
11322
11346
11323 #: rhodecode/templates/pullrequests/pullrequest_show.mako:512
11347 #: rhodecode/templates/pullrequests/pullrequest_show.mako:510
11324 msgid "there is {num} general comment from older versions"
11348 msgid "there is {num} general comment from older versions"
11325 msgstr ""
11349 msgstr ""
11326
11350
11351 #: rhodecode/templates/pullrequests/pullrequest_show.mako:511
11352 msgid "show it"
11353 msgstr ""
11354
11327 #: rhodecode/templates/pullrequests/pullrequest_show.mako:513
11355 #: rhodecode/templates/pullrequests/pullrequest_show.mako:513
11328 msgid "show it"
11329 msgstr ""
11330
11331 #: rhodecode/templates/pullrequests/pullrequest_show.mako:515
11332 msgid "there are {num} general comments from older versions"
11356 msgid "there are {num} general comments from older versions"
11333 msgstr ""
11357 msgstr ""
11334
11358
11335 #: rhodecode/templates/pullrequests/pullrequest_show.mako:516
11359 #: rhodecode/templates/pullrequests/pullrequest_show.mako:514
11336 msgid "show them"
11360 msgid "show them"
11337 msgstr ""
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 msgid "Show rules"
11373 msgid "Show rules"
11341 msgstr ""
11374 msgstr ""
11342
11375
11343 #: rhodecode/templates/pullrequests/pullrequest_show.mako:618
11376 #: rhodecode/templates/pullrequests/pullrequest_show.mako:652
11344 #: rhodecode/templates/pullrequests/pullrequest_show.mako:671
11377 #: rhodecode/templates/pullrequests/pullrequest_show.mako:705
11345 msgid "Save Changes"
11378 msgid "Save Changes"
11346 msgstr ""
11379 msgstr ""
11347
11380
11348 #: rhodecode/templates/pullrequests/pullrequest_show.mako:642
11381 #: rhodecode/templates/pullrequests/pullrequest_show.mako:676
11349 msgid "Observers"
11382 msgid "Observers"
11350 msgstr ""
11383 msgstr ""
11351
11384
11352 #: rhodecode/templates/pullrequests/pullrequest_show.mako:708
11385 #: rhodecode/templates/pullrequests/pullrequest_show.mako:742
11353 msgid "TODOs unavailable when browsing versions"
11386 msgid "TODOs unavailable when browsing versions"
11354 msgstr ""
11387 msgstr ""
11355
11388
11356 #: rhodecode/templates/pullrequests/pullrequest_show.mako:780
11389 #: rhodecode/templates/pullrequests/pullrequest_show.mako:814
11357 #: rhodecode/templates/pullrequests/pullrequest_show.mako:788
11390 #: rhodecode/templates/pullrequests/pullrequest_show.mako:822
11358 msgid "Referenced Tickets"
11391 msgid "Referenced Tickets"
11359 msgstr ""
11392 msgstr ""
11360
11393
11361 #: rhodecode/templates/pullrequests/pullrequest_show.mako:794
11394 #: rhodecode/templates/pullrequests/pullrequest_show.mako:828
11362 msgid "In pull request description"
11395 msgid "In pull request description"
11363 msgstr ""
11396 msgstr ""
11364
11397
11365 #: rhodecode/templates/pullrequests/pullrequest_show.mako:808
11398 #: rhodecode/templates/pullrequests/pullrequest_show.mako:842
11366 #: rhodecode/templates/pullrequests/pullrequest_show.mako:827
11399 #: rhodecode/templates/pullrequests/pullrequest_show.mako:861
11367 msgid "No Ticket data found."
11400 msgid "No Ticket data found."
11368 msgstr ""
11401 msgstr ""
11369
11402
11370 #: rhodecode/templates/pullrequests/pullrequest_show.mako:813
11403 #: rhodecode/templates/pullrequests/pullrequest_show.mako:847
11371 msgid "In commit messages"
11404 msgid "In commit messages"
11372 msgstr ""
11405 msgstr ""
11373
11406
@@ -11496,23 +11529,19 b' msgstr ""'
11496 msgid "Downloads are disabled for this repository"
11529 msgid "Downloads are disabled for this repository"
11497 msgstr ""
11530 msgstr ""
11498
11531
11499 #: rhodecode/templates/summary/components.mako:196
11532 #: rhodecode/templates/summary/components.mako:227
11500 msgid "more download options"
11501 msgstr ""
11502
11503 #: rhodecode/templates/summary/components.mako:228
11504 msgid "Repository size"
11533 msgid "Repository size"
11505 msgstr ""
11534 msgstr ""
11506
11535
11507 #: rhodecode/templates/summary/components.mako:240
11536 #: rhodecode/templates/summary/components.mako:239
11508 msgid "Calculating Repository Size..."
11537 msgid "Calculating Repository Size..."
11509 msgstr ""
11538 msgstr ""
11510
11539
11511 #: rhodecode/templates/summary/components.mako:251
11540 #: rhodecode/templates/summary/components.mako:250
11512 msgid "Code Statistics"
11541 msgid "Code Statistics"
11513 msgstr ""
11542 msgstr ""
11514
11543
11515 #: rhodecode/templates/summary/components.mako:260
11544 #: rhodecode/templates/summary/components.mako:259
11516 msgid "Statistics are disabled for this repository"
11545 msgid "Statistics are disabled for this repository"
11517 msgstr ""
11546 msgstr ""
11518
11547
@@ -24,6 +24,9 b' from rhodecode.apps._base import ADMIN_P'
24 from rhodecode.lib.utils2 import safe_int
24 from rhodecode.lib.utils2 import safe_int
25 from rhodecode.model.db import Repository, Integration, RepoGroup
25 from rhodecode.model.db import Repository, Integration, RepoGroup
26 from rhodecode.integrations import integration_type_registry
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 log = logging.getLogger(__name__)
31 log = logging.getLogger(__name__)
29
32
@@ -83,7 +86,7 b' def includeme(config):'
83 # global integrations
86 # global integrations
84 config.add_route('global_integrations_new',
87 config.add_route('global_integrations_new',
85 ADMIN_PREFIX + '/integrations/new')
88 ADMIN_PREFIX + '/integrations/new')
86 config.add_view('rhodecode.integrations.views.GlobalIntegrationsView',
89 config.add_view(GlobalIntegrationsView,
87 attr='new_integration',
90 attr='new_integration',
88 renderer='rhodecode:templates/admin/integrations/new.mako',
91 renderer='rhodecode:templates/admin/integrations/new.mako',
89 request_method='GET',
92 request_method='GET',
@@ -94,7 +97,7 b' def includeme(config):'
94 config.add_route('global_integrations_list',
97 config.add_route('global_integrations_list',
95 ADMIN_PREFIX + '/integrations/{integration}')
98 ADMIN_PREFIX + '/integrations/{integration}')
96 for route_name in ['global_integrations_home', 'global_integrations_list']:
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 attr='integration_list',
101 attr='integration_list',
99 renderer='rhodecode:templates/admin/integrations/list.mako',
102 renderer='rhodecode:templates/admin/integrations/list.mako',
100 request_method='GET',
103 request_method='GET',
@@ -108,12 +111,12 b' def includeme(config):'
108 valid_integration=True)
111 valid_integration=True)
109
112
110 for route_name in ['global_integrations_create', 'global_integrations_edit']:
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 attr='settings_get',
115 attr='settings_get',
113 renderer='rhodecode:templates/admin/integrations/form.mako',
116 renderer='rhodecode:templates/admin/integrations/form.mako',
114 request_method='GET',
117 request_method='GET',
115 route_name=route_name)
118 route_name=route_name)
116 config.add_view('rhodecode.integrations.views.GlobalIntegrationsView',
119 config.add_view(GlobalIntegrationsView,
117 attr='settings_post',
120 attr='settings_post',
118 renderer='rhodecode:templates/admin/integrations/form.mako',
121 renderer='rhodecode:templates/admin/integrations/form.mako',
119 request_method='POST',
122 request_method='POST',
@@ -124,7 +127,7 b' def includeme(config):'
124 add_route_requirements('/{repo_group_name}/_settings/integrations'),
127 add_route_requirements('/{repo_group_name}/_settings/integrations'),
125 repo_group_route=True)
128 repo_group_route=True)
126
129
127 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
130 config.add_view(RepoGroupIntegrationsView,
128 attr='integration_list',
131 attr='integration_list',
129 renderer='rhodecode:templates/admin/integrations/list.mako',
132 renderer='rhodecode:templates/admin/integrations/list.mako',
130 request_method='GET',
133 request_method='GET',
@@ -133,7 +136,7 b' def includeme(config):'
133 config.add_route('repo_group_integrations_new',
136 config.add_route('repo_group_integrations_new',
134 add_route_requirements('/{repo_group_name}/_settings/integrations/new'),
137 add_route_requirements('/{repo_group_name}/_settings/integrations/new'),
135 repo_group_route=True)
138 repo_group_route=True)
136 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
139 config.add_view(RepoGroupIntegrationsView,
137 attr='new_integration',
140 attr='new_integration',
138 renderer='rhodecode:templates/admin/integrations/new.mako',
141 renderer='rhodecode:templates/admin/integrations/new.mako',
139 request_method='GET',
142 request_method='GET',
@@ -143,7 +146,7 b' def includeme(config):'
143 add_route_requirements('/{repo_group_name}/_settings/integrations/{integration}'),
146 add_route_requirements('/{repo_group_name}/_settings/integrations/{integration}'),
144 repo_group_route=True,
147 repo_group_route=True,
145 valid_integration=True)
148 valid_integration=True)
146 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
149 config.add_view(RepoGroupIntegrationsView,
147 attr='integration_list',
150 attr='integration_list',
148 renderer='rhodecode:templates/admin/integrations/list.mako',
151 renderer='rhodecode:templates/admin/integrations/list.mako',
149 request_method='GET',
152 request_method='GET',
@@ -153,12 +156,12 b' def includeme(config):'
153 add_route_requirements('/{repo_group_name}/_settings/integrations/{integration}/new'),
156 add_route_requirements('/{repo_group_name}/_settings/integrations/{integration}/new'),
154 repo_group_route=True,
157 repo_group_route=True,
155 valid_integration=True)
158 valid_integration=True)
156 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
159 config.add_view(RepoGroupIntegrationsView,
157 attr='settings_get',
160 attr='settings_get',
158 renderer='rhodecode:templates/admin/integrations/form.mako',
161 renderer='rhodecode:templates/admin/integrations/form.mako',
159 request_method='GET',
162 request_method='GET',
160 route_name='repo_group_integrations_create')
163 route_name='repo_group_integrations_create')
161 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
164 config.add_view(RepoGroupIntegrationsView,
162 attr='settings_post',
165 attr='settings_post',
163 renderer='rhodecode:templates/admin/integrations/form.mako',
166 renderer='rhodecode:templates/admin/integrations/form.mako',
164 request_method='POST',
167 request_method='POST',
@@ -169,12 +172,12 b' def includeme(config):'
169 repo_group_route=True,
172 repo_group_route=True,
170 valid_integration=True)
173 valid_integration=True)
171
174
172 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
175 config.add_view(RepoGroupIntegrationsView,
173 attr='settings_get',
176 attr='settings_get',
174 renderer='rhodecode:templates/admin/integrations/form.mako',
177 renderer='rhodecode:templates/admin/integrations/form.mako',
175 request_method='GET',
178 request_method='GET',
176 route_name='repo_group_integrations_edit')
179 route_name='repo_group_integrations_edit')
177 config.add_view('rhodecode.integrations.views.RepoGroupIntegrationsView',
180 config.add_view(RepoGroupIntegrationsView,
178 attr='settings_post',
181 attr='settings_post',
179 renderer='rhodecode:templates/admin/integrations/form.mako',
182 renderer='rhodecode:templates/admin/integrations/form.mako',
180 request_method='POST',
183 request_method='POST',
@@ -184,7 +187,7 b' def includeme(config):'
184 config.add_route('repo_integrations_home',
187 config.add_route('repo_integrations_home',
185 add_route_requirements('/{repo_name}/settings/integrations'),
188 add_route_requirements('/{repo_name}/settings/integrations'),
186 repo_route=True)
189 repo_route=True)
187 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
190 config.add_view(RepoIntegrationsView,
188 attr='integration_list',
191 attr='integration_list',
189 request_method='GET',
192 request_method='GET',
190 renderer='rhodecode:templates/admin/integrations/list.mako',
193 renderer='rhodecode:templates/admin/integrations/list.mako',
@@ -193,7 +196,7 b' def includeme(config):'
193 config.add_route('repo_integrations_new',
196 config.add_route('repo_integrations_new',
194 add_route_requirements('/{repo_name}/settings/integrations/new'),
197 add_route_requirements('/{repo_name}/settings/integrations/new'),
195 repo_route=True)
198 repo_route=True)
196 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
199 config.add_view(RepoIntegrationsView,
197 attr='new_integration',
200 attr='new_integration',
198 renderer='rhodecode:templates/admin/integrations/new.mako',
201 renderer='rhodecode:templates/admin/integrations/new.mako',
199 request_method='GET',
202 request_method='GET',
@@ -203,7 +206,7 b' def includeme(config):'
203 add_route_requirements('/{repo_name}/settings/integrations/{integration}'),
206 add_route_requirements('/{repo_name}/settings/integrations/{integration}'),
204 repo_route=True,
207 repo_route=True,
205 valid_integration=True)
208 valid_integration=True)
206 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
209 config.add_view(RepoIntegrationsView,
207 attr='integration_list',
210 attr='integration_list',
208 request_method='GET',
211 request_method='GET',
209 renderer='rhodecode:templates/admin/integrations/list.mako',
212 renderer='rhodecode:templates/admin/integrations/list.mako',
@@ -213,12 +216,12 b' def includeme(config):'
213 add_route_requirements('/{repo_name}/settings/integrations/{integration}/new'),
216 add_route_requirements('/{repo_name}/settings/integrations/{integration}/new'),
214 repo_route=True,
217 repo_route=True,
215 valid_integration=True)
218 valid_integration=True)
216 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
219 config.add_view(RepoIntegrationsView,
217 attr='settings_get',
220 attr='settings_get',
218 renderer='rhodecode:templates/admin/integrations/form.mako',
221 renderer='rhodecode:templates/admin/integrations/form.mako',
219 request_method='GET',
222 request_method='GET',
220 route_name='repo_integrations_create')
223 route_name='repo_integrations_create')
221 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
224 config.add_view(RepoIntegrationsView,
222 attr='settings_post',
225 attr='settings_post',
223 renderer='rhodecode:templates/admin/integrations/form.mako',
226 renderer='rhodecode:templates/admin/integrations/form.mako',
224 request_method='POST',
227 request_method='POST',
@@ -228,12 +231,12 b' def includeme(config):'
228 add_route_requirements('/{repo_name}/settings/integrations/{integration}/{integration_id}'),
231 add_route_requirements('/{repo_name}/settings/integrations/{integration}/{integration_id}'),
229 repo_route=True,
232 repo_route=True,
230 valid_integration=True)
233 valid_integration=True)
231 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
234 config.add_view(RepoIntegrationsView,
232 attr='settings_get',
235 attr='settings_get',
233 renderer='rhodecode:templates/admin/integrations/form.mako',
236 renderer='rhodecode:templates/admin/integrations/form.mako',
234 request_method='GET',
237 request_method='GET',
235 route_name='repo_integrations_edit')
238 route_name='repo_integrations_edit')
236 config.add_view('rhodecode.integrations.views.RepoIntegrationsView',
239 config.add_view(RepoIntegrationsView,
237 attr='settings_post',
240 attr='settings_post',
238 renderer='rhodecode:templates/admin/integrations/form.mako',
241 renderer='rhodecode:templates/admin/integrations/form.mako',
239 request_method='POST',
242 request_method='POST',
@@ -469,7 +469,14 b' def get_auth_user(request):'
469 ip_addr = get_ip_addr(environ)
469 ip_addr = get_ip_addr(environ)
470
470
471 # make sure that we update permissions each time we call controller
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 if not _auth_token and request.matchdict:
480 if not _auth_token and request.matchdict:
474 url_auth_token = request.matchdict.get('_auth_token')
481 url_auth_token = request.matchdict.get('_auth_token')
475 _auth_token = url_auth_token
482 _auth_token = url_auth_token
@@ -354,7 +354,7 b' def check_for_update():'
354 @async_task(ignore_result=False)
354 @async_task(ignore_result=False)
355 def beat_check(*args, **kwargs):
355 def beat_check(*args, **kwargs):
356 log = get_logger(beat_check)
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 return time.time()
358 return time.time()
359
359
360
360
@@ -398,7 +398,10 b' class DiffSet(object):'
398 ):
398 ):
399
399
400 self.highlight_mode = highlight_mode
400 self.highlight_mode = highlight_mode
401 self.highlighted_filenodes = {}
401 self.highlighted_filenodes = {
402 'before': {},
403 'after': {}
404 }
402 self.source_node_getter = source_node_getter
405 self.source_node_getter = source_node_getter
403 self.target_node_getter = target_node_getter
406 self.target_node_getter = target_node_getter
404 self.source_nodes = source_nodes or {}
407 self.source_nodes = source_nodes or {}
@@ -657,7 +660,7 b' class DiffSet(object):'
657 else:
660 else:
658 before_tokens = self.get_line_tokens(
661 before_tokens = self.get_line_tokens(
659 line_text=before['line'], line_number=before['old_lineno'],
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 original.lineno = before['old_lineno']
664 original.lineno = before['old_lineno']
662 original.content = before['line']
665 original.content = before['line']
663 original.action = self.action_to_op(before['action'])
666 original.action = self.action_to_op(before['action'])
@@ -671,7 +674,7 b' class DiffSet(object):'
671 else:
674 else:
672 after_tokens = self.get_line_tokens(
675 after_tokens = self.get_line_tokens(
673 line_text=after['line'], line_number=after['new_lineno'],
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 modified.lineno = after['new_lineno']
678 modified.lineno = after['new_lineno']
676 modified.content = after['line']
679 modified.content = after['line']
677 modified.action = self.action_to_op(after['action'])
680 modified.action = self.action_to_op(after['action'])
@@ -705,7 +708,7 b' class DiffSet(object):'
705
708
706 return lines
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 filenode = None
712 filenode = None
710 filename = None
713 filename = None
711
714
@@ -720,8 +723,7 b' class DiffSet(object):'
720 lexer = self._get_lexer_for_filename(filename)
723 lexer = self._get_lexer_for_filename(filename)
721 file_size_allowed = input_file.size < self.max_file_size_limit
724 file_size_allowed = input_file.size < self.max_file_size_limit
722 if line_number and file_size_allowed:
725 if line_number and file_size_allowed:
723 return self.get_tokenized_filenode_line(
726 return self.get_tokenized_filenode_line(input_file, line_number, lexer, source)
724 input_file, line_number, lexer)
725
727
726 if hl_mode in (self.HL_REAL, self.HL_FAST) and filename:
728 if hl_mode in (self.HL_REAL, self.HL_FAST) and filename:
727 lexer = self._get_lexer_for_filename(filename)
729 lexer = self._get_lexer_for_filename(filename)
@@ -729,16 +731,19 b' class DiffSet(object):'
729
731
730 return list(tokenize_string(line_text, plain_text_lexer))
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:
736 def tokenize(_filenode):
735 tokenized_lines = filenode_as_lines_tokens(filenode, lexer)
737 self.highlighted_filenodes[source][filenode] = filenode_as_lines_tokens(filenode, lexer)
736 self.highlighted_filenodes[filenode] = tokenized_lines
738
739 if filenode not in self.highlighted_filenodes[source]:
740 tokenize(filenode)
737
741
738 try:
742 try:
739 return self.highlighted_filenodes[filenode][line_number - 1]
743 return self.highlighted_filenodes[source][filenode][line_number - 1]
740 except Exception:
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 def action_to_op(self, action):
748 def action_to_op(self, action):
744 return {
749 return {
@@ -27,11 +27,14 b' def pyramid_ext_json(info):'
27 """
27 """
28 def _render(value, system):
28 def _render(value, system):
29 request = system.get('request')
29 request = system.get('request')
30 indent = None
30 if request is not None:
31 if request is not None:
31 response = request.response
32 response = request.response
32 ct = response.content_type
33 ct = response.content_type
33 if ct == response.default_content_type:
34 if ct == response.default_content_type:
34 response.content_type = 'application/json'
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 return _render
40 return _render
@@ -145,60 +145,6 b' def session_factory_from_settings(settin'
145 return BeakerSessionFactoryConfig(**options)
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 def includeme(config):
148 def includeme(config):
202 session_factory = session_factory_from_settings(config.registry.settings)
149 session_factory = session_factory_from_settings(config.registry.settings)
203 config.set_session_factory(session_factory)
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 avail_regions = set()
62 avail_regions = set()
63 for key in rc_cache_data.keys():
63 for key in rc_cache_data.keys():
64 namespace_name = key.split('.', 1)[0]
64 namespace_name = key.split('.', 1)[0]
65 avail_regions.add(namespace_name)
65 if namespace_name in avail_regions:
66 log.debug('dogpile: found following cache regions: %s', avail_regions)
66 continue
67
67
68 # register them into namespace
68 avail_regions.add(namespace_name)
69 for region_name in avail_regions:
69 log.debug('dogpile: found following cache regions: %s', namespace_name)
70
70 new_region = make_region(
71 new_region = make_region(
71 name=region_name,
72 name=namespace_name,
72 function_key_generator=None
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 new_region.function_key_generator = backend_key_generator(new_region.actual_backend)
77 new_region.function_key_generator = backend_key_generator(new_region.actual_backend)
77 if log.isEnabledFor(logging.DEBUG):
78 if log.isEnabledFor(logging.DEBUG):
78 region_args = dict(backend=new_region.actual_backend.__class__,
79 region_args = dict(backend=new_region.actual_backend.__class__,
79 region_invalidator=new_region.region_invalidator.__class__)
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 def includeme(config):
86 def includeme(config):
@@ -218,8 +218,9 b' def map_vcs_exceptions(func):'
218
218
219 if kind:
219 if kind:
220 if any(e.args):
220 if any(e.args):
221 args = [a for a in e.args]
221 _args = [a for a in e.args]
222 args[0] = '{}:'.format(exc_name) # prefix first arg with org exc name
222 # replace the first argument with a prefix exc name
223 args = ['{}:'.format(exc_name, _args[0] if _args else '?')] + _args[1:]
223 else:
224 else:
224 args = [__traceback_info__ or '{}: UnhandledException'.format(exc_name)]
225 args = [__traceback_info__ or '{}: UnhandledException'.format(exc_name)]
225 if debug or __traceback_info__ and kind not in ['unhandled', 'lookup']:
226 if debug or __traceback_info__ and kind not in ['unhandled', 'lookup']:
@@ -749,8 +749,11 b' class User(Base, BaseModel):'
749
749
750 def get_artifact_token(self, cache=True):
750 def get_artifact_token(self, cache=True):
751 artifacts_tokens = UserApiKeys.query()\
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 .filter(UserApiKeys.role == UserApiKeys.ROLE_ARTIFACT_DOWNLOAD)
755 .filter(UserApiKeys.role == UserApiKeys.ROLE_ARTIFACT_DOWNLOAD)
756
754 if cache:
757 if cache:
755 artifacts_tokens = artifacts_tokens.options(
758 artifacts_tokens = artifacts_tokens.options(
756 FromCache("sql_cache_short", "get_user_artifact_token_%s" % self.user_id))
759 FromCache("sql_cache_short", "get_user_artifact_token_%s" % self.user_id))
@@ -760,6 +763,24 b' class User(Base, BaseModel):'
760 return artifacts_tokens[0].api_key
763 return artifacts_tokens[0].api_key
761 return 'NO_ARTIFACT_TOKEN_AVAILABLE'
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 @classmethod
784 @classmethod
764 def get(cls, user_id, cache=False):
785 def get(cls, user_id, cache=False):
765 if not user_id:
786 if not user_id:
@@ -3967,7 +3988,7 b' class ChangesetStatus(Base, BaseModel):'
3967 STATUS_APPROVED = 'approved'
3988 STATUS_APPROVED = 'approved'
3968 STATUS_REJECTED = 'rejected'
3989 STATUS_REJECTED = 'rejected'
3969 STATUS_UNDER_REVIEW = 'under_review'
3990 STATUS_UNDER_REVIEW = 'under_review'
3970
3991 CheckConstraint,
3971 STATUSES = [
3992 STATUSES = [
3972 (STATUS_NOT_REVIEWED, _("Not Reviewed")), # (no icon) and default
3993 (STATUS_NOT_REVIEWED, _("Not Reviewed")), # (no icon) and default
3973 (STATUS_APPROVED, _("Approved")),
3994 (STATUS_APPROVED, _("Approved")),
@@ -4810,6 +4831,7 b' class Gist(Base, BaseModel):'
4810
4831
4811 res = cls.query().filter(cls.gist_access_id == id_).scalar()
4832 res = cls.query().filter(cls.gist_access_id == id_).scalar()
4812 if not res:
4833 if not res:
4834 log.debug('WARN: No DB entry with id %s', id_)
4813 raise HTTPNotFound()
4835 raise HTTPNotFound()
4814 return res
4836 return res
4815
4837
@@ -5322,11 +5344,11 b' class ScheduleEntry(Base, BaseModel):'
5322 except ValueError:
5344 except ValueError:
5323 return dict()
5345 return dict()
5324
5346
5325 def _as_raw(self, val):
5347 def _as_raw(self, val, indent=None):
5326 if hasattr(val, 'de_coerce'):
5348 if hasattr(val, 'de_coerce'):
5327 val = val.de_coerce()
5349 val = val.de_coerce()
5328 if val:
5350 if val:
5329 val = json.dumps(val)
5351 val = json.dumps(val, indent=indent, sort_keys=True)
5330
5352
5331 return val
5353 return val
5332
5354
@@ -5334,13 +5356,11 b' class ScheduleEntry(Base, BaseModel):'
5334 def schedule_definition_raw(self):
5356 def schedule_definition_raw(self):
5335 return self._as_raw(self.schedule_definition)
5357 return self._as_raw(self.schedule_definition)
5336
5358
5337 @property
5359 def args_raw(self, indent=None):
5338 def args_raw(self):
5360 return self._as_raw(self.task_args, indent)
5339 return self._as_raw(self.task_args)
5361
5340
5362 def kwargs_raw(self, indent=None):
5341 @property
5363 return self._as_raw(self.task_kwargs, indent)
5342 def kwargs_raw(self):
5343 return self._as_raw(self.task_kwargs)
5344
5364
5345 def __repr__(self):
5365 def __repr__(self):
5346 return '<DB:ScheduleEntry({}:{})>'.format(
5366 return '<DB:ScheduleEntry({}:{})>'.format(
@@ -60,6 +60,9 b' class RepoGroupModel(BaseModel):'
60 return self._get_instance(RepoGroup, repo_group,
60 return self._get_instance(RepoGroup, repo_group,
61 callback=RepoGroup.get_by_group_name)
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 @LazyProperty
66 @LazyProperty
64 def repos_path(self):
67 def repos_path(self):
65 """
68 """
@@ -147,6 +147,14 b' class CloneUriValidator(object):'
147 def json_validator(node, value):
147 def json_validator(node, value):
148 try:
148 try:
149 json.loads(value)
149 json.loads(value)
150 except (Exception,):
150 except (Exception,) as e:
151 msg = _(u'Please enter a valid json object')
151 msg = _(u'Please enter a valid json object')
152 raise colander.Invalid(node, msg)
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 .btn-approved-status {
229 .btn-approved-status {
229 .border ( @border-thickness, @alert1 );
230 .border ( @border-thickness, @alert1 );
230 background-color: white;
231 background-color: white;
@@ -262,6 +263,10 b' input[type="button"] {'
262 border-radius: @border-radius 0 0 @border-radius;
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 // middle elements
270 // middle elements
266 &:not(:first-of-type):not(:last-of-type) {
271 &:not(:first-of-type):not(:last-of-type) {
267 border-radius: 0;
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 input[type="submit"].btn-warning {
463 input[type="submit"].btn-warning {
434 &:extend(.btn-warning);
464 &:extend(.btn-warning);
@@ -657,6 +657,7 b' form.comment-form {'
657
657
658 .resolve-action {
658 .resolve-action {
659 padding: 1px 0px 0px 6px;
659 padding: 1px 0px 0px 6px;
660 list-style: none;
660 }
661 }
661
662
662 }
663 }
@@ -1540,7 +1540,6 b' table.integrations {'
1540 .reviewer_name {
1540 .reviewer_name {
1541 display: inline-block;
1541 display: inline-block;
1542 max-width: 83%;
1542 max-width: 83%;
1543 padding-right: 20px;
1544 vertical-align: middle;
1543 vertical-align: middle;
1545 line-height: 1;
1544 line-height: 1;
1546
1545
@@ -194,6 +194,7 b''
194 .icon-comment-toggle:before { content: '\e830'; } /* '' */
194 .icon-comment-toggle:before { content: '\e830'; } /* '' */
195 .icon-rhodecode:before { content: '\e831'; } /* '' */
195 .icon-rhodecode:before { content: '\e831'; } /* '' */
196 .icon-up:before { content: '\e832'; } /* '' */
196 .icon-up:before { content: '\e832'; } /* '' */
197 .icon-down:before { content: '\e832'; } /* '' */
197 .icon-merge:before { content: '\e833'; } /* '' */
198 .icon-merge:before { content: '\e833'; } /* '' */
198 .icon-spin-alt:before { content: '\e834'; } /* '' */
199 .icon-spin-alt:before { content: '\e834'; } /* '' */
199 .icon-spin:before { content: '\e838'; } /* '' */
200 .icon-spin:before { content: '\e838'; } /* '' */
@@ -235,6 +236,7 b''
235 .icon-rss-sign:before { &:extend(.icon-feed:before); }
236 .icon-rss-sign:before { &:extend(.icon-feed:before); }
236 .icon-code-fork:before { &:extend(.icon-fork:before); }
237 .icon-code-fork:before { &:extend(.icon-fork:before); }
237 .icon-arrow_up:before { &:extend(.icon-up:before); }
238 .icon-arrow_up:before { &:extend(.icon-up:before); }
239 .icon-arrow_down:before { &:extend(.icon-down:before); }
238 .icon-file:before { &:extend(.icon-file-code:before); }
240 .icon-file:before { &:extend(.icon-file-code:before); }
239 .icon-file-text:before { &:extend(.icon-file-code:before); }
241 .icon-file-text:before { &:extend(.icon-file-code:before); }
240 .icon-directory:before { &:extend(.icon-folder:before); }
242 .icon-directory:before { &:extend(.icon-folder:before); }
@@ -253,6 +255,8 b''
253 .icon-merge:before {transform: rotate(180deg);}
255 .icon-merge:before {transform: rotate(180deg);}
254 .icon-wide-mode:before {transform: rotate(90deg);}
256 .icon-wide-mode:before {transform: rotate(90deg);}
255 .icon-options:before {transform: rotate(90deg);}
257 .icon-options:before {transform: rotate(90deg);}
258 .icon-down:before {transform: rotate(180deg);}
259
256
260
257 // -- END ICON CLASSES -- //
261 // -- END ICON CLASSES -- //
258
262
@@ -47,6 +47,7 b' var _TM = {'
47 'Hide full context diff': 'Hide full context diff',
47 'Hide full context diff': 'Hide full context diff',
48 'Hide whitespace changes': 'Hide whitespace changes',
48 'Hide whitespace changes': 'Hide whitespace changes',
49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
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 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 '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 '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 '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}',
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 'Loading failed': 'Loading failed',
57 'Loading failed': 'Loading failed',
57 'Loading more results...': 'Loading more results...',
58 'Loading more results...': 'Loading more results...',
58 'Loading...': 'Loading...',
59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 'No bookmarks available yet.': 'No bookmarks available yet.',
61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 'No branches available yet.': 'No branches available yet.',
62 'No branches available yet.': 'No branches available yet.',
61 'No forks available yet.': 'No forks available yet.',
63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 'Please enter {0} or more characters': 'Please enter {0} or more characters',
86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 'Please wait creating pull request...': 'Please wait creating pull request...',
87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 'Saving...': 'Saving...',
90 'Saving...': 'Saving...',
88 'Searching...': 'Searching...',
91 'Searching...': 'Searching...',
89 'Selection link': 'Selection link',
92 'Selection link': 'Selection link',
@@ -93,6 +96,7 b' var _TM = {'
93 'Show': 'Show',
96 'Show': 'Show',
94 'Show at Commit ': 'Show at Commit ',
97 'Show at Commit ': 'Show at Commit ',
95 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
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 'Show full context diff': 'Show full context diff',
100 'Show full context diff': 'Show full context diff',
97 'Show more': 'Show more',
101 'Show more': 'Show more',
98 'Show selected commit __S': 'Show selected commit __S',
102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 'Status Review': 'Status Review',
109 'Status Review': 'Status Review',
106 'Stop following this repository': 'Stop following this repository',
110 'Stop following this repository': 'Stop following this repository',
107 'Stopped watching this repository': 'Stopped watching this repository',
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 'Submitting...': 'Submitting...',
114 'Submitting...': 'Submitting...',
109 'Switch target repository with the source.': 'Switch target repository with the source.',
115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 'Switch to chat': 'Switch to chat',
116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 'Unfollow': 'Unfollow',
127 'Unfollow': 'Unfollow',
122 'Unwatch': 'Unwatch',
128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 'Updated Comment': 'Updated Comment',
130 'Updated Comment': 'Updated Comment',
124 'Updating...': 'Updating...',
131 'Updating...': 'Updating...',
125 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
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 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 'Watch': 'Watch',
135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 'You can only select {0} item': 'You can only select {0} item',
138 'You can only select {0} item': 'You can only select {0} item',
130 'You can only select {0} items': 'You can only select {0} items',
139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 '{0} ago': '{0} ago',
165 '{0} ago': '{0} ago',
157 '{0} and {1}': '{0} and {1}',
166 '{0} and {1}': '{0} and {1}',
158 '{0} and {1} ago': '{0} and {1} ago',
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 '{0} day': '{0} day',
172 '{0} day': '{0} day',
160 '{0} days': '{0} days',
173 '{0} days': '{0} days',
161 '{0} hour': '{0} hour',
174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 '{0} repository groups': '{0} repository groups',
184 '{0} repository groups': '{0} repository groups',
172 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
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 '{0} sec': '{0} sec',
186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 '{0} year': '{0} year',
191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 'Hide full context diff': 'Hide full context diff',
47 'Hide full context diff': 'Hide full context diff',
48 'Hide whitespace changes': 'Hide whitespace changes',
48 'Hide whitespace changes': 'Hide whitespace changes',
49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
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 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 '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 '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 '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}',
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 'Loading failed': 'Loading failed',
57 'Loading failed': 'Loading failed',
57 'Loading more results...': 'Loading more results...',
58 'Loading more results...': 'Loading more results...',
58 'Loading...': 'Loading...',
59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 'No bookmarks available yet.': 'No bookmarks available yet.',
61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 'No branches available yet.': 'No branches available yet.',
62 'No branches available yet.': 'No branches available yet.',
61 'No forks available yet.': 'No forks available yet.',
63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 'Please enter {0} or more characters': 'Bitte {0} oder mehr Zeichen eingeben',
86 'Please enter {0} or more characters': 'Bitte {0} oder mehr Zeichen eingeben',
85 'Please wait creating pull request...': 'Please wait creating pull request...',
87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 'Saving...': 'Saving...',
90 'Saving...': 'Saving...',
88 'Searching...': 'Searching...',
91 'Searching...': 'Searching...',
89 'Selection link': 'Selection link',
92 'Selection link': 'Selection link',
@@ -93,6 +96,7 b' var _TM = {'
93 'Show': 'Show',
96 'Show': 'Show',
94 'Show at Commit ': 'Show at Commit ',
97 'Show at Commit ': 'Show at Commit ',
95 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
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 'Show full context diff': 'Show full context diff',
100 'Show full context diff': 'Show full context diff',
97 'Show more': 'Show more',
101 'Show more': 'Show more',
98 'Show selected commit __S': 'Show selected commit __S',
102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 'Status Review': 'Status Review',
109 'Status Review': 'Status Review',
106 'Stop following this repository': 'Stop following this repository',
110 'Stop following this repository': 'Stop following this repository',
107 'Stopped watching this repository': 'Stopped watching this repository',
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 'Submitting...': 'Submitting...',
114 'Submitting...': 'Submitting...',
109 'Switch target repository with the source.': 'Switch target repository with the source.',
115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 'Switch to chat': 'Switch to chat',
116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 'Unfollow': 'Unfollow',
127 'Unfollow': 'Unfollow',
122 'Unwatch': 'Unwatch',
128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 'Updated Comment': 'Updated Comment',
130 'Updated Comment': 'Updated Comment',
124 'Updating...': 'Updating...',
131 'Updating...': 'Updating...',
125 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
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 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 'Watch': 'Watch',
135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 'You can only select {0} item': 'You can only select {0} item',
138 'You can only select {0} item': 'You can only select {0} item',
130 'You can only select {0} items': 'You can only select {0} items',
139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 '{0} ago': '{0} ago',
165 '{0} ago': '{0} ago',
157 '{0} and {1}': '{0} and {1}',
166 '{0} and {1}': '{0} and {1}',
158 '{0} and {1} ago': '{0} and {1} ago',
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 '{0} day': '{0} day',
172 '{0} day': '{0} day',
160 '{0} days': '{0} days',
173 '{0} days': '{0} days',
161 '{0} hour': '{0} hour',
174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 '{0} repository groups': '{0} repository groups',
184 '{0} repository groups': '{0} repository groups',
172 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
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 '{0} sec': '{0} sec',
186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 '{0} year': '{0} year',
191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 'Hide full context diff': 'Hide full context diff',
47 'Hide full context diff': 'Hide full context diff',
48 'Hide whitespace changes': 'Hide whitespace changes',
48 'Hide whitespace changes': 'Hide whitespace changes',
49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
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 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 '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 '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 '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}',
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 'Loading failed': 'Loading failed',
57 'Loading failed': 'Loading failed',
57 'Loading more results...': 'Loading more results...',
58 'Loading more results...': 'Loading more results...',
58 'Loading...': 'Loading...',
59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 'No bookmarks available yet.': 'No bookmarks available yet.',
61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 'No branches available yet.': 'No branches available yet.',
62 'No branches available yet.': 'No branches available yet.',
61 'No forks available yet.': 'No forks available yet.',
63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 'Please enter {0} or more characters': 'Please enter {0} or more characters',
86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 'Please wait creating pull request...': 'Please wait creating pull request...',
87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 'Saving...': 'Saving...',
90 'Saving...': 'Saving...',
88 'Searching...': 'Searching...',
91 'Searching...': 'Searching...',
89 'Selection link': 'Selection link',
92 'Selection link': 'Selection link',
@@ -93,6 +96,7 b' var _TM = {'
93 'Show': 'Show',
96 'Show': 'Show',
94 'Show at Commit ': 'Show at Commit ',
97 'Show at Commit ': 'Show at Commit ',
95 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
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 'Show full context diff': 'Show full context diff',
100 'Show full context diff': 'Show full context diff',
97 'Show more': 'Show more',
101 'Show more': 'Show more',
98 'Show selected commit __S': 'Show selected commit __S',
102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 'Status Review': 'Status Review',
109 'Status Review': 'Status Review',
106 'Stop following this repository': 'Stop following this repository',
110 'Stop following this repository': 'Stop following this repository',
107 'Stopped watching this repository': 'Stopped watching this repository',
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 'Submitting...': 'Submitting...',
114 'Submitting...': 'Submitting...',
109 'Switch target repository with the source.': 'Switch target repository with the source.',
115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 'Switch to chat': 'Switch to chat',
116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 'Unfollow': 'Unfollow',
127 'Unfollow': 'Unfollow',
122 'Unwatch': 'Unwatch',
128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 'Updated Comment': 'Updated Comment',
130 'Updated Comment': 'Updated Comment',
124 'Updating...': 'Updating...',
131 'Updating...': 'Updating...',
125 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
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 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 'Watch': 'Watch',
135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 'You can only select {0} item': 'You can only select {0} item',
138 'You can only select {0} item': 'You can only select {0} item',
130 'You can only select {0} items': 'You can only select {0} items',
139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 '{0} ago': '{0} ago',
165 '{0} ago': '{0} ago',
157 '{0} and {1}': '{0} and {1}',
166 '{0} and {1}': '{0} and {1}',
158 '{0} and {1} ago': '{0} and {1} ago',
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 '{0} day': '{0} day',
172 '{0} day': '{0} day',
160 '{0} days': '{0} days',
173 '{0} days': '{0} days',
161 '{0} hour': '{0} hour',
174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 '{0} repository groups': '{0} repository groups',
184 '{0} repository groups': '{0} repository groups',
172 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
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 '{0} sec': '{0} sec',
186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 '{0} year': '{0} year',
191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 'Hide full context diff': 'Hide full context diff',
47 'Hide full context diff': 'Hide full context diff',
48 'Hide whitespace changes': 'Hide whitespace changes',
48 'Hide whitespace changes': 'Hide whitespace changes',
49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
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 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 '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 '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 '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}',
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 'Loading failed': 'Loading failed',
57 'Loading failed': 'Loading failed',
57 'Loading more results...': 'Loading more results...',
58 'Loading more results...': 'Loading more results...',
58 'Loading...': 'Loading...',
59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 'No bookmarks available yet.': 'No bookmarks available yet.',
61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 'No branches available yet.': 'No branches available yet.',
62 'No branches available yet.': 'No branches available yet.',
61 'No forks available yet.': 'No forks available yet.',
63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 'Please enter {0} or more characters': 'Please enter {0} or more characters',
86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 'Please wait creating pull request...': 'Please wait creating pull request...',
87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 'Saving...': 'Saving...',
90 'Saving...': 'Saving...',
88 'Searching...': 'Searching...',
91 'Searching...': 'Searching...',
89 'Selection link': 'Selection link',
92 'Selection link': 'Selection link',
@@ -93,6 +96,7 b' var _TM = {'
93 'Show': 'Show',
96 'Show': 'Show',
94 'Show at Commit ': 'Show at Commit ',
97 'Show at Commit ': 'Show at Commit ',
95 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
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 'Show full context diff': 'Show full context diff',
100 'Show full context diff': 'Show full context diff',
97 'Show more': 'Show more',
101 'Show more': 'Show more',
98 'Show selected commit __S': 'Show selected commit __S',
102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 'Status Review': 'Status Review',
109 'Status Review': 'Status Review',
106 'Stop following this repository': 'Stop following this repository',
110 'Stop following this repository': 'Stop following this repository',
107 'Stopped watching this repository': 'Stopped watching this repository',
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 'Submitting...': 'Submitting...',
114 'Submitting...': 'Submitting...',
109 'Switch target repository with the source.': 'Switch target repository with the source.',
115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 'Switch to chat': 'Switch to chat',
116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 'Unfollow': 'Unfollow',
127 'Unfollow': 'Unfollow',
122 'Unwatch': 'Unwatch',
128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 'Updated Comment': 'Updated Comment',
130 'Updated Comment': 'Updated Comment',
124 'Updating...': 'Updating...',
131 'Updating...': 'Updating...',
125 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
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 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 'Watch': 'Watch',
135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 'You can only select {0} item': 'You can only select {0} item',
138 'You can only select {0} item': 'You can only select {0} item',
130 'You can only select {0} items': 'You can only select {0} items',
139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 '{0} ago': '{0} ago',
165 '{0} ago': '{0} ago',
157 '{0} and {1}': '{0} and {1}',
166 '{0} and {1}': '{0} and {1}',
158 '{0} and {1} ago': '{0} and {1} ago',
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 '{0} day': '{0} day',
172 '{0} day': '{0} day',
160 '{0} days': '{0} days',
173 '{0} days': '{0} days',
161 '{0} hour': '{0} hour',
174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 '{0} repository groups': '{0} repository groups',
184 '{0} repository groups': '{0} repository groups',
172 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
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 '{0} sec': '{0} sec',
186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 '{0} year': '{0} year',
191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 'Hide full context diff': 'Hide full context diff',
47 'Hide full context diff': 'Hide full context diff',
48 'Hide whitespace changes': 'Hide whitespace changes',
48 'Hide whitespace changes': 'Hide whitespace changes',
49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
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 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 '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 '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 '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}',
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 'Loading failed': 'Loading failed',
57 'Loading failed': 'Loading failed',
57 'Loading more results...': 'Loading more results...',
58 'Loading more results...': 'Loading more results...',
58 'Loading...': 'Loading...',
59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 'No bookmarks available yet.': 'No bookmarks available yet.',
61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 'No branches available yet.': 'No branches available yet.',
62 'No branches available yet.': 'No branches available yet.',
61 'No forks available yet.': 'No forks available yet.',
63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 'Please enter {0} or more characters': 'Please enter {0} or more characters',
86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 'Please wait creating pull request...': 'Please wait creating pull request...',
87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 'Saving...': 'Saving...',
90 'Saving...': 'Saving...',
88 'Searching...': 'Searching...',
91 'Searching...': 'Searching...',
89 'Selection link': 'Lien vers la sélection',
92 'Selection link': 'Lien vers la sélection',
@@ -93,6 +96,7 b' var _TM = {'
93 'Show': 'Show',
96 'Show': 'Show',
94 'Show at Commit ': 'Show at Commit ',
97 'Show at Commit ': 'Show at Commit ',
95 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
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 'Show full context diff': 'Show full context diff',
100 'Show full context diff': 'Show full context diff',
97 'Show more': 'Show more',
101 'Show more': 'Show more',
98 'Show selected commit __S': 'Show selected commit __S',
102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 'Status Review': 'Status Review',
109 'Status Review': 'Status Review',
106 'Stop following this repository': 'Arrêter de suivre ce dépôt',
110 'Stop following this repository': 'Arrêter de suivre ce dépôt',
107 'Stopped watching this repository': 'Stopped watching this repository',
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 'Submitting...': 'Envoi…',
114 'Submitting...': 'Envoi…',
109 'Switch target repository with the source.': 'Switch target repository with the source.',
115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 'Switch to chat': 'Switch to chat',
116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 'Unfollow': 'Unfollow',
127 'Unfollow': 'Unfollow',
122 'Unwatch': 'Unwatch',
128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 'Updated Comment': 'Updated Comment',
130 'Updated Comment': 'Updated Comment',
124 'Updating...': 'Updating...',
131 'Updating...': 'Updating...',
125 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
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 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 'Watch': 'Watch',
135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 'You can only select {0} item': 'You can only select {0} item',
138 'You can only select {0} item': 'You can only select {0} item',
130 'You can only select {0} items': 'You can only select {0} items',
139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 '{0} ago': '{0} ago',
165 '{0} ago': '{0} ago',
157 '{0} and {1}': '{0} and {1}',
166 '{0} and {1}': '{0} and {1}',
158 '{0} and {1} ago': '{0} and {1} ago',
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 '{0} day': '{0} day',
172 '{0} day': '{0} day',
160 '{0} days': '{0} jours',
173 '{0} days': '{0} jours',
161 '{0} hour': '{0} hour',
174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 '{0} repository groups': '{0} repository groups',
184 '{0} repository groups': '{0} repository groups',
172 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
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 '{0} sec': '{0} sec',
186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 '{0} year': '{0} year',
191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 'Hide full context diff': 'Hide full context diff',
47 'Hide full context diff': 'Hide full context diff',
48 'Hide whitespace changes': 'Hide whitespace changes',
48 'Hide whitespace changes': 'Hide whitespace changes',
49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
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 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 '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 '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 '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}',
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 'Loading failed': 'Loading failed',
57 'Loading failed': 'Loading failed',
57 'Loading more results...': 'Loading more results...',
58 'Loading more results...': 'Loading more results...',
58 'Loading...': 'Loading...',
59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 'No bookmarks available yet.': 'No bookmarks available yet.',
61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 'No branches available yet.': 'No branches available yet.',
62 'No branches available yet.': 'No branches available yet.',
61 'No forks available yet.': 'No forks available yet.',
63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 'Please enter {0} or more characters': 'Please enter {0} or more characters',
86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 'Please wait creating pull request...': 'Please wait creating pull request...',
87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 'Saving...': 'Saving...',
90 'Saving...': 'Saving...',
88 'Searching...': 'Searching...',
91 'Searching...': 'Searching...',
89 'Selection link': 'Collegamento selezione',
92 'Selection link': 'Collegamento selezione',
@@ -93,6 +96,7 b' var _TM = {'
93 'Show': 'Show',
96 'Show': 'Show',
94 'Show at Commit ': 'Show at Commit ',
97 'Show at Commit ': 'Show at Commit ',
95 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
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 'Show full context diff': 'Show full context diff',
100 'Show full context diff': 'Show full context diff',
97 'Show more': 'Mostra ancora',
101 'Show more': 'Mostra ancora',
98 'Show selected commit __S': 'Show selected commit __S',
102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 'Status Review': 'Status Review',
109 'Status Review': 'Status Review',
106 'Stop following this repository': 'Smetti di seguire il repository',
110 'Stop following this repository': 'Smetti di seguire il repository',
107 'Stopped watching this repository': 'Stopped watching this repository',
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 'Submitting...': 'Inoltro...',
114 'Submitting...': 'Inoltro...',
109 'Switch target repository with the source.': 'Switch target repository with the source.',
115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 'Switch to chat': 'Switch to chat',
116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 'Unfollow': 'Smetti di seguire',
127 'Unfollow': 'Smetti di seguire',
122 'Unwatch': 'Unwatch',
128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 'Updated Comment': 'Updated Comment',
130 'Updated Comment': 'Updated Comment',
124 'Updating...': 'Updating...',
131 'Updating...': 'Updating...',
125 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
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 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 'Watch': 'Watch',
135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 'You can only select {0} item': 'You can only select {0} item',
138 'You can only select {0} item': 'You can only select {0} item',
130 'You can only select {0} items': 'You can only select {0} items',
139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 '{0} ago': '{0} ago',
165 '{0} ago': '{0} ago',
157 '{0} and {1}': '{0} and {1}',
166 '{0} and {1}': '{0} and {1}',
158 '{0} and {1} ago': '{0} and {1} ago',
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 '{0} day': '{0} day',
172 '{0} day': '{0} day',
160 '{0} days': '{0} days',
173 '{0} days': '{0} days',
161 '{0} hour': '{0} hour',
174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 '{0} repository groups': '{0} repository groups',
184 '{0} repository groups': '{0} repository groups',
172 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
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 '{0} sec': '{0} sec',
186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 '{0} year': '{0} year',
191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 'Hide full context diff': 'Hide full context diff',
47 'Hide full context diff': 'Hide full context diff',
48 'Hide whitespace changes': 'Hide whitespace changes',
48 'Hide whitespace changes': 'Hide whitespace changes',
49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
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 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 '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 '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 '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}',
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 'Loading failed': '読み込み失敗',
57 'Loading failed': '読み込み失敗',
57 'Loading more results...': '結果を読み込み中...',
58 'Loading more results...': '結果を読み込み中...',
58 'Loading...': 'Loading...',
59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 'No bookmarks available yet.': 'まだブックマークがありません。',
61 'No bookmarks available yet.': 'まだブックマークがありません。',
60 'No branches available yet.': 'まだブランチがありません。',
62 'No branches available yet.': 'まだブランチがありません。',
61 'No forks available yet.': 'No forks available yet.',
63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 'Please enter {0} or more characters': '{0} 文字以上入力してください',
86 'Please enter {0} or more characters': '{0} 文字以上入力してください',
85 'Please wait creating pull request...': 'Please wait creating pull request...',
87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 'Saving...': 'Saving...',
90 'Saving...': 'Saving...',
88 'Searching...': '検索中...',
91 'Searching...': '検索中...',
89 'Selection link': 'セレクション・リンク',
92 'Selection link': 'セレクション・リンク',
@@ -93,6 +96,7 b' var _TM = {'
93 'Show': 'Show',
96 'Show': 'Show',
94 'Show at Commit ': 'Show at Commit ',
97 'Show at Commit ': 'Show at Commit ',
95 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
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 'Show full context diff': 'Show full context diff',
100 'Show full context diff': 'Show full context diff',
97 'Show more': 'もっと表示',
101 'Show more': 'もっと表示',
98 'Show selected commit __S': 'Show selected commit __S',
102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 'Status Review': 'ステータスレビュー',
109 'Status Review': 'ステータスレビュー',
106 'Stop following this repository': 'このリポジトリのフォローをやめる',
110 'Stop following this repository': 'このリポジトリのフォローをやめる',
107 'Stopped watching this repository': 'Stopped watching this repository',
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 'Submitting...': '送信中...',
114 'Submitting...': '送信中...',
109 'Switch target repository with the source.': 'Switch target repository with the source.',
115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 'Switch to chat': 'Switch to chat',
116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 'Unfollow': 'アンフォロー',
127 'Unfollow': 'アンフォロー',
122 'Unwatch': 'Unwatch',
128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 'Updated Comment': 'Updated Comment',
130 'Updated Comment': 'Updated Comment',
124 'Updating...': 'Updating...',
131 'Updating...': 'Updating...',
125 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
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 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 'Watch': 'Watch',
135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 'You can only select {0} item': '{0} 件のみ選択できます',
138 'You can only select {0} item': '{0} 件のみ選択できます',
130 'You can only select {0} items': '{0} 件のみ選択できます',
139 'You can only select {0} items': '{0} 件のみ選択できます',
@@ -156,6 +165,10 b' var _TM = {'
156 '{0} ago': '{0} 前',
165 '{0} ago': '{0} 前',
157 '{0} and {1}': '{0} and {1}',
166 '{0} and {1}': '{0} and {1}',
158 '{0} and {1} ago': '{0} and {1} ago',
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 '{0} day': '{0} 日',
172 '{0} day': '{0} 日',
160 '{0} days': '{0} days',
173 '{0} days': '{0} days',
161 '{0} hour': '{0} 時間',
174 '{0} hour': '{0} 時間',
@@ -171,6 +184,8 b' var _TM = {'
171 '{0} repository groups': '{0} repository groups',
184 '{0} repository groups': '{0} repository groups',
172 '{0} results are available, use up and down arrow keys to navigate.': '{0} 件の結果があります。矢印キーの上下で選択できます。',
185 '{0} results are available, use up and down arrow keys to navigate.': '{0} 件の結果があります。矢印キーの上下で選択できます。',
173 '{0} sec': '{0} 秒',
186 '{0} sec': '{0} 秒',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 '{0} year': '{0} 年',
191 '{0} year': '{0} 年',
@@ -41,6 +41,7 b''
41 _gettext('Hide full context diff');
41 _gettext('Hide full context diff');
42 _gettext('Hide whitespace changes');
42 _gettext('Hide whitespace changes');
43 _gettext('Invite reviewers to this discussion');
43 _gettext('Invite reviewers to this discussion');
44 _gettext('Leave a comment on file {0} line {1}.');
44 _gettext('Leave a comment on line {0}.');
45 _gettext('Leave a comment on line {0}.');
45 _gettext('Leave a comment, or click resolve button to resolve TODO comment #{0}');
46 _gettext('Leave a comment, or click resolve button to resolve TODO comment #{0}');
46 _gettext('Leave a resolution comment, or click resolve button to resolve TODO comment #{0}');
47 _gettext('Leave a resolution comment, or click resolve button to resolve TODO comment #{0}');
@@ -50,6 +51,7 b''
50 _gettext('Loading failed');
51 _gettext('Loading failed');
51 _gettext('Loading more results...');
52 _gettext('Loading more results...');
52 _gettext('Loading...');
53 _gettext('Loading...');
54 _gettext('No additional review rules set.');
53 _gettext('No bookmarks available yet.');
55 _gettext('No bookmarks available yet.');
54 _gettext('No branches available yet.');
56 _gettext('No branches available yet.');
55 _gettext('No forks available yet.');
57 _gettext('No forks available yet.');
@@ -78,6 +80,7 b''
78 _gettext('Please enter {0} or more characters');
80 _gettext('Please enter {0} or more characters');
79 _gettext('Please wait creating pull request...');
81 _gettext('Please wait creating pull request...');
80 _gettext('Reviewers picked from source code changes.');
82 _gettext('Reviewers picked from source code changes.');
83 _gettext('Saving Draft...');
81 _gettext('Saving...');
84 _gettext('Saving...');
82 _gettext('Searching...');
85 _gettext('Searching...');
83 _gettext('Selection link');
86 _gettext('Selection link');
@@ -87,6 +90,7 b''
87 _gettext('Show');
90 _gettext('Show');
88 _gettext('Show at Commit ');
91 _gettext('Show at Commit ');
89 _gettext('Show commit range {0} ... {1}');
92 _gettext('Show commit range {0} ... {1}');
93 _gettext('Show commit range {0}<i class="icon-angle-right"></i>{1}');
90 _gettext('Show full context diff');
94 _gettext('Show full context diff');
91 _gettext('Show more');
95 _gettext('Show more');
92 _gettext('Show selected commit __S');
96 _gettext('Show selected commit __S');
@@ -99,6 +103,8 b''
99 _gettext('Status Review');
103 _gettext('Status Review');
100 _gettext('Stop following this repository');
104 _gettext('Stop following this repository');
101 _gettext('Stopped watching this repository');
105 _gettext('Stopped watching this repository');
106 _gettext('Submit {0} draft comment.');
107 _gettext('Submit {0} draft comments.');
102 _gettext('Submitting...');
108 _gettext('Submitting...');
103 _gettext('Switch target repository with the source.');
109 _gettext('Switch target repository with the source.');
104 _gettext('Switch to chat');
110 _gettext('Switch to chat');
@@ -114,11 +120,14 b''
114 _gettext('Toggle Wide Mode diff');
120 _gettext('Toggle Wide Mode diff');
115 _gettext('Unfollow');
121 _gettext('Unfollow');
116 _gettext('Unwatch');
122 _gettext('Unwatch');
123 _gettext('Update Comment');
117 _gettext('Updated Comment');
124 _gettext('Updated Comment');
118 _gettext('Updating...');
125 _gettext('Updating...');
119 _gettext('User `{0}` already in reviewers');
126 _gettext('User `{0}` already in reviewers');
127 _gettext('User `{0}` already in reviewers/observers');
120 _gettext('User `{0}` not allowed to be a reviewer');
128 _gettext('User `{0}` not allowed to be a reviewer');
121 _gettext('Watch');
129 _gettext('Watch');
130 _gettext('Yes');
122 _gettext('Yes, delete comment #{0}!');
131 _gettext('Yes, delete comment #{0}!');
123 _gettext('You can only select {0} item');
132 _gettext('You can only select {0} item');
124 _gettext('You can only select {0} items');
133 _gettext('You can only select {0} items');
@@ -150,6 +159,10 b''
150 _gettext('{0} ago');
159 _gettext('{0} ago');
151 _gettext('{0} and {1}');
160 _gettext('{0} and {1}');
152 _gettext('{0} and {1} ago');
161 _gettext('{0} and {1} ago');
162 _gettext('{0} bookmark');
163 _gettext('{0} bookmarks');
164 _gettext('{0} branch');
165 _gettext('{0} branches');
153 _gettext('{0} day');
166 _gettext('{0} day');
154 _gettext('{0} days');
167 _gettext('{0} days');
155 _gettext('{0} hour');
168 _gettext('{0} hour');
@@ -165,6 +178,8 b''
165 _gettext('{0} repository groups');
178 _gettext('{0} repository groups');
166 _gettext('{0} results are available, use up and down arrow keys to navigate.');
179 _gettext('{0} results are available, use up and down arrow keys to navigate.');
167 _gettext('{0} sec');
180 _gettext('{0} sec');
181 _gettext('{0} tag');
182 _gettext('{0} tags');
168 _gettext('{0} user groups ({1} inactive)');
183 _gettext('{0} user groups ({1} inactive)');
169 _gettext('{0} users ({1} inactive)');
184 _gettext('{0} users ({1} inactive)');
170 _gettext('{0} year');
185 _gettext('{0} year');
@@ -47,6 +47,7 b' var _TM = {'
47 'Hide full context diff': 'Hide full context diff',
47 'Hide full context diff': 'Hide full context diff',
48 'Hide whitespace changes': 'Hide whitespace changes',
48 'Hide whitespace changes': 'Hide whitespace changes',
49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
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 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 '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 '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 '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}',
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 'Loading failed': 'Loading failed',
57 'Loading failed': 'Loading failed',
57 'Loading more results...': 'Loading more results...',
58 'Loading more results...': 'Loading more results...',
58 'Loading...': 'Loading...',
59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 'No bookmarks available yet.': 'No bookmarks available yet.',
61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 'No branches available yet.': 'No branches available yet.',
62 'No branches available yet.': 'No branches available yet.',
61 'No forks available yet.': 'No forks available yet.',
63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 'Please enter {0} or more characters': 'Please enter {0} or more characters',
86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 'Please wait creating pull request...': 'Please wait creating pull request...',
87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 'Saving...': 'Saving...',
90 'Saving...': 'Saving...',
88 'Searching...': 'Searching...',
91 'Searching...': 'Searching...',
89 'Selection link': 'Wybór linku',
92 'Selection link': 'Wybór linku',
@@ -93,6 +96,7 b' var _TM = {'
93 'Show': 'Show',
96 'Show': 'Show',
94 'Show at Commit ': 'Show at Commit ',
97 'Show at Commit ': 'Show at Commit ',
95 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
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 'Show full context diff': 'Show full context diff',
100 'Show full context diff': 'Show full context diff',
97 'Show more': 'Pokaż więcej',
101 'Show more': 'Pokaż więcej',
98 'Show selected commit __S': 'Show selected commit __S',
102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 'Status Review': 'Status Review',
109 'Status Review': 'Status Review',
106 'Stop following this repository': 'Zakończyć obserwację tego repozytorium',
110 'Stop following this repository': 'Zakończyć obserwację tego repozytorium',
107 'Stopped watching this repository': 'Stopped watching this repository',
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 'Submitting...': 'Przesyłanie...',
114 'Submitting...': 'Przesyłanie...',
109 'Switch target repository with the source.': 'Switch target repository with the source.',
115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 'Switch to chat': 'Switch to chat',
116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 'Unfollow': 'Nie obserwuj',
127 'Unfollow': 'Nie obserwuj',
122 'Unwatch': 'Unwatch',
128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 'Updated Comment': 'Updated Comment',
130 'Updated Comment': 'Updated Comment',
124 'Updating...': 'Updating...',
131 'Updating...': 'Updating...',
125 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
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 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 'Watch': 'Watch',
135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 'You can only select {0} item': 'You can only select {0} item',
138 'You can only select {0} item': 'You can only select {0} item',
130 'You can only select {0} items': 'You can only select {0} items',
139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 '{0} ago': '{0} ago',
165 '{0} ago': '{0} ago',
157 '{0} and {1}': '{0} and {1}',
166 '{0} and {1}': '{0} and {1}',
158 '{0} and {1} ago': '{0} and {1} ago',
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 '{0} day': '{0} day',
172 '{0} day': '{0} day',
160 '{0} days': '{0} days',
173 '{0} days': '{0} days',
161 '{0} hour': '{0} hour',
174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 '{0} repository groups': '{0} repository groups',
184 '{0} repository groups': '{0} repository groups',
172 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
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 '{0} sec': '{0} sec',
186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 '{0} year': '{0} year',
191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 'Hide full context diff': 'Hide full context diff',
47 'Hide full context diff': 'Hide full context diff',
48 'Hide whitespace changes': 'Hide whitespace changes',
48 'Hide whitespace changes': 'Hide whitespace changes',
49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
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 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 '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 '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 '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}',
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 'Loading failed': 'Loading failed',
57 'Loading failed': 'Loading failed',
57 'Loading more results...': 'Loading more results...',
58 'Loading more results...': 'Loading more results...',
58 'Loading...': 'Loading...',
59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 'No bookmarks available yet.': 'No bookmarks available yet.',
61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 'No branches available yet.': 'No branches available yet.',
62 'No branches available yet.': 'No branches available yet.',
61 'No forks available yet.': 'No forks available yet.',
63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 'Please enter {0} or more characters': 'Please enter {0} or more characters',
86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 'Please wait creating pull request...': 'Please wait creating pull request...',
87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 'Saving...': 'Saving...',
90 'Saving...': 'Saving...',
88 'Searching...': 'Searching...',
91 'Searching...': 'Searching...',
89 'Selection link': 'Link da seleção',
92 'Selection link': 'Link da seleção',
@@ -93,6 +96,7 b' var _TM = {'
93 'Show': 'Show',
96 'Show': 'Show',
94 'Show at Commit ': 'Show at Commit ',
97 'Show at Commit ': 'Show at Commit ',
95 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
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 'Show full context diff': 'Show full context diff',
100 'Show full context diff': 'Show full context diff',
97 'Show more': 'Mostrar mais',
101 'Show more': 'Mostrar mais',
98 'Show selected commit __S': 'Show selected commit __S',
102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 'Status Review': 'Status Review',
109 'Status Review': 'Status Review',
106 'Stop following this repository': 'Parar de seguir este repositório',
110 'Stop following this repository': 'Parar de seguir este repositório',
107 'Stopped watching this repository': 'Stopped watching this repository',
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 'Submitting...': 'Enviando...',
114 'Submitting...': 'Enviando...',
109 'Switch target repository with the source.': 'Switch target repository with the source.',
115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 'Switch to chat': 'Switch to chat',
116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 'Unfollow': 'Parar de seguir',
127 'Unfollow': 'Parar de seguir',
122 'Unwatch': 'Unwatch',
128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 'Updated Comment': 'Updated Comment',
130 'Updated Comment': 'Updated Comment',
124 'Updating...': 'Updating...',
131 'Updating...': 'Updating...',
125 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
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 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 'Watch': 'Watch',
135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 'You can only select {0} item': 'You can only select {0} item',
138 'You can only select {0} item': 'You can only select {0} item',
130 'You can only select {0} items': 'You can only select {0} items',
139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 '{0} ago': '{0} ago',
165 '{0} ago': '{0} ago',
157 '{0} and {1}': '{0} and {1}',
166 '{0} and {1}': '{0} and {1}',
158 '{0} and {1} ago': '{0} and {1} ago',
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 '{0} day': '{0} day',
172 '{0} day': '{0} day',
160 '{0} days': '{0} days',
173 '{0} days': '{0} days',
161 '{0} hour': '{0} hour',
174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 '{0} repository groups': '{0} repository groups',
184 '{0} repository groups': '{0} repository groups',
172 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
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 '{0} sec': '{0} sec',
186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 '{0} year': '{0} year',
191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 'Hide full context diff': 'Hide full context diff',
47 'Hide full context diff': 'Hide full context diff',
48 'Hide whitespace changes': 'Hide whitespace changes',
48 'Hide whitespace changes': 'Hide whitespace changes',
49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
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 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 '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 '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 '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}',
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 'Loading failed': 'Loading failed',
57 'Loading failed': 'Loading failed',
57 'Loading more results...': 'Loading more results...',
58 'Loading more results...': 'Loading more results...',
58 'Loading...': 'Loading...',
59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 'No bookmarks available yet.': 'No bookmarks available yet.',
61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 'No branches available yet.': 'No branches available yet.',
62 'No branches available yet.': 'No branches available yet.',
61 'No forks available yet.': 'No forks available yet.',
63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 'Please enter {0} or more characters': 'Please enter {0} or more characters',
86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 'Please wait creating pull request...': 'Please wait creating pull request...',
87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 'Saving...': 'Saving...',
90 'Saving...': 'Saving...',
88 'Searching...': 'Searching...',
91 'Searching...': 'Searching...',
89 'Selection link': 'Ссылка выбора',
92 'Selection link': 'Ссылка выбора',
@@ -93,6 +96,7 b' var _TM = {'
93 'Show': 'Show',
96 'Show': 'Show',
94 'Show at Commit ': 'Show at Commit ',
97 'Show at Commit ': 'Show at Commit ',
95 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
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 'Show full context diff': 'Show full context diff',
100 'Show full context diff': 'Show full context diff',
97 'Show more': 'Показать еще',
101 'Show more': 'Показать еще',
98 'Show selected commit __S': 'Show selected commit __S',
102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 'Status Review': 'Status Review',
109 'Status Review': 'Status Review',
106 'Stop following this repository': 'Отменить наблюдение за репозиторием',
110 'Stop following this repository': 'Отменить наблюдение за репозиторием',
107 'Stopped watching this repository': 'Stopped watching this repository',
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 'Submitting...': 'Применение...',
114 'Submitting...': 'Применение...',
109 'Switch target repository with the source.': 'Switch target repository with the source.',
115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 'Switch to chat': 'Switch to chat',
116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 'Unfollow': 'Не наблюдать',
127 'Unfollow': 'Не наблюдать',
122 'Unwatch': 'Unwatch',
128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 'Updated Comment': 'Updated Comment',
130 'Updated Comment': 'Updated Comment',
124 'Updating...': 'Updating...',
131 'Updating...': 'Updating...',
125 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
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 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 'Watch': 'Watch',
135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 'You can only select {0} item': 'You can only select {0} item',
138 'You can only select {0} item': 'You can only select {0} item',
130 'You can only select {0} items': 'You can only select {0} items',
139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 '{0} ago': '{0} ago',
165 '{0} ago': '{0} ago',
157 '{0} and {1}': '{0} and {1}',
166 '{0} and {1}': '{0} and {1}',
158 '{0} and {1} ago': '{0} and {1} ago',
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 '{0} day': '{0} day',
172 '{0} day': '{0} day',
160 '{0} days': '{0} days',
173 '{0} days': '{0} days',
161 '{0} hour': '{0} hour',
174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 '{0} repository groups': '{0} repository groups',
184 '{0} repository groups': '{0} repository groups',
172 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
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 '{0} sec': '{0} sec',
186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 '{0} year': '{0} year',
191 '{0} year': '{0} year',
@@ -47,6 +47,7 b' var _TM = {'
47 'Hide full context diff': 'Hide full context diff',
47 'Hide full context diff': 'Hide full context diff',
48 'Hide whitespace changes': 'Hide whitespace changes',
48 'Hide whitespace changes': 'Hide whitespace changes',
49 'Invite reviewers to this discussion': 'Invite reviewers to this discussion',
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 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 'Leave a comment on line {0}.': 'Leave a comment on line {0}.',
51 '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 '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 '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}',
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 'Loading failed': 'Loading failed',
57 'Loading failed': 'Loading failed',
57 'Loading more results...': 'Loading more results...',
58 'Loading more results...': 'Loading more results...',
58 'Loading...': 'Loading...',
59 'Loading...': 'Loading...',
60 'No additional review rules set.': 'No additional review rules set.',
59 'No bookmarks available yet.': 'No bookmarks available yet.',
61 'No bookmarks available yet.': 'No bookmarks available yet.',
60 'No branches available yet.': 'No branches available yet.',
62 'No branches available yet.': 'No branches available yet.',
61 'No forks available yet.': 'No forks available yet.',
63 'No forks available yet.': 'No forks available yet.',
@@ -84,6 +86,7 b' var _TM = {'
84 'Please enter {0} or more characters': 'Please enter {0} or more characters',
86 'Please enter {0} or more characters': 'Please enter {0} or more characters',
85 'Please wait creating pull request...': 'Please wait creating pull request...',
87 'Please wait creating pull request...': 'Please wait creating pull request...',
86 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
88 'Reviewers picked from source code changes.': 'Reviewers picked from source code changes.',
89 'Saving Draft...': 'Saving Draft...',
87 'Saving...': 'Saving...',
90 'Saving...': 'Saving...',
88 'Searching...': 'Searching...',
91 'Searching...': 'Searching...',
89 'Selection link': '选择链接',
92 'Selection link': '选择链接',
@@ -93,6 +96,7 b' var _TM = {'
93 'Show': 'Show',
96 'Show': 'Show',
94 'Show at Commit ': 'Show at Commit ',
97 'Show at Commit ': 'Show at Commit ',
95 'Show commit range {0} ... {1}': 'Show commit range {0} ... {1}',
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 'Show full context diff': 'Show full context diff',
100 'Show full context diff': 'Show full context diff',
97 'Show more': 'Show more',
101 'Show more': 'Show more',
98 'Show selected commit __S': 'Show selected commit __S',
102 'Show selected commit __S': 'Show selected commit __S',
@@ -105,6 +109,8 b' var _TM = {'
105 'Status Review': 'Status Review',
109 'Status Review': 'Status Review',
106 'Stop following this repository': '停止关注该版本库',
110 'Stop following this repository': '停止关注该版本库',
107 'Stopped watching this repository': 'Stopped watching this repository',
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 'Submitting...': '提交中……',
114 'Submitting...': '提交中……',
109 'Switch target repository with the source.': 'Switch target repository with the source.',
115 'Switch target repository with the source.': 'Switch target repository with the source.',
110 'Switch to chat': 'Switch to chat',
116 'Switch to chat': 'Switch to chat',
@@ -120,11 +126,14 b' var _TM = {'
120 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
126 'Toggle Wide Mode diff': 'Toggle Wide Mode diff',
121 'Unfollow': 'Unfollow',
127 'Unfollow': 'Unfollow',
122 'Unwatch': 'Unwatch',
128 'Unwatch': 'Unwatch',
129 'Update Comment': 'Update Comment',
123 'Updated Comment': 'Updated Comment',
130 'Updated Comment': 'Updated Comment',
124 'Updating...': 'Updating...',
131 'Updating...': 'Updating...',
125 'User `{0}` already in reviewers': 'User `{0}` already in reviewers',
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 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
134 'User `{0}` not allowed to be a reviewer': 'User `{0}` not allowed to be a reviewer',
127 'Watch': 'Watch',
135 'Watch': 'Watch',
136 'Yes': 'Yes',
128 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
137 'Yes, delete comment #{0}!': 'Yes, delete comment #{0}!',
129 'You can only select {0} item': 'You can only select {0} item',
138 'You can only select {0} item': 'You can only select {0} item',
130 'You can only select {0} items': 'You can only select {0} items',
139 'You can only select {0} items': 'You can only select {0} items',
@@ -156,6 +165,10 b' var _TM = {'
156 '{0} ago': '{0} ago',
165 '{0} ago': '{0} ago',
157 '{0} and {1}': '{0} and {1}',
166 '{0} and {1}': '{0} and {1}',
158 '{0} and {1} ago': '{0} and {1} ago',
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 '{0} day': '{0} day',
172 '{0} day': '{0} day',
160 '{0} days': '{0} days',
173 '{0} days': '{0} days',
161 '{0} hour': '{0} hour',
174 '{0} hour': '{0} hour',
@@ -171,6 +184,8 b' var _TM = {'
171 '{0} repository groups': '{0} repository groups',
184 '{0} repository groups': '{0} repository groups',
172 '{0} results are available, use up and down arrow keys to navigate.': '{0} results are available, use up and down arrow keys to navigate.',
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 '{0} sec': '{0} sec',
186 '{0} sec': '{0} sec',
187 '{0} tag': '{0} tag',
188 '{0} tags': '{0} tags',
174 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
189 '{0} user groups ({1} inactive)': '{0} user groups ({1} inactive)',
175 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
190 '{0} users ({1} inactive)': '{0} users ({1} inactive)',
176 '{0} year': '{0} year',
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 function registerRCRoutes() {
13 function registerRCRoutes() {
14 // routes registration
14 // routes registration
15 pyroutes.register('favicon', '/favicon.ico', []);
15 pyroutes.register('admin_audit_log_entry', '/_admin/audit_logs/%(audit_log_id)s', ['audit_log_id']);
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', []);
44 pyroutes.register('admin_audit_logs', '/_admin/audit_logs', []);
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 pyroutes.register('admin_defaults_repositories', '/_admin/defaults/repositories', []);
17 pyroutes.register('admin_defaults_repositories', '/_admin/defaults/repositories', []);
64 pyroutes.register('admin_defaults_repositories_update', '/_admin/defaults/repositories/update', []);
18 pyroutes.register('admin_defaults_repositories_update', '/_admin/defaults/repositories/update', []);
65 pyroutes.register('admin_settings', '/_admin/settings', []);
19 pyroutes.register('admin_home', '/_admin', []);
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', []);
88 pyroutes.register('admin_permissions_application', '/_admin/permissions/application', []);
20 pyroutes.register('admin_permissions_application', '/_admin/permissions/application', []);
89 pyroutes.register('admin_permissions_application_update', '/_admin/permissions/application/update', []);
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 pyroutes.register('admin_permissions_global', '/_admin/permissions/global', []);
25 pyroutes.register('admin_permissions_global', '/_admin/permissions/global', []);
91 pyroutes.register('admin_permissions_global_update', '/_admin/permissions/global/update', []);
26 pyroutes.register('admin_permissions_global_update', '/_admin/permissions/global/update', []);
27 pyroutes.register('admin_permissions_ips', '/_admin/permissions/ips', []);
92 pyroutes.register('admin_permissions_object', '/_admin/permissions/object', []);
28 pyroutes.register('admin_permissions_object', '/_admin/permissions/object', []);
93 pyroutes.register('admin_permissions_object_update', '/_admin/permissions/object/update', []);
29 pyroutes.register('admin_permissions_object_update', '/_admin/permissions/object/update', []);
94 pyroutes.register('admin_permissions_ips', '/_admin/permissions/ips', []);
95 pyroutes.register('admin_permissions_overview', '/_admin/permissions/overview', []);
30 pyroutes.register('admin_permissions_overview', '/_admin/permissions/overview', []);
96 pyroutes.register('admin_permissions_auth_token_access', '/_admin/permissions/auth_token_access', []);
97 pyroutes.register('admin_permissions_ssh_keys', '/_admin/permissions/ssh_keys', []);
31 pyroutes.register('admin_permissions_ssh_keys', '/_admin/permissions/ssh_keys', []);
98 pyroutes.register('admin_permissions_ssh_keys_data', '/_admin/permissions/ssh_keys/data', []);
32 pyroutes.register('admin_permissions_ssh_keys_data', '/_admin/permissions/ssh_keys/data', []);
99 pyroutes.register('admin_permissions_ssh_keys_update', '/_admin/permissions/ssh_keys/update', []);
33 pyroutes.register('admin_permissions_ssh_keys_update', '/_admin/permissions/ssh_keys/update', []);
100 pyroutes.register('users', '/_admin/users', []);
34 pyroutes.register('admin_settings', '/_admin/settings', []);
101 pyroutes.register('users_data', '/_admin/users_data', []);
35 pyroutes.register('admin_settings_automation', '/_admin/settings/automation', []);
102 pyroutes.register('users_create', '/_admin/users/create', []);
36 pyroutes.register('admin_settings_automation_update', '/_admin/settings/automation/%(entry_id)s/update', ['entry_id']);
103 pyroutes.register('users_new', '/_admin/users/new', []);
37 pyroutes.register('admin_settings_email', '/_admin/settings/email', []);
104 pyroutes.register('user_edit', '/_admin/users/%(user_id)s/edit', ['user_id']);
38 pyroutes.register('admin_settings_email_update', '/_admin/settings/email/update', []);
105 pyroutes.register('user_edit_advanced', '/_admin/users/%(user_id)s/edit/advanced', ['user_id']);
39 pyroutes.register('admin_settings_exception_tracker', '/_admin/settings/exceptions', []);
106 pyroutes.register('user_edit_global_perms', '/_admin/users/%(user_id)s/edit/global_permissions', ['user_id']);
40 pyroutes.register('admin_settings_exception_tracker_delete', '/_admin/settings/exceptions/%(exception_id)s/delete', ['exception_id']);
107 pyroutes.register('user_edit_global_perms_update', '/_admin/users/%(user_id)s/edit/global_permissions/update', ['user_id']);
41 pyroutes.register('admin_settings_exception_tracker_delete_all', '/_admin/settings/exceptions_delete_all', []);
108 pyroutes.register('user_update', '/_admin/users/%(user_id)s/update', ['user_id']);
42 pyroutes.register('admin_settings_exception_tracker_show', '/_admin/settings/exceptions/%(exception_id)s', ['exception_id']);
109 pyroutes.register('user_delete', '/_admin/users/%(user_id)s/delete', ['user_id']);
43 pyroutes.register('admin_settings_global', '/_admin/settings/global', []);
110 pyroutes.register('user_enable_force_password_reset', '/_admin/users/%(user_id)s/password_reset_enable', ['user_id']);
44 pyroutes.register('admin_settings_global_update', '/_admin/settings/global/update', []);
111 pyroutes.register('user_disable_force_password_reset', '/_admin/users/%(user_id)s/password_reset_disable', ['user_id']);
45 pyroutes.register('admin_settings_hooks', '/_admin/settings/hooks', []);
112 pyroutes.register('user_create_personal_repo_group', '/_admin/users/%(user_id)s/create_repo_group', ['user_id']);
46 pyroutes.register('admin_settings_hooks_delete', '/_admin/settings/hooks/delete', []);
113 pyroutes.register('user_notice_dismiss', '/_admin/users/%(user_id)s/notice_dismiss', ['user_id']);
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 pyroutes.register('edit_user_auth_tokens_view', '/_admin/users/%(user_id)s/edit/auth_tokens/view', ['user_id']);
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']);
142 pyroutes.register('edit_user_caches', '/_admin/users/%(user_id)s/edit/caches', ['user_id']);
116 pyroutes.register('edit_user_ssh_keys', '/_admin/users/%(user_id)s/edit/ssh_keys', ['user_id']);
143 pyroutes.register('edit_user_caches_update', '/_admin/users/%(user_id)s/edit/caches/update', ['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']);
120 pyroutes.register('edit_user_emails', '/_admin/users/%(user_id)s/edit/emails', ['user_id']);
144 pyroutes.register('edit_user_emails', '/_admin/users/%(user_id)s/edit/emails', ['user_id']);
121 pyroutes.register('edit_user_emails_add', '/_admin/users/%(user_id)s/edit/emails/new', ['user_id']);
145 pyroutes.register('edit_user_emails_add', '/_admin/users/%(user_id)s/edit/emails/new', ['user_id']);
122 pyroutes.register('edit_user_emails_delete', '/_admin/users/%(user_id)s/edit/emails/delete', ['user_id']);
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 pyroutes.register('edit_user_ips', '/_admin/users/%(user_id)s/edit/ips', ['user_id']);
158 pyroutes.register('edit_user_ips', '/_admin/users/%(user_id)s/edit/ips', ['user_id']);
124 pyroutes.register('edit_user_ips_add', '/_admin/users/%(user_id)s/edit/ips/new', ['user_id']);
159 pyroutes.register('edit_user_ips_add', '/_admin/users/%(user_id)s/edit/ips/new', ['user_id']);
125 pyroutes.register('edit_user_ips_delete', '/_admin/users/%(user_id)s/edit/ips/delete', ['user_id']);
160 pyroutes.register('edit_user_ips_delete', '/_admin/users/%(user_id)s/edit/ips/delete', ['user_id']);
126 pyroutes.register('edit_user_perms_summary', '/_admin/users/%(user_id)s/edit/permissions_summary', ['user_id']);
161 pyroutes.register('edit_user_perms_summary', '/_admin/users/%(user_id)s/edit/permissions_summary', ['user_id']);
127 pyroutes.register('edit_user_perms_summary_json', '/_admin/users/%(user_id)s/edit/permissions_summary/json', ['user_id']);
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']);
163 pyroutes.register('edit_user_ssh_keys', '/_admin/users/%(user_id)s/edit/ssh_keys', ['user_id']);
129 pyroutes.register('edit_user_groups_management_updates', '/_admin/users/%(user_id)s/edit/edit_user_groups_management/updates', ['user_id']);
164 pyroutes.register('edit_user_ssh_keys_add', '/_admin/users/%(user_id)s/edit/ssh_keys/new', ['user_id']);
130 pyroutes.register('edit_user_audit_logs', '/_admin/users/%(user_id)s/edit/audit', ['user_id']);
165 pyroutes.register('edit_user_ssh_keys_delete', '/_admin/users/%(user_id)s/edit/ssh_keys/delete', ['user_id']);
131 pyroutes.register('edit_user_audit_logs_download', '/_admin/users/%(user_id)s/edit/audit/download', ['user_id']);
166 pyroutes.register('edit_user_ssh_keys_generate_keypair', '/_admin/users/%(user_id)s/edit/ssh_keys/generate', ['user_id']);
132 pyroutes.register('edit_user_caches', '/_admin/users/%(user_id)s/edit/caches', ['user_id']);
167 pyroutes.register('favicon', '/favicon.ico', []);
133 pyroutes.register('edit_user_caches_update', '/_admin/users/%(user_id)s/edit/caches/update', ['user_id']);
168 pyroutes.register('file_preview', '/_file_preview', []);
134 pyroutes.register('user_groups', '/_admin/user_groups', []);
169 pyroutes.register('gist_delete', '/_admin/gists/%(gist_id)s/delete', ['gist_id']);
135 pyroutes.register('user_groups_data', '/_admin/user_groups_data', []);
170 pyroutes.register('gist_edit', '/_admin/gists/%(gist_id)s/edit', ['gist_id']);
136 pyroutes.register('user_groups_new', '/_admin/user_groups/new', []);
171 pyroutes.register('gist_edit_check_revision', '/_admin/gists/%(gist_id)s/edit/check_revision', ['gist_id']);
137 pyroutes.register('user_groups_create', '/_admin/user_groups/create', []);
172 pyroutes.register('gist_show', '/_admin/gists/%(gist_id)s', ['gist_id']);
138 pyroutes.register('repos', '/_admin/repos', []);
173 pyroutes.register('gist_show_formatted', '/_admin/gists/%(gist_id)s/rev/%(revision)s/%(format)s', ['gist_id', 'revision', 'format']);
139 pyroutes.register('repos_data', '/_admin/repos_data', []);
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']);
140 pyroutes.register('repo_new', '/_admin/repos/new', []);
175 pyroutes.register('gist_show_rev', '/_admin/gists/%(gist_id)s/rev/%(revision)s', ['gist_id', 'revision']);
141 pyroutes.register('repo_create', '/_admin/repos/create', []);
176 pyroutes.register('gist_update', '/_admin/gists/%(gist_id)s/update', ['gist_id']);
142 pyroutes.register('repo_groups', '/_admin/repo_groups', []);
177 pyroutes.register('gists_create', '/_admin/gists/create', []);
143 pyroutes.register('repo_groups_data', '/_admin/repo_groups_data', []);
178 pyroutes.register('gists_new', '/_admin/gists/new', []);
144 pyroutes.register('repo_group_new', '/_admin/repo_group/new', []);
179 pyroutes.register('gists_show', '/_admin/gists', []);
145 pyroutes.register('repo_group_create', '/_admin/repo_group/create', []);
180 pyroutes.register('global_integrations_create', '/_admin/integrations/%(integration)s/new', ['integration']);
146 pyroutes.register('channelstream_connect', '/_admin/channelstream/connect', []);
181 pyroutes.register('global_integrations_edit', '/_admin/integrations/%(integration)s/%(integration_id)s', ['integration', 'integration_id']);
147 pyroutes.register('channelstream_subscribe', '/_admin/channelstream/subscribe', []);
182 pyroutes.register('global_integrations_home', '/_admin/integrations', []);
148 pyroutes.register('channelstream_proxy', '/_channelstream', []);
183 pyroutes.register('global_integrations_list', '/_admin/integrations/%(integration)s', ['integration']);
149 pyroutes.register('upload_file', '/_file_store/upload', []);
184 pyroutes.register('global_integrations_new', '/_admin/integrations/new', []);
150 pyroutes.register('download_file', '/_file_store/download/%(fid)s', ['fid']);
185 pyroutes.register('goto_switcher_data', '/_goto_data', []);
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', []);
155 pyroutes.register('home', '/', []);
186 pyroutes.register('home', '/', []);
156 pyroutes.register('main_page_repos_data', '/_home_repos', []);
187 pyroutes.register('hovercard_pull_request', '/_hovercard/pull_request/%(pull_request_id)s', ['pull_request_id']);
157 pyroutes.register('main_page_repo_groups_data', '/_home_repo_groups', []);
188 pyroutes.register('hovercard_repo_commit', '/_hovercard/commit/%(repo_name)s/%(commit_id)s', ['repo_name', 'commit_id']);
158 pyroutes.register('user_autocomplete_data', '/_users', []);
189 pyroutes.register('hovercard_user', '/_hovercard/user/%(user_id)s', ['user_id']);
159 pyroutes.register('user_group_autocomplete_data', '/_user_groups', []);
190 pyroutes.register('hovercard_user_group', '/_hovercard/user_group/%(user_group_id)s', ['user_group_id']);
160 pyroutes.register('repo_list_data', '/_repos', []);
191 pyroutes.register('hovercard_username', '/_hovercard/username/%(username)s', ['username']);
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', []);
166 pyroutes.register('journal', '/_admin/journal', []);
192 pyroutes.register('journal', '/_admin/journal', []);
167 pyroutes.register('journal_rss', '/_admin/journal/rss', []);
168 pyroutes.register('journal_atom', '/_admin/journal/atom', []);
193 pyroutes.register('journal_atom', '/_admin/journal/atom', []);
169 pyroutes.register('journal_public', '/_admin/public_journal', []);
194 pyroutes.register('journal_public', '/_admin/public_journal', []);
170 pyroutes.register('journal_public_atom', '/_admin/public_journal/atom', []);
195 pyroutes.register('journal_public_atom', '/_admin/public_journal/atom', []);
171 pyroutes.register('journal_public_atom_old', '/_admin/public_journal_atom', []);
196 pyroutes.register('journal_public_atom_old', '/_admin/public_journal_atom', []);
172 pyroutes.register('journal_public_rss', '/_admin/public_journal/rss', []);
197 pyroutes.register('journal_public_rss', '/_admin/public_journal/rss', []);
173 pyroutes.register('journal_public_rss_old', '/_admin/public_journal_rss', []);
198 pyroutes.register('journal_public_rss_old', '/_admin/public_journal_rss', []);
174 pyroutes.register('toggle_following', '/_admin/toggle_following', []);
199 pyroutes.register('journal_rss', '/_admin/journal/rss', []);
175 pyroutes.register('repo_creating', '/%(repo_name)s/repo_creating', ['repo_name']);
200 pyroutes.register('login', '/_admin/login', []);
176 pyroutes.register('repo_creating_check', '/%(repo_name)s/repo_creating_check', ['repo_name']);
201 pyroutes.register('logout', '/_admin/logout', []);
177 pyroutes.register('repo_summary_explicit', '/%(repo_name)s/summary', ['repo_name']);
202 pyroutes.register('main_page_repo_groups_data', '/_home_repo_groups', []);
178 pyroutes.register('repo_summary_commits', '/%(repo_name)s/summary-commits', ['repo_name']);
203 pyroutes.register('main_page_repos_data', '/_home_repos', []);
179 pyroutes.register('repo_commit', '/%(repo_name)s/changeset/%(commit_id)s', ['repo_name', 'commit_id']);
204 pyroutes.register('markup_preview', '/_markup_preview', []);
180 pyroutes.register('repo_commit_children', '/%(repo_name)s/changeset_children/%(commit_id)s', ['repo_name', 'commit_id']);
205 pyroutes.register('my_account_auth_tokens', '/_admin/my_account/auth_tokens', []);
181 pyroutes.register('repo_commit_parents', '/%(repo_name)s/changeset_parents/%(commit_id)s', ['repo_name', 'commit_id']);
206 pyroutes.register('my_account_auth_tokens_add', '/_admin/my_account/auth_tokens/new', []);
182 pyroutes.register('repo_commit_raw', '/%(repo_name)s/changeset-diff/%(commit_id)s', ['repo_name', 'commit_id']);
207 pyroutes.register('my_account_auth_tokens_delete', '/_admin/my_account/auth_tokens/delete', []);
183 pyroutes.register('repo_commit_patch', '/%(repo_name)s/changeset-patch/%(commit_id)s', ['repo_name', 'commit_id']);
208 pyroutes.register('my_account_auth_tokens_view', '/_admin/my_account/auth_tokens/view', []);
184 pyroutes.register('repo_commit_download', '/%(repo_name)s/changeset-download/%(commit_id)s', ['repo_name', 'commit_id']);
209 pyroutes.register('my_account_bookmarks', '/_admin/my_account/bookmarks', []);
185 pyroutes.register('repo_commit_data', '/%(repo_name)s/changeset-data/%(commit_id)s', ['repo_name', 'commit_id']);
210 pyroutes.register('my_account_bookmarks_update', '/_admin/my_account/bookmarks/update', []);
186 pyroutes.register('repo_commit_comment_create', '/%(repo_name)s/changeset/%(commit_id)s/comment/create', ['repo_name', 'commit_id']);
211 pyroutes.register('my_account_edit', '/_admin/my_account/edit', []);
187 pyroutes.register('repo_commit_comment_preview', '/%(repo_name)s/changeset/%(commit_id)s/comment/preview', ['repo_name', 'commit_id']);
212 pyroutes.register('my_account_emails', '/_admin/my_account/emails', []);
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']);
213 pyroutes.register('my_account_emails_add', '/_admin/my_account/emails/new', []);
189 pyroutes.register('repo_commit_comment_attachment_upload', '/%(repo_name)s/changeset/%(commit_id)s/comment/attachment_upload', ['repo_name', 'commit_id']);
214 pyroutes.register('my_account_emails_delete', '/_admin/my_account/emails/delete', []);
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']);
215 pyroutes.register('my_account_external_identity', '/_admin/my_account/external-identity', []);
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']);
216 pyroutes.register('my_account_external_identity_delete', '/_admin/my_account/external-identity/delete', []);
192 pyroutes.register('repo_commit_raw_deprecated', '/%(repo_name)s/raw-changeset/%(commit_id)s', ['repo_name', 'commit_id']);
217 pyroutes.register('my_account_goto_bookmark', '/_admin/my_account/bookmark/%(bookmark_id)s', ['bookmark_id']);
193 pyroutes.register('repo_archivefile', '/%(repo_name)s/archive/%(fname)s', ['repo_name', 'fname']);
218 pyroutes.register('my_account_notifications', '/_admin/my_account/notifications', []);
194 pyroutes.register('repo_files_diff', '/%(repo_name)s/diff/%(f_path)s', ['repo_name', 'f_path']);
219 pyroutes.register('my_account_notifications_test_channelstream', '/_admin/my_account/test_channelstream', []);
195 pyroutes.register('repo_files_diff_2way_redirect', '/%(repo_name)s/diff-2way/%(f_path)s', ['repo_name', 'f_path']);
220 pyroutes.register('my_account_notifications_toggle_visibility', '/_admin/my_account/toggle_visibility', []);
196 pyroutes.register('repo_files', '/%(repo_name)s/files/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
221 pyroutes.register('my_account_password', '/_admin/my_account/password', []);
197 pyroutes.register('repo_files:default_path', '/%(repo_name)s/files/%(commit_id)s/', ['repo_name', 'commit_id']);
222 pyroutes.register('my_account_password_update', '/_admin/my_account/password/update', []);
198 pyroutes.register('repo_files:default_commit', '/%(repo_name)s/files', ['repo_name']);
223 pyroutes.register('my_account_perms', '/_admin/my_account/perms', []);
199 pyroutes.register('repo_files:rendered', '/%(repo_name)s/render/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
224 pyroutes.register('my_account_profile', '/_admin/my_account/profile', []);
200 pyroutes.register('repo_files:annotated', '/%(repo_name)s/annotate/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
225 pyroutes.register('my_account_pullrequests', '/_admin/my_account/pull_requests', []);
201 pyroutes.register('repo_files:annotated_previous', '/%(repo_name)s/annotate-previous/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
226 pyroutes.register('my_account_pullrequests_data', '/_admin/my_account/pull_requests/data', []);
202 pyroutes.register('repo_nodetree_full', '/%(repo_name)s/nodetree_full/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
227 pyroutes.register('my_account_repos', '/_admin/my_account/repos', []);
203 pyroutes.register('repo_nodetree_full:default_path', '/%(repo_name)s/nodetree_full/%(commit_id)s/', ['repo_name', 'commit_id']);
228 pyroutes.register('my_account_ssh_keys', '/_admin/my_account/ssh_keys', []);
204 pyroutes.register('repo_files_nodelist', '/%(repo_name)s/nodelist/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
229 pyroutes.register('my_account_ssh_keys_add', '/_admin/my_account/ssh_keys/new', []);
205 pyroutes.register('repo_file_raw', '/%(repo_name)s/raw/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
230 pyroutes.register('my_account_ssh_keys_delete', '/_admin/my_account/ssh_keys/delete', []);
206 pyroutes.register('repo_file_download', '/%(repo_name)s/download/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
231 pyroutes.register('my_account_ssh_keys_generate', '/_admin/my_account/ssh_keys/generate', []);
207 pyroutes.register('repo_file_download:legacy', '/%(repo_name)s/rawfile/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
232 pyroutes.register('my_account_update', '/_admin/my_account/update', []);
208 pyroutes.register('repo_file_history', '/%(repo_name)s/history/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
233 pyroutes.register('my_account_user_group_membership', '/_admin/my_account/user_group_membership', []);
209 pyroutes.register('repo_file_authors', '/%(repo_name)s/authors/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
234 pyroutes.register('my_account_watched', '/_admin/my_account/watched', []);
210 pyroutes.register('repo_files_check_head', '/%(repo_name)s/check_head/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
235 pyroutes.register('notifications_delete', '/_admin/notifications/%(notification_id)s/delete', ['notification_id']);
211 pyroutes.register('repo_files_remove_file', '/%(repo_name)s/remove_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
236 pyroutes.register('notifications_mark_all_read', '/_admin/notifications_mark_all_read', []);
212 pyroutes.register('repo_files_delete_file', '/%(repo_name)s/delete_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
237 pyroutes.register('notifications_show', '/_admin/notifications/%(notification_id)s', ['notification_id']);
213 pyroutes.register('repo_files_edit_file', '/%(repo_name)s/edit_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
238 pyroutes.register('notifications_show_all', '/_admin/notifications', []);
214 pyroutes.register('repo_files_update_file', '/%(repo_name)s/update_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
239 pyroutes.register('notifications_update', '/_admin/notifications/%(notification_id)s/update', ['notification_id']);
215 pyroutes.register('repo_files_add_file', '/%(repo_name)s/add_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
240 pyroutes.register('ops_error_test', '/_admin/ops/error', []);
216 pyroutes.register('repo_files_upload_file', '/%(repo_name)s/upload_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
241 pyroutes.register('ops_ping', '/_admin/ops/ping', []);
217 pyroutes.register('repo_files_create_file', '/%(repo_name)s/create_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
242 pyroutes.register('ops_redirect_test', '/_admin/ops/redirect', []);
218 pyroutes.register('repo_refs_data', '/%(repo_name)s/refs-data', ['repo_name']);
243 pyroutes.register('plugin_admin_chat', '/_admin/plugin_admin_chat/%(action)s', ['action']);
219 pyroutes.register('repo_refs_changelog_data', '/%(repo_name)s/refs-data-changelog', ['repo_name']);
244 pyroutes.register('pull_requests_global', '/_admin/pull-request/%(pull_request_id)s', ['pull_request_id']);
220 pyroutes.register('repo_stats', '/%(repo_name)s/repo_stats/%(commit_id)s', ['repo_name', 'commit_id']);
245 pyroutes.register('pull_requests_global_0', '/_admin/pull_requests/%(pull_request_id)s', ['pull_request_id']);
221 pyroutes.register('repo_commits', '/%(repo_name)s/commits', ['repo_name']);
246 pyroutes.register('pull_requests_global_1', '/_admin/pull-requests/%(pull_request_id)s', ['pull_request_id']);
222 pyroutes.register('repo_commits_file', '/%(repo_name)s/commits/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
247 pyroutes.register('pullrequest_comment_create', '/%(repo_name)s/pull-request/%(pull_request_id)s/comment', ['repo_name', 'pull_request_id']);
223 pyroutes.register('repo_commits_elements', '/%(repo_name)s/commits_elements', ['repo_name']);
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']);
224 pyroutes.register('repo_commits_elements_file', '/%(repo_name)s/commits_elements/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
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']);
225 pyroutes.register('repo_changelog', '/%(repo_name)s/changelog', ['repo_name']);
250 pyroutes.register('pullrequest_comments', '/%(repo_name)s/pull-request/%(pull_request_id)s/comments', ['repo_name', 'pull_request_id']);
226 pyroutes.register('repo_changelog_file', '/%(repo_name)s/changelog/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
251 pyroutes.register('pullrequest_create', '/%(repo_name)s/pull-request/create', ['repo_name']);
227 pyroutes.register('repo_compare_select', '/%(repo_name)s/compare', ['repo_name']);
252 pyroutes.register('pullrequest_delete', '/%(repo_name)s/pull-request/%(pull_request_id)s/delete', ['repo_name', 'pull_request_id']);
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']);
253 pyroutes.register('pullrequest_draft_comments_submit', '/%(repo_name)s/pull-request/%(pull_request_id)s/draft_comments_submit', ['repo_name', 'pull_request_id']);
229 pyroutes.register('tags_home', '/%(repo_name)s/tags', ['repo_name']);
254 pyroutes.register('pullrequest_drafts', '/%(repo_name)s/pull-request/%(pull_request_id)s/drafts', ['repo_name', 'pull_request_id']);
230 pyroutes.register('branches_home', '/%(repo_name)s/branches', ['repo_name']);
255 pyroutes.register('pullrequest_merge', '/%(repo_name)s/pull-request/%(pull_request_id)s/merge', ['repo_name', 'pull_request_id']);
231 pyroutes.register('bookmarks_home', '/%(repo_name)s/bookmarks', ['repo_name']);
256 pyroutes.register('pullrequest_new', '/%(repo_name)s/pull-request/new', ['repo_name']);
232 pyroutes.register('repo_fork_new', '/%(repo_name)s/fork', ['repo_name']);
257 pyroutes.register('pullrequest_repo_refs', '/%(repo_name)s/pull-request/refs/%(target_repo_name)s', ['repo_name', 'target_repo_name']);
233 pyroutes.register('repo_fork_create', '/%(repo_name)s/fork/create', ['repo_name']);
258 pyroutes.register('pullrequest_repo_targets', '/%(repo_name)s/pull-request/repo-targets', ['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']);
236 pyroutes.register('pullrequest_show', '/%(repo_name)s/pull-request/%(pull_request_id)s', ['repo_name', 'pull_request_id']);
259 pyroutes.register('pullrequest_show', '/%(repo_name)s/pull-request/%(pull_request_id)s', ['repo_name', 'pull_request_id']);
237 pyroutes.register('pullrequest_show_all', '/%(repo_name)s/pull-request', ['repo_name']);
260 pyroutes.register('pullrequest_show_all', '/%(repo_name)s/pull-request', ['repo_name']);
238 pyroutes.register('pullrequest_show_all_data', '/%(repo_name)s/pull-request-data', ['repo_name']);
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']);
262 pyroutes.register('pullrequest_todos', '/%(repo_name)s/pull-request/%(pull_request_id)s/todos', ['repo_name', 'pull_request_id']);
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']);
243 pyroutes.register('pullrequest_update', '/%(repo_name)s/pull-request/%(pull_request_id)s/update', ['repo_name', 'pull_request_id']);
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']);
264 pyroutes.register('register', '/_admin/register', []);
245 pyroutes.register('pullrequest_delete', '/%(repo_name)s/pull-request/%(pull_request_id)s/delete', ['repo_name', 'pull_request_id']);
265 pyroutes.register('repo_archivefile', '/%(repo_name)s/archive/%(fname)s', ['repo_name', 'fname']);
246 pyroutes.register('pullrequest_comment_create', '/%(repo_name)s/pull-request/%(pull_request_id)s/comment', ['repo_name', 'pull_request_id']);
266 pyroutes.register('repo_artifacts_data', '/%(repo_name)s/artifacts_data', ['repo_name']);
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']);
267 pyroutes.register('repo_artifacts_delete', '/%(repo_name)s/artifacts/delete/%(uid)s', ['repo_name', 'uid']);
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']);
268 pyroutes.register('repo_artifacts_get', '/%(repo_name)s/artifacts/download/%(uid)s', ['repo_name', 'uid']);
249 pyroutes.register('pullrequest_comments', '/%(repo_name)s/pull-request/%(pull_request_id)s/comments', ['repo_name', 'pull_request_id']);
269 pyroutes.register('repo_artifacts_info', '/%(repo_name)s/artifacts/info/%(uid)s', ['repo_name', 'uid']);
250 pyroutes.register('pullrequest_todos', '/%(repo_name)s/pull-request/%(pull_request_id)s/todos', ['repo_name', 'pull_request_id']);
270 pyroutes.register('repo_artifacts_list', '/%(repo_name)s/artifacts', ['repo_name']);
251 pyroutes.register('pullrequest_drafts', '/%(repo_name)s/pull-request/%(pull_request_id)s/drafts', ['repo_name', 'pull_request_id']);
271 pyroutes.register('repo_artifacts_new', '/%(repo_name)s/artifacts/new', ['repo_name']);
252 pyroutes.register('edit_repo', '/%(repo_name)s/settings', ['repo_name']);
272 pyroutes.register('repo_artifacts_store', '/%(repo_name)s/artifacts/store', ['repo_name']);
253 pyroutes.register('edit_repo_advanced', '/%(repo_name)s/settings/advanced', ['repo_name']);
273 pyroutes.register('repo_artifacts_stream_script', '/_file_store/stream-upload-script', []);
254 pyroutes.register('edit_repo_advanced_archive', '/%(repo_name)s/settings/advanced/archive', ['repo_name']);
274 pyroutes.register('repo_artifacts_stream_store', '/_file_store/stream-upload', []);
255 pyroutes.register('edit_repo_advanced_delete', '/%(repo_name)s/settings/advanced/delete', ['repo_name']);
275 pyroutes.register('repo_artifacts_update', '/%(repo_name)s/artifacts/update/%(uid)s', ['repo_name', 'uid']);
256 pyroutes.register('edit_repo_advanced_locking', '/%(repo_name)s/settings/advanced/locking', ['repo_name']);
276 pyroutes.register('repo_automation', '/%(repo_name)s/settings/automation', ['repo_name']);
257 pyroutes.register('edit_repo_advanced_journal', '/%(repo_name)s/settings/advanced/journal', ['repo_name']);
277 pyroutes.register('repo_automation_update', '/%(repo_name)s/settings/automation/%(entry_id)s/update', ['repo_name', 'entry_id']);
258 pyroutes.register('edit_repo_advanced_fork', '/%(repo_name)s/settings/advanced/fork', ['repo_name']);
278 pyroutes.register('repo_changelog', '/%(repo_name)s/changelog', ['repo_name']);
259 pyroutes.register('edit_repo_advanced_hooks', '/%(repo_name)s/settings/advanced/hooks', ['repo_name']);
279 pyroutes.register('repo_changelog_file', '/%(repo_name)s/changelog/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
260 pyroutes.register('edit_repo_caches', '/%(repo_name)s/settings/caches', ['repo_name']);
280 pyroutes.register('repo_commit', '/%(repo_name)s/changeset/%(commit_id)s', ['repo_name', 'commit_id']);
261 pyroutes.register('edit_repo_perms', '/%(repo_name)s/settings/permissions', ['repo_name']);
281 pyroutes.register('repo_commit_children', '/%(repo_name)s/changeset_children/%(commit_id)s', ['repo_name', 'commit_id']);
262 pyroutes.register('edit_repo_perms_set_private', '/%(repo_name)s/settings/permissions/set_private', ['repo_name']);
282 pyroutes.register('repo_commit_comment_attachment_upload', '/%(repo_name)s/changeset/%(commit_id)s/comment/attachment_upload', ['repo_name', 'commit_id']);
263 pyroutes.register('edit_repo_maintenance', '/%(repo_name)s/settings/maintenance', ['repo_name']);
283 pyroutes.register('repo_commit_comment_create', '/%(repo_name)s/changeset/%(commit_id)s/comment/create', ['repo_name', 'commit_id']);
264 pyroutes.register('edit_repo_maintenance_execute', '/%(repo_name)s/settings/maintenance/execute', ['repo_name']);
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']);
265 pyroutes.register('edit_repo_fields', '/%(repo_name)s/settings/fields', ['repo_name']);
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']);
266 pyroutes.register('edit_repo_fields_create', '/%(repo_name)s/settings/fields/create', ['repo_name']);
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']);
267 pyroutes.register('edit_repo_fields_delete', '/%(repo_name)s/settings/fields/%(field_id)s/delete', ['repo_name', 'field_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 pyroutes.register('repo_edit_toggle_locking', '/%(repo_name)s/settings/toggle_locking', ['repo_name']);
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']);
305 pyroutes.register('repo_file_authors', '/%(repo_name)s/authors/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
270 pyroutes.register('edit_repo_remote_pull', '/%(repo_name)s/settings/remote/pull', ['repo_name']);
306 pyroutes.register('repo_file_download', '/%(repo_name)s/download/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
271 pyroutes.register('edit_repo_statistics', '/%(repo_name)s/settings/statistics', ['repo_name']);
307 pyroutes.register('repo_file_download:legacy', '/%(repo_name)s/rawfile/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
272 pyroutes.register('edit_repo_statistics_reset', '/%(repo_name)s/settings/statistics/update', ['repo_name']);
308 pyroutes.register('repo_file_history', '/%(repo_name)s/history/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
273 pyroutes.register('edit_repo_issuetracker', '/%(repo_name)s/settings/issue_trackers', ['repo_name']);
309 pyroutes.register('repo_file_raw', '/%(repo_name)s/raw/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
274 pyroutes.register('edit_repo_issuetracker_test', '/%(repo_name)s/settings/issue_trackers/test', ['repo_name']);
310 pyroutes.register('repo_files', '/%(repo_name)s/files/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
275 pyroutes.register('edit_repo_issuetracker_delete', '/%(repo_name)s/settings/issue_trackers/delete', ['repo_name']);
311 pyroutes.register('repo_files:annotated', '/%(repo_name)s/annotate/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
276 pyroutes.register('edit_repo_issuetracker_update', '/%(repo_name)s/settings/issue_trackers/update', ['repo_name']);
312 pyroutes.register('repo_files:annotated_previous', '/%(repo_name)s/annotate-previous/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
277 pyroutes.register('edit_repo_vcs', '/%(repo_name)s/settings/vcs', ['repo_name']);
313 pyroutes.register('repo_files:default_commit', '/%(repo_name)s/files', ['repo_name']);
278 pyroutes.register('edit_repo_vcs_update', '/%(repo_name)s/settings/vcs/update', ['repo_name']);
314 pyroutes.register('repo_files:default_path', '/%(repo_name)s/files/%(commit_id)s/', ['repo_name', 'commit_id']);
279 pyroutes.register('edit_repo_vcs_svn_pattern_delete', '/%(repo_name)s/settings/vcs/svn_pattern/delete', ['repo_name']);
315 pyroutes.register('repo_files:rendered', '/%(repo_name)s/render/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
280 pyroutes.register('repo_reviewers', '/%(repo_name)s/settings/review/rules', ['repo_name']);
316 pyroutes.register('repo_files_add_file', '/%(repo_name)s/add_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
281 pyroutes.register('repo_default_reviewers_data', '/%(repo_name)s/settings/review/default-reviewers', ['repo_name']);
317 pyroutes.register('repo_files_check_head', '/%(repo_name)s/check_head/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
282 pyroutes.register('edit_repo_strip', '/%(repo_name)s/settings/strip', ['repo_name']);
318 pyroutes.register('repo_files_create_file', '/%(repo_name)s/create_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
283 pyroutes.register('strip_check', '/%(repo_name)s/settings/strip_check', ['repo_name']);
319 pyroutes.register('repo_files_delete_file', '/%(repo_name)s/delete_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
284 pyroutes.register('strip_execute', '/%(repo_name)s/settings/strip_execute', ['repo_name']);
320 pyroutes.register('repo_files_diff', '/%(repo_name)s/diff/%(f_path)s', ['repo_name', 'f_path']);
285 pyroutes.register('edit_repo_audit_logs', '/%(repo_name)s/settings/audit_logs', ['repo_name']);
321 pyroutes.register('repo_files_diff_2way_redirect', '/%(repo_name)s/diff-2way/%(f_path)s', ['repo_name', 'f_path']);
286 pyroutes.register('rss_feed_home', '/%(repo_name)s/feed-rss', ['repo_name']);
322 pyroutes.register('repo_files_edit_file', '/%(repo_name)s/edit_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
287 pyroutes.register('atom_feed_home', '/%(repo_name)s/feed-atom', ['repo_name']);
323 pyroutes.register('repo_files_nodelist', '/%(repo_name)s/nodelist/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
288 pyroutes.register('rss_feed_home_old', '/%(repo_name)s/feed/rss', ['repo_name']);
324 pyroutes.register('repo_files_remove_file', '/%(repo_name)s/remove_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
289 pyroutes.register('atom_feed_home_old', '/%(repo_name)s/feed/atom', ['repo_name']);
325 pyroutes.register('repo_files_update_file', '/%(repo_name)s/update_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
290 pyroutes.register('repo_summary', '/%(repo_name)s', ['repo_name']);
326 pyroutes.register('repo_files_upload_file', '/%(repo_name)s/upload_file/%(commit_id)s/%(f_path)s', ['repo_name', 'commit_id', 'f_path']);
291 pyroutes.register('repo_summary_slash', '/%(repo_name)s/', ['repo_name']);
327 pyroutes.register('repo_fork_create', '/%(repo_name)s/fork/create', ['repo_name']);
292 pyroutes.register('edit_repo_group', '/%(repo_group_name)s/_edit', ['repo_group_name']);
328 pyroutes.register('repo_fork_new', '/%(repo_name)s/fork', ['repo_name']);
293 pyroutes.register('edit_repo_group_advanced', '/%(repo_group_name)s/_settings/advanced', ['repo_group_name']);
329 pyroutes.register('repo_forks_data', '/%(repo_name)s/forks/data', ['repo_name']);
294 pyroutes.register('edit_repo_group_advanced_delete', '/%(repo_group_name)s/_settings/advanced/delete', ['repo_group_name']);
330 pyroutes.register('repo_forks_show_all', '/%(repo_name)s/forks', ['repo_name']);
295 pyroutes.register('edit_repo_group_perms', '/%(repo_group_name)s/_settings/permissions', ['repo_group_name']);
331 pyroutes.register('repo_group_create', '/_admin/repo_group/create', []);
296 pyroutes.register('edit_repo_group_perms_update', '/%(repo_group_name)s/_settings/permissions/update', ['repo_group_name']);
297 pyroutes.register('repo_group_home', '/%(repo_group_name)s', ['repo_group_name']);
332 pyroutes.register('repo_group_home', '/%(repo_group_name)s', ['repo_group_name']);
298 pyroutes.register('repo_group_home_slash', '/%(repo_group_name)s/', ['repo_group_name']);
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']);
334 pyroutes.register('repo_group_integrations_create', '/%(repo_group_name)s/_settings/integrations/%(integration)s/new', ['repo_group_name', 'integration']);
300 pyroutes.register('edit_user_group_perms_summary', '/_admin/user_groups/%(user_group_id)s/edit/permissions_summary', ['user_group_id']);
335 pyroutes.register('repo_group_integrations_edit', '/%(repo_group_name)s/_settings/integrations/%(integration)s/%(integration_id)s', ['repo_group_name', 'integration', 'integration_id']);
301 pyroutes.register('edit_user_group_perms_summary_json', '/_admin/user_groups/%(user_group_id)s/edit/permissions_summary/json', ['user_group_id']);
336 pyroutes.register('repo_group_integrations_home', '/%(repo_group_name)s/_settings/integrations', ['repo_group_name']);
302 pyroutes.register('edit_user_group', '/_admin/user_groups/%(user_group_id)s/edit', ['user_group_id']);
337 pyroutes.register('repo_group_integrations_list', '/%(repo_group_name)s/_settings/integrations/%(integration)s', ['repo_group_name', 'integration']);
303 pyroutes.register('user_groups_update', '/_admin/user_groups/%(user_group_id)s/update', ['user_group_id']);
338 pyroutes.register('repo_group_integrations_new', '/%(repo_group_name)s/_settings/integrations/new', ['repo_group_name']);
304 pyroutes.register('edit_user_group_global_perms', '/_admin/user_groups/%(user_group_id)s/edit/global_permissions', ['user_group_id']);
339 pyroutes.register('repo_group_list_data', '/_repo_groups', []);
305 pyroutes.register('edit_user_group_global_perms_update', '/_admin/user_groups/%(user_group_id)s/edit/global_permissions/update', ['user_group_id']);
340 pyroutes.register('repo_group_new', '/_admin/repo_group/new', []);
306 pyroutes.register('edit_user_group_perms', '/_admin/user_groups/%(user_group_id)s/edit/permissions', ['user_group_id']);
341 pyroutes.register('repo_groups', '/_admin/repo_groups', []);
307 pyroutes.register('edit_user_group_perms_update', '/_admin/user_groups/%(user_group_id)s/edit/permissions/update', ['user_group_id']);
342 pyroutes.register('repo_groups_data', '/_admin/repo_groups_data', []);
308 pyroutes.register('edit_user_group_advanced', '/_admin/user_groups/%(user_group_id)s/edit/advanced', ['user_group_id']);
343 pyroutes.register('repo_integrations_create', '/%(repo_name)s/settings/integrations/%(integration)s/new', ['repo_name', 'integration']);
309 pyroutes.register('edit_user_group_advanced_sync', '/_admin/user_groups/%(user_group_id)s/edit/advanced/sync', ['user_group_id']);
344 pyroutes.register('repo_integrations_edit', '/%(repo_name)s/settings/integrations/%(integration)s/%(integration_id)s', ['repo_name', 'integration', 'integration_id']);
310 pyroutes.register('user_groups_delete', '/_admin/user_groups/%(user_group_id)s/delete', ['user_group_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 pyroutes.register('search', '/_admin/search', []);
370 pyroutes.register('search', '/_admin/search', []);
312 pyroutes.register('search_repo', '/%(repo_name)s/_search', ['repo_name']);
371 pyroutes.register('search_repo', '/%(repo_name)s/_search', ['repo_name']);
313 pyroutes.register('search_repo_alt', '/%(repo_name)s/search', ['repo_name']);
372 pyroutes.register('search_repo_alt', '/%(repo_name)s/search', ['repo_name']);
314 pyroutes.register('search_repo_group', '/%(repo_group_name)s/_search', ['repo_group_name']);
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 pyroutes.register('user_group_profile', '/_profile_user_group/%(user_group_name)s', ['user_group_name']);
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', []);
392 pyroutes.register('user_groups', '/_admin/user_groups', []);
318 pyroutes.register('my_account_edit', '/_admin/my_account/edit', []);
393 pyroutes.register('user_groups_create', '/_admin/user_groups/create', []);
319 pyroutes.register('my_account_update', '/_admin/my_account/update', []);
394 pyroutes.register('user_groups_data', '/_admin/user_groups_data', []);
320 pyroutes.register('my_account_password', '/_admin/my_account/password', []);
395 pyroutes.register('user_groups_delete', '/_admin/user_groups/%(user_group_id)s/delete', ['user_group_id']);
321 pyroutes.register('my_account_password_update', '/_admin/my_account/password/update', []);
396 pyroutes.register('user_groups_new', '/_admin/user_groups/new', []);
322 pyroutes.register('my_account_auth_tokens_view', '/_admin/my_account/auth_tokens/view', []);
397 pyroutes.register('user_groups_update', '/_admin/user_groups/%(user_group_id)s/update', ['user_group_id']);
323 pyroutes.register('my_account_auth_tokens_delete', '/_admin/my_account/auth_tokens/delete', []);
398 pyroutes.register('user_notice_dismiss', '/_admin/users/%(user_id)s/notice_dismiss', ['user_id']);
324 pyroutes.register('my_account_ssh_keys', '/_admin/my_account/ssh_keys', []);
399 pyroutes.register('user_profile', '/_profiles/%(username)s', ['username']);
325 pyroutes.register('my_account_ssh_keys_generate', '/_admin/my_account/ssh_keys/generate', []);
400 pyroutes.register('user_update', '/_admin/users/%(user_id)s/update', ['user_id']);
326 pyroutes.register('my_account_ssh_keys_add', '/_admin/my_account/ssh_keys/new', []);
401 pyroutes.register('users', '/_admin/users', []);
327 pyroutes.register('my_account_ssh_keys_delete', '/_admin/my_account/ssh_keys/delete', []);
402 pyroutes.register('users_create', '/_admin/users/create', []);
328 pyroutes.register('my_account_user_group_membership', '/_admin/my_account/user_group_membership', []);
403 pyroutes.register('users_data', '/_admin/users_data', []);
329 pyroutes.register('my_account_emails', '/_admin/my_account/emails', []);
404 pyroutes.register('users_new', '/_admin/users/new', []);
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']);
405 }
405 }
@@ -618,7 +618,7 b' function scrollToElement(element, percen'
618 offsetScroll($line, 70);
618 offsetScroll($line, 70);
619 }
619 }
620 if (!$line.hasClass('comment-outdated') && result.remainder === '/ReplyToComment') {
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 return null
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 location.reload(true);
371 location.reload(true);
372 } else {
372 } else {
373 // inject newly created comments, json_data is {<comment_id>: {}}
373 // inject newly created comments, json_data is {<comment_id>: {}}
374 self.attachGeneralComment(json_data)
374 Rhodecode.comments.attachGeneralComment(json_data)
375
375
376 self.resetCommentFormState();
376 self.resetCommentFormState();
377 timeagoActivate();
377 timeagoActivate();
@@ -1462,10 +1462,11 b' var CommentsController = function() {'
1462
1462
1463 var comment = $('#comment-'+commentId);
1463 var comment = $('#comment-'+commentId);
1464 var commentData = comment.data();
1464 var commentData = comment.data();
1465 console.log(commentData);
1466
1465 if (commentData.commentInline) {
1467 if (commentData.commentInline) {
1466 var f_path = commentData.fPath;
1468 var f_path = commentData.commentFPath;
1467 var line_no = commentData.lineNo;
1469 var line_no = commentData.commentLineNo;
1468 //TODO check this if we need to give f_path/line_no
1469 this.createComment(comment, f_path, line_no, commentId)
1470 this.createComment(comment, f_path, line_no, commentId)
1470 } else {
1471 } else {
1471 this.createGeneralComment('general', "$placeholder", commentId)
1472 this.createGeneralComment('general', "$placeholder", commentId)
@@ -269,8 +269,8 b' window.ReviewersController = function ()'
269 'source_ref': sourceRef[2],
269 'source_ref': sourceRef[2],
270 'target_repo': targetRepo,
270 'target_repo': targetRepo,
271 'target_ref': targetRef[2],
271 'target_ref': targetRef[2],
272 'target_ref_type': sourceRef[0],
272 'target_ref_type': targetRef[0],
273 'target_ref_name': sourceRef[1]
273 'target_ref_name': targetRef[1]
274 });
274 });
275
275
276 self.currentRequest = $.ajax({
276 self.currentRequest = $.ajax({
@@ -397,6 +397,7 b' window.ReviewersController = function ()'
397 'user_group': reviewer_obj.user_group,
397 'user_group': reviewer_obj.user_group,
398 'create': true,
398 'create': true,
399 'rule_show': true,
399 'rule_show': true,
400 'rhodecode_user': templateContext.rhodecode_user
400 })
401 })
401
402
402 if (role === self.ROLE_REVIEWER) {
403 if (role === self.ROLE_REVIEWER) {
@@ -820,7 +821,8 b' window.ReviewersPanel = {'
820 'review_status': member.review_status,
821 'review_status': member.review_status,
821 'review_status_label': member.review_status_label,
822 'review_status_label': member.review_status_label,
822 'user_group': member.user_group,
823 'user_group': member.user_group,
823 'create': false
824 'create': false,
825 'rhodecode_user': templateContext.rhodecode_user
824 });
826 });
825
827
826 $(self.controller.$reviewMembers.selector).append(entry)
828 $(self.controller.$reviewMembers.selector).append(entry)
@@ -915,7 +917,8 b' window.ObserversPanel = {'
915 'review_status': member.review_status,
917 'review_status': member.review_status,
916 'review_status_label': member.review_status_label,
918 'review_status_label': member.review_status_label,
917 'user_group': member.user_group,
919 'user_group': member.user_group,
918 'create': false
920 'create': false,
921 'rhodecode_user': templateContext.rhodecode_user
919 });
922 });
920
923
921 $(self.controller.$observerMembers.selector).append(entry)
924 $(self.controller.$observerMembers.selector).append(entry)
@@ -18,6 +18,8 b''
18 # RhodeCode Enterprise Edition, including its added features, Support services,
18 # RhodeCode Enterprise Edition, including its added features, Support services,
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
19 # and proprietary license terms, please see https://rhodecode.com/licenses/
20 import io
20 import io
21 import shlex
22
21 import math
23 import math
22 import re
24 import re
23 import os
25 import os
@@ -231,7 +233,7 b' def write_usage_data(event):'
231
233
232 # write every 6th hour
234 # write every 6th hour
233 if age_in_min and age_in_min < 60 * 6:
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 age_in_min, 60 * 6)
237 age_in_min, 60 * 6)
236 return
238 return
237
239
@@ -357,10 +359,16 b' class AsyncSubscriber(Subscriber):'
357 class AsyncSubprocessSubscriber(AsyncSubscriber):
359 class AsyncSubprocessSubscriber(AsyncSubscriber):
358 """
360 """
359 Subscriber that uses the subprocess32 module to execute a command if an
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 def __init__(self, cmd, timeout=None):
369 def __init__(self, cmd, timeout=None):
370 if not isinstance(cmd, (list, tuple)):
371 cmd = shlex.split(cmd)
364 super(AsyncSubprocessSubscriber, self).__init__()
372 super(AsyncSubprocessSubscriber, self).__init__()
365 self._cmd = cmd
373 self._cmd = cmd
366 self._timeout = timeout
374 self._timeout = timeout
@@ -384,6 +392,6 b' class AsyncSubprocessSubscriber(AsyncSub'
384 log.exception('Error while executing command.')
392 log.exception('Error while executing command.')
385 if e.output:
393 if e.output:
386 log.error('Command output: %s', e.output)
394 log.error('Command output: %s', e.output)
387 except:
395 except Exception:
388 log.exception(
396 log.exception(
389 'Exception while executing command %s.', cmd)
397 'Exception while executing command %s.', cmd)
@@ -235,13 +235,14 b''
235 %for field in c.repo_fields:
235 %for field in c.repo_fields:
236 <div class="field">
236 <div class="field">
237 <div class="label">
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 </div>
239 </div>
240 <div class="input input-medium">
240 <div class="input input-medium">
241 ${h.text(field.field_key_prefixed, field.field_value, class_='medium')}
241 ${h.text(field.field_key_prefixed, field.field_value, class_='medium')}
242 %if field.field_desc:
242 <span class="help-block">
243 <span class="help-block">${field.field_desc}</span>
243 key: ${field.field_key};
244 %endif
244 ${field.field_desc}
245 </span>
245 </div>
246 </div>
246 </div>
247 </div>
247 %endfor
248 %endfor
@@ -510,9 +510,9 b''
510 % if form_type == 'inline':
510 % if form_type == 'inline':
511 % if c.rhodecode_edition_id == 'EE':
511 % if c.rhodecode_edition_id == 'EE':
512 ## Disable the button for CE, the "real" validation is in the backend code anyway
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 % else:
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 % endif
516 % endif
517 % endif
517 % endif
518
518
@@ -534,9 +534,9 b''
534 % if form_type == 'inline':
534 % if form_type == 'inline':
535 <input type="hidden" name="f_path" value="{0}">
535 <input type="hidden" name="f_path" value="{0}">
536 <input type="hidden" name="line" value="${lineno_id}">
536 <input type="hidden" name="line" value="${lineno_id}">
537 <button type="button" class="cb-comment-cancel" onclick="return Rhodecode.comments.cancelComment(this);">
537 <span style="opacity: 0.7" class="cursor-pointer cb-comment-cancel" onclick="return Rhodecode.comments.cancelComment(this);">
538 <i class="icon-cancel-circled2"></i>
538 ${_('dismiss')}
539 </button>
539 </span>
540 % endif
540 % endif
541 </div>
541 </div>
542
542
@@ -645,12 +645,18 b" return '%s_%s_%i' % (h.md5_safe(commit+f"
645 <div class="reply-thread-container-wrapper${extra_class}" style="${extra_style}">
645 <div class="reply-thread-container-wrapper${extra_class}" style="${extra_style}">
646 <div class="reply-thread-container${extra_class}">
646 <div class="reply-thread-container${extra_class}">
647 <div class="reply-thread-gravatar">
647 <div class="reply-thread-gravatar">
648 % if c.rhodecode_user.username != h.DEFAULT_USER:
648 ${base.gravatar(c.rhodecode_user.email, 20, tooltip=True, user=c.rhodecode_user)}
649 ${base.gravatar(c.rhodecode_user.email, 20, tooltip=True, user=c.rhodecode_user)}
650 % endif
649 </div>
651 </div>
652
650 <div class="reply-thread-reply-button">
653 <div class="reply-thread-reply-button">
654 % if c.rhodecode_user.username != h.DEFAULT_USER:
651 ## initial reply button, some JS logic can append here a FORM to leave a first comment.
655 ## initial reply button, some JS logic can append here a FORM to leave a first comment.
652 <button class="cb-comment-add-button" onclick="return Rhodecode.comments.createComment(this, '${f_path}', '${line_no}', null)">Reply...</button>
656 <button class="cb-comment-add-button" onclick="return Rhodecode.comments.createComment(this, '${f_path}', '${line_no}', null)">Reply...</button>
657 % endif
653 </div>
658 </div>
659 ##% endif
654 <div class="reply-thread-last"></div>
660 <div class="reply-thread-last"></div>
655 </div>
661 </div>
656 </div>
662 </div>
@@ -910,6 +916,16 b' def get_comments_for(diff_type, comments'
910 <div class="sidebar__inner">
916 <div class="sidebar__inner">
911 <div class="sidebar__bar">
917 <div class="sidebar__bar">
912 <div class="pull-right">
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 <div class="btn-group">
929 <div class="btn-group">
914 <a class="btn tooltip toggle-wide-diff" href="#toggle-wide-diff" onclick="toggleWideDiff(this); return false" title="${h.tooltip(_('Toggle wide diff'))}">
930 <a class="btn tooltip toggle-wide-diff" href="#toggle-wide-diff" onclick="toggleWideDiff(this); return false" title="${h.tooltip(_('Toggle wide diff'))}">
915 <i class="icon-wide-mode"></i>
931 <i class="icon-wide-mode"></i>
@@ -948,9 +964,37 b' def get_comments_for(diff_type, comments'
948 </div>
964 </div>
949 <div class="btn-group">
965 <div class="btn-group">
950
966
951 <div class="pull-left">
967 <details class="details-reset details-inline-block">
952 ${h.hidden('diff_menu_{}'.format(diffset_container_id))}
968 <summary class="noselect btn">
953 </div>
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 </div>
999 </div>
956 </div>
1000 </div>
@@ -970,7 +1014,6 b' def get_comments_for(diff_type, comments'
970 </strong>
1014 </strong>
971 </div>
1015 </div>
972 <div class="pull-right noselect">
1016 <div class="pull-right noselect">
973
974 %if commit:
1017 %if commit:
975 <span>
1018 <span>
976 <code>${h.show_id(commit)}</code>
1019 <code>${h.show_id(commit)}</code>
@@ -1264,61 +1307,6 b' def get_comments_for(diff_type, comments'
1264 return null;
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 toggleExpand = function (el, diffsetEl) {
1310 toggleExpand = function (el, diffsetEl) {
1323 var el = $(el);
1311 var el = $(el);
1324 if (el.hasClass('collapsed')) {
1312 if (el.hasClass('collapsed')) {
@@ -65,6 +65,9 b" var data_hovercard_url = pyroutes.url('h"
65
65
66 <tr id="reviewer_<%= member.user_id %>" class="reviewer_entry" tooltip="Review Group" data-reviewer-user-id="<%= member.user_id %>">
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 <td style="width: 20px">
71 <td style="width: 20px">
69 <div class="tooltip presence-state" style="display: none; position: absolute; left: 2px" title="This users is currently at this page">
72 <div class="tooltip presence-state" style="display: none; position: absolute; left: 2px" title="This users is currently at this page">
70 <i class="icon-eye" style="color: #0ac878"></i>
73 <i class="icon-eye" style="color: #0ac878"></i>
@@ -79,6 +82,25 b" var data_hovercard_url = pyroutes.url('h"
79 </div>
82 </div>
80 <% } %>
83 <% } %>
81 </td>
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 <td>
105 <td>
84 <div id="reviewer_<%= member.user_id %>_name" class="reviewer_name">
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 </div>
118 </div>
97 </td>
98
99 <td style="width: 10px">
100 <% if (reviewGroup !== null) { %>
119 <% if (reviewGroup !== null) { %>
101 <span class="tooltip" title="Member of review group from rule: `<%= member.user_group.name %>`" style="color: <%= reviewGroupColor %>">
120 <span class="tooltip" title="Member of review group from rule: `<%= member.user_group.name %>`" style="color: <%= reviewGroupColor %>">
102 <%- reviewGroup %>
121 <%- reviewGroup %>
@@ -104,23 +123,6 b" var data_hovercard_url = pyroutes.url('h"
104 <% } %>
123 <% } %>
105 </td>
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 </tr>
126 </tr>
125
127
126 <tr id="reviewer_<%= member.user_id %>_rules">
128 <tr id="reviewer_<%= member.user_id %>_rules">
@@ -194,9 +196,10 b' if (show_disabled) {'
194 <script id="ejs_sideBarCommentHovercard" type="text/template" class="ejsTemplate">
196 <script id="ejs_sideBarCommentHovercard" type="text/template" class="ejsTemplate">
195
197
196 <div>
198 <div>
199
197 <% if (is_todo) { %>
200 <% if (is_todo) { %>
198 <% if (inline) { %>
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 <% if (version_info) { %>
203 <% if (version_info) { %>
201 <%= version_info %>
204 <%= version_info %>
202 <% } %>
205 <% } %>
@@ -206,14 +209,14 b' if (show_disabled) {'
206 <% if (review_status) { %>
209 <% if (review_status) { %>
207 <i class="icon-circle review-status-<%= review_status %>"></i>
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 <% if (version_info) { %>
213 <% if (version_info) { %>
211 <%= version_info %>
214 <%= version_info %>
212 <% } %>
215 <% } %>
213 <% } %>
216 <% } %>
214 <% } else { %>
217 <% } else { %>
215 <% if (inline) { %>
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 <% if (version_info) { %>
220 <% if (version_info) { %>
218 <%= version_info %>
221 <%= version_info %>
219 <% } %>
222 <% } %>
@@ -223,7 +226,7 b' if (show_disabled) {'
223 <% if (review_status) { %>
226 <% if (review_status) { %>
224 <i class="icon-circle review-status-<%= review_status %>"></i>
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 <% if (version_info) { %>
230 <% if (version_info) { %>
228 <%= version_info %>
231 <%= version_info %>
229 <% } %>
232 <% } %>
@@ -598,26 +598,13 b''
598 ${c.reviewers_count}
598 ${c.reviewers_count}
599 </div>
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 ## REVIEWERS
601 ## REVIEWERS
616 <div class="right-sidebar-expanded-state pr-details-title">
602 <div class="right-sidebar-expanded-state pr-details-title">
617 <span class="tooltip sidebar-heading" title="${vote_title}">
603 <span class="tooltip sidebar-heading" title="${vote_title}">
618 <i class="icon-circle review-status-${c.pull_request_review_status}"></i>
604 <i class="icon-circle review-status-${c.pull_request_review_status}"></i>
619 ${_('Reviewers')}
605 ${_('Reviewers')}
620 </span>
606 </span>
607
621 %if c.allowed_to_update:
608 %if c.allowed_to_update:
622 <span id="open_edit_reviewers" class="block-right action_button last-item">${_('Edit')}</span>
609 <span id="open_edit_reviewers" class="block-right action_button last-item">${_('Edit')}</span>
623 <span id="close_edit_reviewers" class="block-right action_button last-item" style="display: none;">${_('Close')}</span>
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 <div id="reviewers" class="right-sidebar-expanded-state pr-details-content reviewers">
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 ## members redering block
628 ## members redering block
633 <input type="hidden" name="__start__" value="review_members:sequence">
629 <input type="hidden" name="__start__" value="review_members:sequence">
634
630
@@ -649,7 +645,7 b''
649 </div>
645 </div>
650 % endif
646 % endif
651 <div class="pull-right" style="margin-bottom: 15px">
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 </div>
649 </div>
654 %endif
650 %endif
655 </div>
651 </div>
@@ -702,7 +698,7 b''
702 </div>
698 </div>
703 % endif
699 % endif
704 <div class="pull-right" style="margin-bottom: 15px">
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 </div>
702 </div>
707 %endif
703 %endif
708 </div>
704 </div>
@@ -119,3 +119,4 b' def includeme(config):'
119
119
120 # This needs to be the LAST item
120 # This needs to be the LAST item
121 config.add_tween('rhodecode.lib.middleware.request_wrapper.RequestWrapperTween')
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